26 #include <QHBoxLayout>
27 #include <QButtonGroup>
29 #include <QDoubleSpinBox>
32 #include <KPushButton>
33 #include <KSqueezedTextLabel>
37 #include <KFileDialog>
38 #include <KMessageBox>
50 EHBox =
new QHBoxLayout;
52 EHBox->setSpacing(KDialog::spacingHint());
90 if (label ==
"(I18N_EMPTY_MESSAGE)")
98 if (label ==
"(I18N_EMPTY_MESSAGE)")
108 groupB->addButton(push_w);
120 groupB->addButton(check_w);
148 if (label ==
"(I18N_EMPTY_MESSAGE)")
156 if (label ==
"(I18N_EMPTY_MESSAGE)")
164 switch (dataProp->getPermission())
193 label_w->setFrameShape( KSqueezedTextLabel::Box );
195 palette.setColor(label_w->backgroundRole(), QColor( 224, 232, 238 ));
196 label_w->setPalette(palette);
197 label_w->setTextFormat( Qt::RichText );
198 label_w->setAlignment( Qt::AlignCenter );
199 label_w->setWordWrap(
true);
203 QFont tempFont( label_w->font() );
204 tempFont.setPointSize( tempFont.pointSize() -
MED_INDI_FONT );
205 label_w->setFont( tempFont );
208 label_w->setText(label);
210 EHBox->addWidget(label_w);
222 push_w->setDown(
true);
223 buttonFont = push_w->font();
224 buttonFont.setBold(
true);
225 push_w->setFont(buttonFont);
229 push_w->setDown(
false);
230 buttonFont = push_w->font();
231 buttonFont.setBold(
false);
232 push_w->setFont(buttonFont);
238 check_w->setChecked(
true);
240 check_w->setChecked(
false);
263 if (np == NULL || read_w == NULL)
266 numberFormat(iNumber, np->format, np->value);
270 read_w->setText(text);
274 if (np->min != spin_w->minimum())
276 if (np->max != spin_w->maximum())
288 IUSaveText(tp, write_w->text().toLatin1().constData());
298 if (write_w->text().isEmpty())
301 f_scansexa(write_w->text().toLatin1().constData(), &(np->value));
306 np->value = spin_w->value();
315 switch(dataProp->getPermission())
318 read_w->setText(newText);
324 IUSaveText(tp, newText.toLatin1().constData());
325 read_w->setText(newText);
326 write_w->setText(newText);
337 if (label ==
"(I18N_EMPTY_MESSAGE)")
345 if (label ==
"(I18N_EMPTY_MESSAGE)")
350 text = i18n(
"INDI DATA STREAM");
352 switch (dataProp->getPermission())
382 if (label ==
"(I18N_EMPTY_MESSAGE)")
390 if (label ==
"(I18N_EMPTY_MESSAGE)")
393 numberFormat(iNumber, np->format, np->value);
398 if (np->step != 0 && (np->max - np->min)/np->step <= 100)
401 switch (dataProp->getPermission())
436 if (label ==
"(I18N_EMPTY_MESSAGE)")
444 if (label ==
"(I18N_EMPTY_MESSAGE)")
448 led_w->setMaximumSize(16,16);
449 led_w->setLook( KLed::Sunken );
453 EHBox->addWidget(led_w);
469 led_w->setColor(Qt::gray);
473 led_w->setColor(Qt::green);
477 led_w->setColor(Qt::yellow);
481 led_w->setColor(Qt::red);
496 int steps = (int) ((np->max - np->min) / np->step);
498 spin_w->setRange(np->min, np->max);
499 spin_w->setSingleStep(np->step);
500 spin_w->setValue(np->value);
501 spin_w->setDecimals(2);
504 slider_w->setRange(0, steps);
505 slider_w->setPageStep(1);
506 slider_w->setValue((
int) ((np->value - np->min) / np->step));
508 connect(spin_w, SIGNAL(valueChanged(
double)),
this, SLOT(
spinChanged(
double )));
509 connect(slider_w, SIGNAL(sliderMoved(
int)),
this, SLOT(
sliderChanged(
int )));
513 spin_w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
515 spin_w->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
517 spin_w->setMinimumWidth( (
int) (length * 0.45) );
518 slider_w->setMinimumWidth( (
int) (length * 0.55) );
520 EHBox->addWidget(slider_w);
521 EHBox->addWidget(spin_w);
528 int slider_value = (int) ((value - np->min) / np->step);
529 slider_w->setValue(slider_value);
536 double spin_value = (value * np->step) + np->min;
537 spin_w->setValue(spin_value);
547 spin_w->setMinimum(np->min);
548 spin_w->setValue(np->value);
552 slider_w->setMaximum((
int) ((np->max - np->min) / np->step));
553 slider_w->setMinimum(0);
554 slider_w->setPageStep(1);
555 slider_w->setValue( (
int) ((np->value - np->min) / np->step ));
564 spin_w->setMaximum(np->max);
565 spin_w->setValue(np->value);
569 slider_w->setMaximum((
int) ((np->max - np->min) / np->step));
570 slider_w->setMinimum(0);
571 slider_w->setPageStep(1);
572 slider_w->setValue( (
int) ((np->value - np->min) / np->step ));
580 write_w->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred);
581 write_w->setMinimumWidth( length );
582 write_w->setMaximumWidth( length);
584 write_w->setText(text);
587 QObject::connect(write_w, SIGNAL(returnPressed()), guiProp, SLOT(sendText()));
588 EHBox->addWidget(write_w);
598 read_w->setMinimumWidth( length );
599 read_w->setFocusPolicy( Qt::NoFocus );
600 read_w->setCursorPosition( 0 );
601 read_w->setAlignment( Qt::AlignCenter );
602 read_w->setReadOnly(
true );
603 read_w->setText(text);
605 EHBox->addWidget(read_w);
613 browse_w->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
617 EHBox->addWidget(browse_w);
618 QObject::connect(browse_w, SIGNAL(clicked()),
this, SLOT(
browseBlob()));
628 QDataStream binaryStream;
629 int data64_size=0, pos=0;
630 unsigned char *data_file;
633 currentURL = KFileDialog::getOpenUrl( QDir::homePath(),
"*");
636 if (currentURL.isEmpty())
639 if ( currentURL.isValid() )
640 write_w->setText(currentURL.path());
642 fp.setFileName(currentURL.path());
644 if ( (pos = filename.lastIndexOf(
".")) != -1)
645 format = filename.mid (pos, filename.length());
649 if (!fp.open(QIODevice::ReadOnly))
651 KMessageBox::error(0, i18n(
"Cannot open file %1 for reading", filename));
655 binaryStream.setDevice(&fp);
657 data_file =
new unsigned char[fp.size()];
659 bp->bloblen = fp.size();
661 if (data_file == NULL)
663 KMessageBox::error(0, i18n(
"Not enough memory to load %1", filename));
668 binaryStream.readRawData((
char*)data_file, fp.size());
670 bp->blob =
new unsigned char[4*fp.size()/3+4];
671 if (bp->blob == NULL)
673 KMessageBox::error(0, i18n(
"Not enough memory to convert file %1 to base64", filename));
677 data64_size = to64frombits ( ((
unsigned char *) bp->blob), data_file, fp.size());
681 bp->size = data64_size;
692 return write_w->text();
700 return read_w->text();
705 #include "indielement.moc"
#define ELEMENT_FULL_WIDTH
void setupElementWrite(int length)
#define ELEMENT_READ_WIDTH
void setupElementScale(int length)
void addLayout(QHBoxLayout *layout)
INDI_E(INDI_P *gProp, INDI::Property *dProp)
void sliderChanged(int value)
void buildText(IText *itp)
void buildLight(ILight *ilp)
void buildNumber(INumber *inp)
i18nc("string from libindi, used in the config dialog","100x")
void setupElementRead(int length)
void buildMenuItem(ISwitch *sw)
#define ELEMENT_WRITE_WIDTH
void setText(const QString &newText)
#define ELEMENT_LABEL_WIDTH
void addWidget(QWidget *w)
void buildBLOB(IBLOB *ibp)
void spinChanged(double value)
const char * libindi_strings_context
void buildSwitch(QButtonGroup *groupB, ISwitch *sw)