void ItemHandlerGroupbox::Handle (const QDomElement& item, QWidget *pwidget) { QGroupBox *box = new QGroupBox (XSD_->GetLabel (item)); box->setObjectName (item.attribute ("property")); QGridLayout *groupLayout = new QGridLayout (); groupLayout->setContentsMargins (2, 2, 2, 2); box->setLayout (groupLayout); box->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding); box->setCheckable (true); QVariant value = XSD_->GetValue (item); box->setChecked (value.toBool ()); connect (box, SIGNAL (toggled (bool)), this, SLOT (updatePreferences ())); box->setProperty ("ItemHandler", QVariant::fromValue<QObject*> (this)); XSD_->ParseEntity (item, box); QGridLayout *lay = qobject_cast<QGridLayout*> (pwidget->layout ()); lay->addWidget (box, lay->rowCount (), 0, 1, 2); QSpacerItem *verticalSpacer = new QSpacerItem (10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); lay->addItem (verticalSpacer, lay->rowCount (), 0); }
QGroupBox *ServerDialog::create3v3Box() { QGroupBox *box = new QGroupBox(tr("3v3 options")); box->setEnabled(Config.GameMode == "06_3v3"); box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QVBoxLayout *vlayout = new QVBoxLayout; official_3v3_radiobutton = new QRadioButton(tr("Official mode")); QComboBox *officialComboBox = new QComboBox; officialComboBox->addItem(tr("Classical"), "Classical"); officialComboBox->addItem("2012", "2012"); officialComboBox->addItem("2013", "2013"); official_3v3_ComboBox = officialComboBox; QString rule = Config.value("3v3/OfficialRule", "2012").toString(); if (rule == "2012") officialComboBox->setCurrentIndex(1); else if (rule == "2013") officialComboBox->setCurrentIndex(2); QRadioButton *extend = new QRadioButton(tr("Extension mode")); QPushButton *extend_edit_button = new QPushButton(tr("General selection ...")); extend_edit_button->setEnabled(false); connect(extend, SIGNAL(toggled(bool)), extend_edit_button, SLOT(setEnabled(bool))); connect(extend_edit_button, SIGNAL(clicked()), this, SLOT(select3v3Generals())); exclude_disaster_checkbox = new QCheckBox(tr("Exclude disasters")); exclude_disaster_checkbox->setChecked(Config.value("3v3/ExcludeDisasters", true).toBool()); QComboBox *roleChooseComboBox = new QComboBox; roleChooseComboBox->addItem(tr("Normal"), "Normal"); roleChooseComboBox->addItem(tr("Random"), "Random"); roleChooseComboBox->addItem(tr("All roles"), "AllRoles"); role_choose_ComboBox = roleChooseComboBox; QString scheme = Config.value("3v3/RoleChoose", "Normal").toString(); if (scheme == "Random") roleChooseComboBox->setCurrentIndex(1); else if (scheme == "AllRoles") roleChooseComboBox->setCurrentIndex(2); vlayout->addLayout(HLay(official_3v3_radiobutton, official_3v3_ComboBox)); vlayout->addLayout(HLay(extend, extend_edit_button)); vlayout->addWidget(exclude_disaster_checkbox); vlayout->addLayout(HLay(new QLabel(tr("Role choose")), role_choose_ComboBox)); box->setLayout(vlayout); bool using_extension = Config.value("3v3/UsingExtension", false).toBool(); if (using_extension) extend->setChecked(true); else official_3v3_radiobutton->setChecked(true); return box; }
FloatPanel::FloatPanel(const QString& title, QWidget* widget) { QVBoxLayout* layout = new QVBoxLayout; layout->addWidget(widget); QGroupBox* frame = new QGroupBox(title); frame->setLayout(layout); frame->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); setWidget(frame); }
MatrixValuesDialog::MatrixValuesDialog( ScriptingEnv *env, QWidget* parent, Qt::WFlags fl ) : QDialog( parent, fl ), Scripted(env) { setName( "MatrixValuesDialog" ); setWindowTitle( tr( "MantidPlot - Set Matrix Values" ) ); setSizeGripEnabled(true); QGridLayout *gl1 = new QGridLayout(); gl1->addWidget(new QLabel(tr("For row (i)")), 0, 0); startRow = new QSpinBox(); startRow->setRange(1, 1000000); gl1->addWidget(startRow, 0, 1); gl1->addWidget(new QLabel(tr("to")), 0, 2); endRow = new QSpinBox(); endRow->setRange(1, 1000000); gl1->addWidget(endRow, 0, 3); gl1->addWidget(new QLabel(tr("For col (j)")), 1, 0); startCol = new QSpinBox(); startCol->setRange(1, 1000000); gl1->addWidget(startCol, 1, 1); gl1->addWidget(new QLabel(tr("to")), 1, 2); endCol = new QSpinBox(); endCol->setRange(1, 1000000); gl1->addWidget(endCol, 1, 3); QVBoxLayout *vbox1 = new QVBoxLayout(); vbox1->addLayout(gl1); QGroupBox *gb = new QGroupBox(); gb->setLayout(vbox1); gb->setSizePolicy(QSizePolicy (QSizePolicy::Maximum, QSizePolicy::Preferred)); QHBoxLayout *hbox3 = new QHBoxLayout(); commands = new ScriptEditor(this, scriptingEnv()->createCodeLexer()); commands->setFocus(); hbox3->addWidget(commands); QVBoxLayout *vbox2 = new QVBoxLayout(); btnApply = new QPushButton(tr( "&Apply" )); vbox2->addWidget(btnApply); btnCancel = new QPushButton(tr( "&Close" )); vbox2->addWidget(btnCancel); vbox2->addStretch(); QHBoxLayout *hbox2 = new QHBoxLayout(); hbox2->addWidget(gb); hbox2->addLayout(vbox2); QVBoxLayout* vbox3 = new QVBoxLayout(this); vbox3->addLayout(hbox2); vbox3->addWidget(new QLabel(tr( "Cell(i,j)=" ))); vbox3->addLayout(hbox3); connect(btnApply, SIGNAL(clicked()), this, SLOT(apply())); connect(btnCancel, SIGNAL(clicked()), this, SLOT(close())); }
ColumnViewSettingsPage::ColumnViewSettingsPage(QWidget* parent) : ViewSettingsPageBase(parent), m_iconSizeGroupBox(0), m_fontRequester(0), m_textWidthBox(0) { const int spacing = KDialog::spacingHint(); const int margin = KDialog::marginHint(); const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); setSpacing(spacing); setMargin(margin); // Create "Icon" properties m_iconSizeGroupBox = new IconSizeGroupBox(this); m_iconSizeGroupBox->setSizePolicy(sizePolicy); const int min = ZoomLevelInfo::minimumLevel(); const int max = ZoomLevelInfo::maximumLevel(); m_iconSizeGroupBox->setDefaultSizeRange(min, max); m_iconSizeGroupBox->setPreviewSizeRange(min, max); // create "Text" properties QGroupBox* textGroup = new QGroupBox(i18nc("@title:group", "Text"), this); textGroup->setSizePolicy(sizePolicy); QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); m_fontRequester = new DolphinFontRequester(textGroup); QLabel* textWidthLabel = new QLabel(i18nc("@label:listbox", "Text width:"), textGroup); m_textWidthBox = new KComboBox(textGroup); m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Small")); m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Medium")); m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Large")); m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Huge")); QGridLayout* textGroupLayout = new QGridLayout(textGroup); textGroupLayout->addWidget(fontLabel, 0, 0, Qt::AlignRight); textGroupLayout->addWidget(m_fontRequester, 0, 1); textGroupLayout->addWidget(textWidthLabel, 1, 0, Qt::AlignRight); textGroupLayout->addWidget(m_textWidthBox, 1, 1); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); loadSettings(); connect(m_iconSizeGroupBox, SIGNAL(defaultSizeChanged(int)), this, SIGNAL(changed())); connect(m_iconSizeGroupBox, SIGNAL(previewSizeChanged(int)), this, SIGNAL(changed())); connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); connect(m_textWidthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); }
// Create new group box QtWidgetObject* AtenTreeGuiDialog::addGroup(TreeGuiWidget* widget, QString label) { QtWidgetObject* qtwo = widgetObjects_.add(); QGroupBox *group = new QGroupBox(label); QGridLayout *layout = addLayout(group); qtwo->set(widget, group, NULL, layout); group->setEnabled(widget->enabled()); group->setVisible(widget->visible()); group->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); return qtwo; }
QWidget *PlayerCardDialog::createAvatar() { QGroupBox *box = new QGroupBox(ClientInstance->getPlayerName(player->objectName())); box->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); QLabel *avatar = new QLabel(box); avatar->setPixmap(QPixmap(G_ROOM_SKIN.getGeneralPixmap(player->getGeneralName(), QSanRoomSkin::S_GENERAL_ICON_SIZE_LARGE))); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(avatar); box->setLayout(layout); return box; }
void ScrollableTextDisplay1::setupUI(){ ui->allRoutesScrollArea->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); ui->allRoutesscrollAreaWidgetContents->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); QGroupBox *wrapper = new QGroupBox(); wrapper->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); wrapper->setObjectName("wrapperGroupBox"); QVBoxLayout *wrapperVerticalLayout = new QVBoxLayout; wrapperVerticalLayout->setObjectName("wrapperVerticalLayout"); QString widgetName = "displayGLText1RouteWidget_"; QSpacerItem *verticalSpacer = new QSpacerItem(0,50); int totalNumberOfRows = 0; Route tempRoute; SubRoute tempSubRoute; //generate as many GL widgets as there are number of routes for(int i = 0 ; i < allRoutes->getRoutes().size(); i++){ totalNumberOfRows = 0; //calculate size here tempRoute = allRoutes->getRoutes().at(i); for(int j = 0 ; j < tempRoute.getSubRoutes().size(); j++){ tempSubRoute = tempRoute.getSubRoutes().at(j); totalNumberOfRows += tempSubRoute.getLegs().size(); } QSize glWindowSize; glWindowSize.setHeight((totalNumberOfRows + 2)*heightPerRow); // +2 is for the top and bottom margins which will have same height as the rows glWindowSize.setWidth(0); // This is dummy, the actual value is set in the widget itself DisplayGLText1RouteWidget *displayGLText1RouteWidget = new DisplayGLText1RouteWidget((allRoutes->getRoutes().at(i)),glWindowSize, heightPerRow); displayGLText1RouteWidget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed); displayGLText1RouteWidget->setObjectName(widgetName + QString::number(i)); wrapperVerticalLayout->addWidget(displayGLText1RouteWidget); wrapperVerticalLayout->addSpacerItem(verticalSpacer); } wrapper->setLayout(wrapperVerticalLayout); ui->allRoutesScrollArea->setWidget(wrapper); }
StatsQGroupBox *CreateWidgets::getStatsTableCompleteView() { if(CreateWidgets::statTableCompleteView != 0) { delete CreateWidgets::statTableCompleteView; CreateWidgets::statTableCompleteView = 0; } if(CreateWidgets::statTableCompleteView == 0) { CreateWidgets::statTableCompleteView = new StatsQGroupBox; } // create export button QPushButton *exportButton = new QPushButton("Export"); exportButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); // spacer next to the button QSpacerItem *spaceitem = new QSpacerItem(200, 20,QSizePolicy::Expanding, QSizePolicy::Maximum); //create the layout QHBoxLayout *hboxlayout = new QHBoxLayout; hboxlayout->addItem(spaceitem); hboxlayout->addWidget(exportButton); // create the export and spacer item holder groupbox QGroupBox *exportButtonBox = new QGroupBox(); exportButtonBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); exportButtonBox->setStyleSheet("QGroupBox{border:0px solid gray;border:0px;margin: 0ex;}"); exportButtonBox->setLayout(hboxlayout); //create the table QTableView *statTableView = CreateWidgets::getStatsTableView(); statTableView->setStyleSheet("QTableView{border:0px solid gray;border:0px;margin: 0ex;}"); // create the entire layout to hold QVBoxLayout *vboxlayout = new QVBoxLayout; statTableView->setStyleSheet("QGroupBox{border:0px solid gray;border-radius:0px;margin-top: 0ex;}"); vboxlayout->addWidget(statTableView); vboxlayout->addWidget(exportButtonBox); CreateWidgets::statTableCompleteView = new StatsQGroupBox; CreateWidgets::statTableCompleteView->statsTableView =statTableView; CreateWidgets::statTableCompleteView->setLayout(vboxlayout); CreateWidgets::statTableCompleteView->setStyleSheet("QGroupBox{border:0px solid gray;border-radius:0px;margin-top: 0ex;}"); connect(exportButton, SIGNAL(clicked()), CreateWidgets::statTableCompleteView, SLOT(exportTable())); return CreateWidgets::statTableCompleteView; }
NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) : SettingsPageBase(parent), m_openArchivesAsFolder(0), m_autoExpandFolders(0) { const int spacing = KDialog::spacingHint(); QVBoxLayout* topLayout = new QVBoxLayout(this); KVBox* vBox = new KVBox(this); vBox->setSpacing(spacing); // create 'Mouse' group QGroupBox* mouseBox = new QGroupBox(i18nc("@title:group", "Mouse"), vBox); mouseBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); m_singleClick = new QRadioButton(i18nc("@option:check Mouse Settings", "Single-click to open files and folders"), mouseBox); m_doubleClick = new QRadioButton(i18nc("@option:check Mouse Settings", "Double-click to open files and folders"), mouseBox); QVBoxLayout* mouseBoxLayout = new QVBoxLayout(mouseBox); mouseBoxLayout->addWidget(m_singleClick); mouseBoxLayout->addWidget(m_doubleClick); m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"), vBox); m_autoExpandFolders = new QCheckBox(i18nc("option:check", "Open folders during drag operations"), vBox); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(vBox); topLayout->addWidget(vBox); loadSettings(); connect(m_singleClick, SIGNAL(toggled(bool)), this, SIGNAL(changed())); connect(m_doubleClick, SIGNAL(toggled(bool)), this, SIGNAL(changed())); connect(m_openArchivesAsFolder, SIGNAL(toggled(bool)), this, SIGNAL(changed())); connect(m_autoExpandFolders, SIGNAL(toggled(bool)), this, SIGNAL(changed())); }
QGroupBox *ServerDialog::createXModeBox() { QGroupBox *box = new QGroupBox(tr("XMode options")); box->setEnabled(Config.GameMode == "06_XMode"); box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QComboBox *roleChooseComboBox = new QComboBox; roleChooseComboBox->addItem(tr("Normal"), "Normal"); roleChooseComboBox->addItem(tr("Random"), "Random"); roleChooseComboBox->addItem(tr("All roles"), "AllRoles"); role_choose_xmode_ComboBox = roleChooseComboBox; QString scheme = Config.value("XMode/RoleChooseX", "Normal").toString(); if (scheme == "Random") roleChooseComboBox->setCurrentIndex(1); else if (scheme == "AllRoles") roleChooseComboBox->setCurrentIndex(2); box->setLayout(HLay(new QLabel(tr("Role choose")), role_choose_xmode_ComboBox)); return box; }
QGroupBox *ServerDialog::create1v1Box() { QGroupBox *box = new QGroupBox(tr("1v1 options")); box->setEnabled(Config.GameMode == "02_1v1"); box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QVBoxLayout *vlayout = new QVBoxLayout; QComboBox *officialComboBox = new QComboBox; officialComboBox->addItem(tr("Classical"), "Classical"); officialComboBox->addItem("2013", "2013"); officialComboBox->addItem("OL", "OL"); official_1v1_ComboBox = officialComboBox; QString rule = Config.value("1v1/Rule", "Classical").toString(); if (rule == "2013") officialComboBox->setCurrentIndex(1); else if (rule == "OL") officialComboBox->setCurrentIndex(2); kof_using_extension_checkbox = new QCheckBox(tr("General extensions")); kof_using_extension_checkbox->setChecked(Config.value("1v1/UsingExtension", false).toBool()); kof_card_extension_checkbox = new QCheckBox(tr("Card extensions")); kof_card_extension_checkbox->setChecked(Config.value("1v1/UsingCardExtension", false).toBool()); vlayout->addLayout(HLay(new QLabel(tr("Rule option")), official_1v1_ComboBox)); QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(new QLabel(tr("Extension setting"))); hlayout->addStretch(); hlayout->addWidget(kof_using_extension_checkbox); hlayout->addWidget(kof_card_extension_checkbox); vlayout->addLayout(hlayout); box->setLayout(vlayout); return box; }
GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) : SettingsPageBase(parent), m_homeURL(0), m_startSplit(0), m_startEditable(0) { QVBoxLayout* topLayout = new QVBoxLayout(parent, 2, KDialog::spacingHint()); const int spacing = KDialog::spacingHint(); const int margin = KDialog::marginHint(); const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); DolphinSettings& settings = DolphinSettings::instance(); QVBox* vBox = new QVBox(parent); vBox->setSizePolicy(sizePolicy); vBox->setSpacing(spacing); vBox->setMargin(margin); vBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored); // create 'Home URL' editor QGroupBox* homeGroup = new QGroupBox(1, Qt::Horizontal, i18n("Home URL"), vBox); homeGroup->setSizePolicy(sizePolicy); homeGroup->setMargin(margin); QHBox* homeURLBox = new QHBox(homeGroup); homeURLBox->setSizePolicy(sizePolicy); homeURLBox->setSpacing(spacing); new QLabel(i18n("Location:"), homeURLBox); m_homeURL = new QLineEdit(settings.homeURL().prettyURL(), homeURLBox); QPushButton* selectHomeURLButton = new QPushButton(SmallIcon("folder"), QString::null, homeURLBox); connect(selectHomeURLButton, SIGNAL(clicked()), this, SLOT(selectHomeURL())); QHBox* buttonBox = new QHBox(homeGroup); buttonBox->setSizePolicy(sizePolicy); buttonBox->setSpacing(spacing); QPushButton* useCurrentButton = new QPushButton(i18n("Use current location"), buttonBox); connect(useCurrentButton, SIGNAL(clicked()), this, SLOT(useCurrentLocation())); QPushButton* useDefaultButton = new QPushButton(i18n("Use default location"), buttonBox); connect(useDefaultButton, SIGNAL(clicked()), this, SLOT(useDefaulLocation())); // create 'Default View Mode' group QButtonGroup* buttonGroup = new QButtonGroup(3, Qt::Vertical, i18n("Default View Mode"), vBox); buttonGroup->setSizePolicy(sizePolicy); buttonGroup->setMargin(margin); m_iconsView = new QRadioButton(i18n("Icons"), buttonGroup); m_detailsView = new QRadioButton(i18n("Details"), buttonGroup); m_previewsView = new QRadioButton(i18n("Previews"), buttonGroup); switch (settings.defaultViewMode()) { case DolphinView::IconsView: m_iconsView->setChecked(true); break; case DolphinView::DetailsView: m_detailsView->setChecked(true); break; case DolphinView::PreviewsView: m_previewsView->setChecked(true); break; } // create 'Start with split view' checkbox m_startSplit = new QCheckBox(i18n("Start with split view"), vBox); m_startSplit->setChecked(settings.isViewSplit()); // create 'Start with editable navigation bar' checkbox m_startEditable = new QCheckBox(i18n("Start with editable navigation bar"), vBox); m_startEditable->setChecked(settings.isURLEditable()); // create 'Save view properties for each folder' checkbox m_saveView = new QCheckBox(i18n("Save view properties for each folder"), vBox); m_saveView->setChecked(settings.isSaveView()); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(vBox); topLayout->addWidget(vBox); }
scannerwindow::scannerwindow(QList<int> parameters, QMainWindow *parent, bool load, QTextStream* stream): QObject(parent) { this->parameters=parameters; widget = new QWidget(); widget->setAttribute(Qt::WA_DeleteOnClose); graph = new Q3DSurface(); container = QWidget::createWindowContainer(graph, widget); container->setAttribute(Qt::WA_AcceptTouchEvents); widget->setGeometry( QStyle::alignedRect( Qt::LeftToRight, Qt::AlignTop, widget->size(), qApp->desktop()->availableGeometry() ) ); bitmapForward=new QCustomPlot(widget); bitmapBackward=new QCustomPlot(widget); bitmapCombined=new QCustomPlot(widget); bitmapForward->setContextMenuPolicy(Qt::CustomContextMenu); bitmapBackward->setContextMenuPolicy(Qt::CustomContextMenu); bitmapCombined->setContextMenuPolicy(Qt::CustomContextMenu); bitmapBackward->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); bitmapForward->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); bitmapCombined->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); initializeBitmapForward(bitmapForward); initializeBitmapBackward(bitmapBackward); initializeBitmapCombined(bitmapCombined); if (!graph->hasContext()) { QMessageBox msgBox; msgBox.setText("Couldn't initialize the OpenGL context."); msgBox.exec(); } QSize screenSize = graph->screen()->size(); container->setMinimumSize(QSize(screenSize.width() / 3, screenSize.height()/4)); container->setMaximumSize(screenSize); container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); container->setFocusPolicy(Qt::StrongFocus); bitmapBackward->setMinimumSize(screenSize.width()/4, screenSize.height()/4); bitmapForward->setMinimumSize(screenSize.width()/4, screenSize.height()/4); bitmapCombined->setMinimumSize(screenSize.width()/4, screenSize.height()/4); QHBoxLayout *hLayout = new QHBoxLayout(widget); QVBoxLayout *vLayout = new QVBoxLayout(); QSplitter *hSplitterMain = new QSplitter(); QSplitter *vSplitterRight = new QSplitter(); hLayout->setSizeConstraint(QBoxLayout::SizeConstraint::SetMinimumSize); vSplitterRight->addWidget(bitmapForward); vSplitterRight->addWidget(bitmapBackward); vSplitterRight->addWidget(bitmapCombined); vSplitterRight->setOrientation(Qt::Orientation::Vertical); vSplitterRight->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); hSplitterMain->setOrientation(Qt::Orientation::Horizontal); hSplitterMain->addWidget(container); hSplitterMain->addWidget(vSplitterRight); hSplitterMain->setStyleSheet("QSplitter::handle {background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0,stop:0 rgba(255, 255, 255, 0),stop:0.407273 rgba(200, 200, 200, 255),stop:0.4825 rgba(101, 104, 113, 235), stop:0.6 rgba(255, 255, 255, 0));}"); vSplitterRight->setStyleSheet("QSplitter::handle {background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0,stop:0 rgba(255, 255, 255, 0),stop:0.407273 rgba(200, 200, 200, 255),stop:0.4825 rgba(101, 104, 113, 235), stop:0.6 rgba(255, 255, 255, 0));}"); hLayout->addWidget(hSplitterMain); hLayout->addLayout(vLayout); vLayout->setAlignment(Qt::AlignTop); widget->setWindowTitle(QStringLiteral("AFM Scan")); QGroupBox *modelGroupBox = new QGroupBox(QStringLiteral("Scan")); if(!load){ AFM_Scan_3D_RB = new QPushButton(widget); AFM_Scan_3D_RB->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); AFM_Scan_3D_RB->setText(QStringLiteral("Start Scan")); AFM_Scan_3D_RB->setCheckable(true); AFM_Scan_3D_RB->setChecked(false); } SaveSurface = new QPushButton(widget); SaveSurface->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); SaveSurface->setText(QStringLiteral("Save Data")); BitmapView = new QPushButton(widget); BitmapView->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); BitmapView->setText(QStringLiteral("Save BMP")); QVBoxLayout *modelVBox = new QVBoxLayout; if(!load){ modelVBox->addWidget(AFM_Scan_3D_RB); } modelVBox->addWidget(BitmapView); modelVBox->addWidget(SaveSurface); modelGroupBox->setLayout(modelVBox); QGroupBox *selectionGroupBox = new QGroupBox(QStringLiteral("Selection Mode")); selectionGroupBox->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); QCheckBox *piezoMove = new QCheckBox(widget); piezoMove->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); piezoMove->setText(QStringLiteral("Piezo")); piezoMove->setChecked(true); modelVBox->addWidget(piezoMove); QRadioButton *modeNoneRB = new QRadioButton(widget); modeNoneRB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); modeNoneRB->setText(QStringLiteral("No selection")); modeNoneRB->setChecked(false); QRadioButton *modeItemRB = new QRadioButton(widget); modeItemRB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); modeItemRB->setText(QStringLiteral("Item")); modeItemRB->setChecked(false); QRadioButton *modeSliceRowRB = new QRadioButton(widget); modeSliceRowRB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); modeSliceRowRB->setText(QStringLiteral("Row Slice")); modeSliceRowRB->setChecked(false); QRadioButton *modeSliceColumnRB = new QRadioButton(widget); modeSliceColumnRB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); modeSliceColumnRB->setText(QStringLiteral("Column Slice")); modeSliceColumnRB->setChecked(false); QVBoxLayout *selectionVBox = new QVBoxLayout; selectionVBox->addWidget(modeNoneRB); selectionVBox->addWidget(modeItemRB); selectionVBox->addWidget(modeSliceRowRB); selectionVBox->addWidget(modeSliceColumnRB); selectionGroupBox->setLayout(selectionVBox); QSlider *axisCameraSliderZ = new QSlider(Qt::Horizontal, widget); axisCameraSliderZ->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); axisCameraSliderZ->setMinimum(0); axisCameraSliderZ->setMaximum(179); axisCameraSliderZ->setTickInterval(1); axisCameraSliderZ->setEnabled(true); QSlider *axisCameraSliderY = new QSlider(Qt::Horizontal, widget); axisCameraSliderY->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); axisCameraSliderY->setMinimum(0); axisCameraSliderY->setMaximum(180); axisCameraSliderY->setTickInterval(0); axisCameraSliderY->setEnabled(true); QComboBox *themeList = new QComboBox(widget); themeList->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); themeList->addItem(QStringLiteral("Qt")); themeList->addItem(QStringLiteral("Primary Colors")); themeList->addItem(QStringLiteral("Digia")); themeList->addItem(QStringLiteral("Stone Moss")); themeList->addItem(QStringLiteral("Army Blue")); themeList->addItem(QStringLiteral("Retro")); themeList->addItem(QStringLiteral("Ebony")); themeList->addItem(QStringLiteral("Isabelle")); QGroupBox *colorGroupBox = new QGroupBox(QStringLiteral("Custom gradient")); QLinearGradient grBtoY(0, 0, 1, 100); grBtoY.setColorAt(1.0, Qt::black); grBtoY.setColorAt(0.67, Qt::blue); grBtoY.setColorAt(0.33, Qt::red); grBtoY.setColorAt(0.0, Qt::yellow); QPixmap pm(24, 100); QPainter pmp(&pm); pmp.setBrush(QBrush(grBtoY)); pmp.setPen(Qt::NoPen); pmp.drawRect(0, 0, 24, 100); QPushButton *gradientBtoYPB = new QPushButton(widget); gradientBtoYPB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); gradientBtoYPB->setIcon(QIcon(pm)); gradientBtoYPB->setIconSize(QSize(24, 100)); QLinearGradient grGtoR(0, 0, 1, 100); grGtoR.setColorAt(1.0, Qt::darkGreen); grGtoR.setColorAt(0.5, Qt::yellow); grGtoR.setColorAt(0.2, Qt::red); grGtoR.setColorAt(0.0, Qt::darkRed); pmp.setBrush(QBrush(grGtoR)); pmp.drawRect(0, 0, 24, 100); QPushButton *gradientGtoRPB = new QPushButton(widget); gradientGtoRPB->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); gradientGtoRPB->setIcon(QIcon(pm)); gradientGtoRPB->setIconSize(QSize(24, 100)); QHBoxLayout *colorHBox = new QHBoxLayout; colorHBox->addWidget(gradientBtoYPB); colorHBox->addWidget(gradientGtoRPB); colorGroupBox->setLayout(colorHBox); vLayout->addWidget(modelGroupBox); vLayout->addWidget(selectionGroupBox); vLayout->addWidget(new QLabel(QStringLiteral("Camera Position"))); vLayout->addWidget(axisCameraSliderZ); vLayout->addWidget(axisCameraSliderY); vLayout->addWidget(new QLabel(QStringLiteral("Theme"))); vLayout->addWidget(themeList); vLayout->addWidget(colorGroupBox); widget->show(); modifier= new SurfaceGraph(graph, widget,parameters); if(!load){ QObject::connect(parent, SIGNAL(plotDataReceived(QList <QByteArray>)), modifier, SLOT(dataHandler(QList <QByteArray>))); QObject::connect(AFM_Scan_3D_RB, SIGNAL (toggled(bool)), this, SLOT(AFMButtonHandler(bool))); QObject::connect(this, SIGNAL (AFMStart()), modifier, SLOT (enableAFMModel())); QObject::connect(this, SIGNAL (AFMDone()), parent, SLOT (sendDone())); QObject::connect(this, SIGNAL (AFMStart()), parent, SLOT (sendGo())); QObject::connect(this, SIGNAL (AFMStart()), parent, SLOT(sendReady()));}
EResumen::EResumen( QWidget *parent, tipo que ) : EVentana( parent ) { setObjectName( "selectorResumen" ); setWindowTitle( "Seleccione el Resumen" ); setAttribute( Qt::WA_DeleteOnClose ); generar = que; QVBoxLayout *layoutPrincipal = new QVBoxLayout( this ); layoutPrincipal->setMargin( 3 ); layoutPrincipal->setSpacing( 3 ); switch( que ) { case diario: { QGroupBox *g = new QGroupBox( this ); g->setTitle( "Elija la fecha del resumen" ); g->setAlignment( Qt::AlignHCenter ); g->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); QVBoxLayout *v = new QVBoxLayout( g ); CWfecha = new QCalendarWidget( g ); CWfecha->setGridVisible( false ); CWfecha->setMaximumDate( QDate::currentDate() ); CWfecha->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); v->addWidget( CWfecha ); g->adjustSize(); layoutPrincipal->addWidget( g ); break; } case mensual: { QGroupBox *groupBox = new QGroupBox( this ); groupBox->setObjectName(QString::fromUtf8("groupBox")); groupBox->setTitle( "Elija el mes para el resumen" ); groupBox->setAlignment( Qt::AlignCenter ); groupBox->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); QVBoxLayout *v = new QVBoxLayout(groupBox); v->setObjectName( "vLayout" ); QHBoxLayout *h1 = new QHBoxLayout(); h1->setObjectName("hLayout1"); QLabel *Lmes = new QLabel(groupBox); Lmes->setObjectName(QString::fromUtf8("labelMes")); Lmes->setText( tr( "Mes:" ) ); h1->addWidget(Lmes); CBMes = new QComboBox(groupBox); CBMes->setObjectName(QString::fromUtf8("CBMes")); // Inserto los meses QLocale locale; for( int i = 1; i<=12; i++ ) { CBMes->insertItem( i, locale.monthName( i ) ); } CBMes->setCurrentIndex( QDate::currentDate().month() ); h1->addWidget(CBMes); v->addLayout(h1); QHBoxLayout *horizontalLayout_2 = new QHBoxLayout(); horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); QLabel *Lano = new QLabel(groupBox); Lano->setObjectName(QString::fromUtf8("lano")); Lano->setText( tr( "Año:" ) ); horizontalLayout_2->addWidget(Lano); SBAno = new QSpinBox(groupBox); SBAno->setObjectName(QString::fromUtf8("SBAno")); SBAno->setMaximum( QDate::currentDate().year() ); SBAno->setSingleStep( 1 ); SBAno->setValue( QDate::currentDate().year() ); horizontalLayout_2->addWidget(SBAno); v->addLayout(horizontalLayout_2); layoutPrincipal->addWidget( groupBox ); break; } case anual: { QHBoxLayout *layout = new QHBoxLayout( this ); QLabel *etiqueta = new QLabel( this ); etiqueta->setText( QString( "Año:" ) ); seleccion = new QSpinBox( this ); seleccion->setRange( 0, QDate::currentDate().year() ); seleccion->setSingleStep( 1 ); seleccion->setValue( QDate::currentDate().year() ); layout->addWidget( etiqueta ); layout->addWidget( seleccion ); layoutPrincipal->addLayout( layout ); break; } case semanal: { QGroupBox *g = new QGroupBox( this ); g->setTitle( "Elija un dia de la semana para el resumen" ); g->setAlignment( Qt::AlignHCenter ); g->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); QVBoxLayout *v = new QVBoxLayout( g ); CWfecha = new QCalendarWidget( g ); CWfecha->setGridVisible( true ); CWfecha->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); v->addWidget( CWfecha ); g->adjustSize(); layoutPrincipal->addWidget( g ); break; } case entrefechas: { QHBoxLayout *horizontalLayout = new QHBoxLayout(); horizontalLayout->setObjectName( "horizontalLayout" ); horizontalLayout->setContentsMargins(0, 0, 0, 0); QLabel *LInicio = new QLabel(this); LInicio->setObjectName( "LInicio" ); LInicio->setText( "Fecha de inicio:" ); horizontalLayout->addWidget(LInicio); DEInicio = new QDateEdit(this); DEInicio->setObjectName( "DEInicio" ); DEInicio->setCalendarPopup(true); horizontalLayout->addWidget(DEInicio); QHBoxLayout *horizontalLayout_2 = new QHBoxLayout(); horizontalLayout_2->setObjectName( "horizontalLayout_2" ); horizontalLayout_2->setContentsMargins(0, 0, 0, 0); QLabel *LFin = new QLabel(this); LFin->setObjectName( "LFin" ); LFin->setText( "Fecha de Fin:" ); horizontalLayout_2->addWidget(LFin); DEFin = new QDateEdit(this); DEFin->setObjectName( "DEFin" ); DEFin->setCalendarPopup(true); DEFin->setMaximumDate( QDate::currentDate() ); horizontalLayout_2->addWidget(DEFin); layoutPrincipal->addItem( horizontalLayout ); layoutPrincipal->addItem( horizontalLayout_2 ); } } QAction *ActGenerar = new QAction( "Generar Reporte", this ); ActGenerar->setIcon( QIcon( ":/imagenes/reporte.png" ) ); connect( ActGenerar, SIGNAL( triggered() ), this, SLOT( generarResumen() ) ); addAction( ActGenerar ); EActCerrar *ActCerrar = new EActCerrar( this ); connect( ActCerrar, SIGNAL( triggered() ), this, SLOT( close() ) ); addAction( ActCerrar ); this->adjustSize(); }
BpdeMainWindow::BpdeMainWindow(RInside& R, const QString& sourceFile, QObject *parent) : R(R), sourceFile(sourceFile), x(), y(), H(), solver(NULL) { tempfile = QString::fromStdString(Rcpp::as<std::string>(R.parseEval("tfile <- tempfile()"))); svgfile = QString::fromStdString(Rcpp::as<std::string>(R.parseEval("sfile <- tempfile()"))); QWidget *window = new QWidget; window->setWindowTitle("BpdeGUI"); setCentralWidget(window); QGroupBox *runParameters = new QGroupBox("Параметры запуска"); openMPEnabled = new QRadioButton("&OpenMP"); openClEnabled = new QRadioButton("&OpenCL"); openMPEnabled->setChecked(true); connect(openMPEnabled, SIGNAL(clicked()), this, SLOT(loadSource())); connect(openClEnabled, SIGNAL(clicked()), this, SLOT(loadSource())); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(openMPEnabled); vbox->addWidget(openClEnabled); QLabel *threadsLabel = new QLabel("Количество потоков"); threadsLineEdit = new QLineEdit("4"); QHBoxLayout *threadNumber = new QHBoxLayout; threadNumber->addWidget(threadsLabel); threadNumber->addWidget(threadsLineEdit); QHBoxLayout *deviceLayout = new QHBoxLayout; QLabel *deviceLabel = new QLabel("Устройство"); deviceComboBox = new QComboBox(); scanDevices(); for (std::vector<cl::Device>::iterator it = devices.begin(); it != devices.end(); it++) deviceComboBox->addItem((*it).getInfo<CL_DEVICE_NAME>().c_str()); connect(deviceComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(loadSource())); deviceLayout->addWidget(deviceLabel); deviceLayout->addWidget(deviceComboBox); QHBoxLayout* runLayout = new QHBoxLayout; runButton = new QPushButton("Начать вычисления", this); qDebug() << "Connect : " << connect(runButton, SIGNAL(clicked()), this, SLOT(solve())); runLayout->addWidget(runButton); QVBoxLayout* ulLayout = new QVBoxLayout; ulLayout->addLayout(vbox); ulLayout->addLayout(threadNumber); ulLayout->addLayout(deviceLayout); ulLayout->addLayout(runLayout); runParameters->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); runParameters->setLayout(ulLayout); QButtonGroup *kernelGroup = new QButtonGroup; kernelGroup->addButton(openMPEnabled, 0); kernelGroup->addButton(openClEnabled, 1); QGroupBox *solveParamBox = new QGroupBox("Настройки вычислительного метода"); QHBoxLayout *iterationsLayout = new QHBoxLayout; QHBoxLayout *stepLayout = new QHBoxLayout; QLabel *sourceFileLabel = new QLabel("SourceFile"); sourceFileEdit = new QLineEdit(sourceFile); iterationsEdit = new QLineEdit("10000"); stepEdit = new QLineEdit("3600"); QLabel *iterationsLabel = new QLabel("Итерации"); QLabel *stepLabel = new QLabel("Шаг "); QHBoxLayout *exportLayout = new QHBoxLayout; exportImage = new QPushButton("Экспорт изотерм"); export3D = new QPushButton("Экспорт 3D модели"); connect(exportImage, SIGNAL(clicked()), this, SLOT(exportIsoterms())); connect(export3D, SIGNAL(clicked()), this, SLOT(export3DModel())); iterationsLayout->addWidget(iterationsLabel); iterationsLayout->addWidget(iterationsEdit); stepLayout->addWidget(stepLabel); stepLayout->addWidget(stepEdit); exportLayout->addWidget(exportImage); exportLayout->addWidget(export3D); svg = new QSvgWidget(); loadSource(); QVBoxLayout *solveParamLayout = new QVBoxLayout; solveParamLayout->addWidget(sourceFileLabel); solveParamLayout->addWidget(sourceFileEdit); solveParamLayout->addLayout(iterationsLayout); solveParamLayout->addLayout(stepLayout); solveParamLayout->addLayout(exportLayout); solveParamBox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); solveParamBox->setLayout(solveParamLayout); QHBoxLayout *upperlayout = new QHBoxLayout; upperlayout->addWidget(runParameters); upperlayout->addWidget(solveParamBox); QHBoxLayout *lowerlayout = new QHBoxLayout; lowerlayout->addWidget(svg); QVBoxLayout *outer = new QVBoxLayout; outer->addLayout(upperlayout); outer->addLayout(lowerlayout); window->setLayout(outer); }
MainWindow::MainWindow( QWidget * parent ) : QMainWindow( parent ) // создали QT-шное окно в конструкторе родителя { // создание группы для отрисовки QGroupBox* drawPanelBox = new QGroupBox( tr("Draw Panel") ); QVBoxLayout* panelLayout = new QVBoxLayout( drawPanelBox ); drawPanel = new DrawPanel( DrawPanel::DEFAULT_WIDTH, DrawPanel::DEFAULT_HEIGHT, drawPanelBox ); panelLayout->addWidget( drawPanel ); // создание группы для контролов QGroupBox* controllers = new QGroupBox( tr("Controllers") ); QVBoxLayout* cLayout = new QVBoxLayout( controllers ); SizeController* xC = new SizeController( this, "Position X", -SizeController::DEFAULT_MAX_VALUE, SizeController::DEFAULT_MAX_VALUE, Circle::DEFAULT_CENTER_X); SizeController* yC = new SizeController( this, "Position Y", -SizeController::DEFAULT_MAX_VALUE, SizeController::DEFAULT_MAX_VALUE, Circle::DEFAULT_CENTER_Y); SizeController* rC = new SizeController( this, "Radius", 0, SizeController::DEFAULT_MAX_VALUE, Circle::DEFAULT_RADIUS); cLayout->addWidget( xC ); cLayout->addWidget( yC ); cLayout->addWidget( rC ); // фиксируем растяжение по горизонтали контролов controllers->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ); // создаём виджет контейнер, который вложим в наш главный виджет QMainWindow QWidget * container = new QWidget; // располагаем вертикально область для рисования и контролов //и помещаем в контейнер QHBoxLayout * mainLayout = new QHBoxLayout( container ); mainLayout->addWidget( drawPanelBox ); mainLayout->addWidget( controllers ); // устанавливаем начинку главному виджету setCentralWidget(container); // изменили значения контролов, нужно вызвать отрисовку и установить новые значения параметров QObject::connect( xC, SIGNAL( valueChanged(int) ), drawPanel->getCircle(), SLOT( setX(int) )); QObject::connect( yC, SIGNAL( valueChanged(int) ), drawPanel->getCircle(), SLOT( setY(int) )); QObject::connect( rC, SIGNAL( valueChanged(int) ), drawPanel->getCircle(), SLOT( setR(int) )); // для обратной связи при считывании из файла настроек, чтобы бегунки настроить QObject::connect(drawPanel->getCircle(), SIGNAL(changeX(int)), xC, SLOT(setValue(int))); QObject::connect(drawPanel->getCircle(), SIGNAL(changeY(int)), yC, SLOT(setValue(int))); QObject::connect(drawPanel->getCircle(), SIGNAL(changeR(int)), rC, SLOT(setValue(int))); /*По идее архитектура должна быть построена так: Вызывается сигнал, мы у области рисования вызываем слот перерисовки. В области рисования у нас есть разные объекты для отрисовки. В перерисовки мы независимо у каждого вызываем функцию перерисовки. Картинка отрисовывается как сумма отображений каждого объекта Остальные контролы сразу меняют своё состояние, не дожидаясь отрисовки, потому что отрисовка может занимать значительное время, а параметры должны быть действительными на данный момент */ // Создание меню и привязываем действия QMenuBar *menuBar = new QMenuBar( this ); QMenu* menu = new QMenu(tr("File"), menuBar); QAction* openAction = menu->addAction( tr("Open") ); QAction* saveAction = menu->addAction( tr("Save") ); QObject::connect( openAction, SIGNAL( triggered() ), this, SLOT( openListener() )); QObject::connect( saveAction, SIGNAL( triggered() ), this, SLOT( saveListener() )); menuBar->addMenu( menu ); // добавляем меню и заголовок изменяем setMenuBar( menuBar ); setWindowTitle( tr("Circle") ); }
SetColValuesDialog::SetColValuesDialog(ScriptingEnv *env, Table *t, Qt::WFlags fl) : QDialog(t, fl), Scripted(env) { setObjectName("SetColValuesDialog"); setWindowTitle(tr("MantidPlot - Set column values")); setSizeGripEnabled(true); QHBoxLayout *hbox1 = new QHBoxLayout(); hbox1->addWidget(new QLabel(tr("For row (i)"))); start = new QSpinBox(); start->setMinimum(1); hbox1->addWidget(start); hbox1->addWidget(new QLabel(tr("to"))); end = new QSpinBox(); end->setMinimum(1); hbox1->addWidget(end); // Ideally this would be checked at compile time. Until we have 'constexpr if` // on all platforms, the added complexity and minimal cost isn't worthwhile. if (sizeof(int) == 2) { // 16 bit signed integer start->setMaximum(0x7fff); end->setMaximum(0x7fff); } else { // 32 bit signed integer start->setMaximum(0x7fffffff); end->setMaximum(0x7fffffff); } QGridLayout *gl1 = new QGridLayout(); boxColumn = new QComboBox(); gl1->addWidget(boxColumn, 1, 0); btnAddCol = new QPushButton(tr("Add column")); gl1->addWidget(btnAddCol, 1, 1); QHBoxLayout *hbox3 = new QHBoxLayout(); hbox3->addStretch(); buttonPrev = new QPushButton("&<<"); hbox3->addWidget(buttonPrev); buttonNext = new QPushButton("&>>"); hbox3->addWidget(buttonNext); gl1->addLayout(hbox3, 2, 0); addCellButton = new QPushButton(tr("Add cell")); gl1->addWidget(addCellButton, 2, 1); QGroupBox *gb = new QGroupBox(); QVBoxLayout *vbox1 = new QVBoxLayout(); vbox1->addLayout(hbox1); vbox1->addLayout(gl1); gb->setLayout(vbox1); gb->setSizePolicy( QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); explain = new QTextEdit(); explain->setReadOnly(true); explain->setSizePolicy( QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); QPalette palette = explain->palette(); palette.setColor(QPalette::Active, QPalette::Base, Qt::lightGray); explain->setPalette(palette); QHBoxLayout *hbox2 = new QHBoxLayout(); hbox2->addWidget(explain); hbox2->addWidget(gb); commands = new ScriptEditor(this, scriptingEnv()->createCodeLexer()); QVBoxLayout *vbox2 = new QVBoxLayout(); btnApply = new QPushButton(tr("&Apply")); vbox2->addWidget(btnApply); btnCancel = new QPushButton(tr("&Close")); vbox2->addWidget(btnCancel); vbox2->addStretch(); QHBoxLayout *hbox4 = new QHBoxLayout(); hbox4->addWidget(commands); hbox4->addLayout(vbox2); QVBoxLayout *vbox3 = new QVBoxLayout(); vbox3->addLayout(hbox2); colNameLabel = new QLabel(); vbox3->addWidget(colNameLabel); vbox3->addLayout(hbox4); setLayout(vbox3); setFocusProxy(commands); commands->setFocus(); connect(btnAddCol, SIGNAL(clicked()), this, SLOT(insertCol())); connect(addCellButton, SIGNAL(clicked()), this, SLOT(insertCell())); connect(btnApply, SIGNAL(clicked()), this, SLOT(apply())); connect(btnCancel, SIGNAL(clicked()), this, SLOT(close())); connect(buttonPrev, SIGNAL(clicked()), this, SLOT(prevColumn())); connect(buttonNext, SIGNAL(clicked()), this, SLOT(nextColumn())); setTable(t); }
ToolbarEditDialog::ToolbarEditDialog( QWidget *_w, intf_thread_t *_p_intf) : QVLCDialog( _w, _p_intf ) { setWindowTitle( qtr( "Toolbars Editor" ) ); setWindowRole( "vlc-toolbars-editor" ); QGridLayout *mainLayout = new QGridLayout( this ); setMinimumWidth( 600 ); setAttribute( Qt::WA_DeleteOnClose ); /* main GroupBox */ QGroupBox *widgetBox = new QGroupBox( qtr( "Toolbar Elements") , this ); widgetBox->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::MinimumExpanding ); QGridLayout *boxLayout = new QGridLayout( widgetBox ); flatBox = new QCheckBox( qtr( "Flat Button" ) ); flatBox->setToolTip( qtr( "Next widget style" ) ); bigBox = new QCheckBox( qtr( "Big Button" ) ); bigBox->setToolTip( flatBox->toolTip() ); shinyBox = new QCheckBox( qtr( "Native Slider" ) ); shinyBox->setToolTip( flatBox->toolTip() ); boxLayout->addWidget( new WidgetListing( p_intf, this ), 1, 0, 1, -1 ); boxLayout->addWidget( flatBox, 0, 0 ); boxLayout->addWidget( bigBox, 0, 1 ); boxLayout->addWidget( shinyBox, 0, 2 ); mainLayout->addWidget( widgetBox, 5, 0, 3, 6 ); QTabWidget *tabWidget = new QTabWidget(); mainLayout->addWidget( tabWidget, 1, 0, 4, 9 ); /* Main ToolBar */ QWidget *mainToolbarBox = new QWidget(); tabWidget->addTab( mainToolbarBox, qtr( "Main Toolbar" ) ); QFormLayout *mainTboxLayout = new QFormLayout( mainToolbarBox ); positionCheckbox = new QCheckBox( qtr( "Above the Video" ) ); positionCheckbox->setChecked( getSettings()->value( "MainWindow/ToolbarPos", false ).toBool() ); mainTboxLayout->addRow( new QLabel( qtr( "Toolbar position:" ) ), positionCheckbox ); QString line1 = getSettings()->value( "MainWindow/MainToolbar1", MAIN_TB1_DEFAULT ).toString(); controller1 = new DroppingController( p_intf, line1, this ); mainTboxLayout->addRow( new QLabel( qtr("Line 1:") ), controller1 ); QString line2 = getSettings()->value( "MainWindow/MainToolbar2", MAIN_TB2_DEFAULT ).toString(); controller2 = new DroppingController( p_intf, line2, this ); mainTboxLayout->addRow( new QLabel( qtr("Line 2:") ), controller2 ); /* TimeToolBar */ QString line = getSettings()->value( "MainWindow/InputToolbar", INPT_TB_DEFAULT ).toString(); controller = new DroppingController( p_intf, line, this ); QWidget *timeToolbarBox = new QWidget(); timeToolbarBox->setLayout( new QVBoxLayout() ); timeToolbarBox->layout()->addWidget( controller ); tabWidget->addTab( timeToolbarBox, qtr( "Time Toolbar" ) ); /* Advanced ToolBar */ QString lineA = getSettings()->value( "MainWindow/AdvToolbar", ADV_TB_DEFAULT ).toString(); controllerA = new DroppingController( p_intf, lineA, this ); QWidget *advToolbarBox = new QWidget(); advToolbarBox->setLayout( new QVBoxLayout() ); advToolbarBox->layout()->addWidget( controllerA ); tabWidget->addTab( advToolbarBox, qtr( "Advanced Widget" ) ); /* FSCToolBar */ QString lineFSC = getSettings()->value( "MainWindow/FSCtoolbar", FSC_TB_DEFAULT ).toString(); controllerFSC = new DroppingController( p_intf, lineFSC, this ); QWidget *FSCToolbarBox = new QWidget(); FSCToolbarBox->setLayout( new QVBoxLayout() ); FSCToolbarBox->layout()->addWidget( controllerFSC ); tabWidget->addTab( FSCToolbarBox, qtr( "Fullscreen Controller" ) ); /* Profile */ QGridLayout *profileBoxLayout = new QGridLayout(); profileCombo = new QComboBox; QToolButton *newButton = new QToolButton; newButton->setIcon( QIcon( ":/new.svg" ) ); newButton->setToolTip( qtr("New profile") ); QToolButton *deleteButton = new QToolButton; deleteButton->setIcon( QIcon( ":/toolbar/clear.svg" ) ); deleteButton->setToolTip( qtr( "Delete the current profile" ) ); profileBoxLayout->addWidget( new QLabel( qtr( "Select profile:" ) ), 0, 0 ); profileBoxLayout->addWidget( profileCombo, 0, 1 ); profileBoxLayout->addWidget( newButton, 0, 2 ); profileBoxLayout->addWidget( deleteButton, 0, 3 ); mainLayout->addLayout( profileBoxLayout, 0, 0, 1, 9 ); /* Fill combos */ int i_size = getSettings()->beginReadArray( "ToolbarProfiles" ); for( int i = 0; i < i_size; i++ ) { getSettings()->setArrayIndex(i); profileCombo->addItem( getSettings()->value( "ProfileName" ).toString(), getSettings()->value( "Value" ).toString() ); } getSettings()->endArray(); /* Load defaults ones if we have no combos */ /* We could decide that we load defaults on first launch of the dialog or when the combo is back to 0. I choose the second solution, because some clueless user might hit on delete a bit too much, but discussion is opened. -- jb */ if( i_size == 0 ) { profileCombo->addItem( PROFILE_NAME_6, QString( VALUE_6 ) ); profileCombo->addItem( PROFILE_NAME_1, QString( VALUE_1 ) ); profileCombo->addItem( PROFILE_NAME_2, QString( VALUE_2 ) ); profileCombo->addItem( PROFILE_NAME_3, QString( VALUE_3 ) ); profileCombo->addItem( PROFILE_NAME_4, QString( VALUE_4 ) ); profileCombo->addItem( PROFILE_NAME_5, QString( VALUE_5 ) ); } profileCombo->setCurrentIndex( -1 ); /* Build and prepare our preview */ PreviewWidget *previewWidget = new PreviewWidget( controller, controller1, controller2, positionCheckbox->isChecked() ); QGroupBox *previewBox = new QGroupBox( qtr("Preview"), this ); previewBox->setLayout( new QVBoxLayout() ); previewBox->layout()->addWidget( previewWidget ); mainLayout->addWidget( previewBox, 5, 6, 3, 3 ); CONNECT( positionCheckbox, stateChanged(int), previewWidget, setBarsTopPosition(int) ); /* Buttons */ QDialogButtonBox *okCancel = new QDialogButtonBox; QPushButton *okButton = new QPushButton( qtr( "Cl&ose" ), this ); okButton->setDefault( true ); QPushButton *cancelButton = new QPushButton( qtr( "&Cancel" ), this ); okCancel->addButton( okButton, QDialogButtonBox::AcceptRole ); okCancel->addButton( cancelButton, QDialogButtonBox::RejectRole ); BUTTONACT( deleteButton, deleteProfile() ); BUTTONACT( newButton, newProfile() ); CONNECT( profileCombo, currentIndexChanged( int ), this, changeProfile( int ) ); BUTTONACT( okButton, close() ); BUTTONACT( cancelButton, cancel() ); mainLayout->addWidget( okCancel, 8, 0, 1, 9 ); }
void XmlSettingsDialog::ParseEntity (const QDomElement& entity, QWidget *baseWidget) { QDomElement item = entity.firstChildElement ("item"); while (!item.isNull ()) { ParseItem (item, baseWidget); item = item.nextSiblingElement ("item"); } QDomElement gbox = entity.firstChildElement ("groupbox"); while (!gbox.isNull ()) { QGroupBox *box = new QGroupBox (GetLabel (gbox)); QGridLayout *groupLayout = new QGridLayout (); groupLayout->setContentsMargins (2, 2, 2, 2); box->setLayout (groupLayout); box->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding); ParseEntity (gbox, box); QGridLayout *lay = qobject_cast<QGridLayout*> (baseWidget->layout ()); lay->addWidget (box, lay->rowCount (), 0); gbox = gbox.nextSiblingElement ("groupbox"); QSpacerItem *verticalSpacer = new QSpacerItem (10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); groupLayout->addItem (verticalSpacer, groupLayout->rowCount (), 0); } QDomElement scroll = entity.firstChildElement ("scrollarea"); while (!scroll.isNull ()) { QScrollArea *area = new QScrollArea (); if (scroll.hasAttribute ("horizontalScroll")) { QString attr = scroll.attribute ("horizontalScroll"); if (attr == "on") area->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOn); else if (attr == "off") area->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff); } if (scroll.hasAttribute ("verticalScroll")) { QString attr = scroll.attribute ("verticalScroll"); if (attr == "on") area->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOn); else if (attr == "off") area->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff); } QFrame *areaWidget = new QFrame; QGridLayout *areaLayout = new QGridLayout; areaWidget->setLayout (areaLayout); ParseEntity (scroll, areaWidget); area->setWidget (areaWidget); areaWidget->show (); QGridLayout *lay = qobject_cast<QGridLayout*> (baseWidget->layout ()); lay->addWidget (area, lay->rowCount (), 0, 1, 2); scroll = scroll.nextSiblingElement ("scrollarea"); QSpacerItem *verticalSpacer = new QSpacerItem (10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); lay->addItem (verticalSpacer, lay->rowCount (), 0, 1, 1); } QDomElement tab = entity.firstChildElement ("tab"); if (!tab.isNull ()) { QTabWidget *tabs = new QTabWidget; QGridLayout *lay = qobject_cast<QGridLayout*> (baseWidget->layout ()); lay->addWidget (tabs, lay->rowCount (), 0, 1, 2); while (!tab.isNull ()) { QWidget *page = new QWidget; QGridLayout *widgetLay = new QGridLayout; widgetLay->setContentsMargins (0, 0, 0, 0); page->setLayout (widgetLay); page->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding); tabs->addTab (page, GetLabel (tab)); ParseEntity (tab, page); tab = tab.nextSiblingElement ("tab"); QSpacerItem *verticalSpacer = new QSpacerItem (10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding); widgetLay->addItem (verticalSpacer, widgetLay->rowCount (), 0, 1, 1); } } }
QGroupBox* EasyViewWidget::createBox(stream_t StreamKind, int StreamPos) { QString Temp=""; Temp.append(wstring2QString(C->Summary_Get(FilePos,StreamKind, StreamPos))); //Depend of StreamKind if (C->Count_Get(FilePos,Stream_General)==0) { //Empty box Temp+="\n"; Temp+="\n"; } else if (StreamKind==Stream_General) { //Stream_General size_t Lines=1; for (int KindOfStream=1; KindOfStream<Stream_Max; KindOfStream++) { if (C->Count_Get(FilePos, (stream_t)KindOfStream)>0) { String Z1=String(C->Get(FilePos, (stream_t)KindOfStream, 0, __T("StreamKind"), Info_Measure))+__T("StreamCount"); String Z2=String(__T(" "))+C->Get(FilePos, (stream_t)KindOfStream, 0, __T("StreamKind"), Info_Text); if (C->Count_Get(FilePos, (stream_t)KindOfStream)==1) Z2+=__T(" stream");//__T(" stream1"); else Z2+=__T(" streams");//__T(" stream2"); String Z3=String(C->Get(FilePos, (stream_t)KindOfStream, 0, __T("StreamKind"), Info_Text)+__T("_Format_WithHint_List")); Temp+="\n"; Temp+=wstring2QString((C->Get(FilePos, (stream_t)KindOfStream, 0, Z1)+Z2+__T(": ")+C->Get(FilePos, Stream_General, 0, Z3))); Lines++; } if (Lines>=Lines_Count_Get(StreamKind)) KindOfStream=Stream_Max; } } else if (Lines_Count_Get(StreamKind)>1) { //Other than Stream_General QString Title = QString(wstring2QString(C->Get(FilePos, StreamKind, StreamPos, __T("Title")))); if (!Title.isEmpty()) { Temp+="\n"; Temp+=Title; } } if(Temp.isEmpty()) return NULL; QGroupBox* box = new QGroupBox(Title_Get(StreamKind)); if(StreamKind==Stream_General) box->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); else box->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Maximum); QHBoxLayout* boxLayout = new QHBoxLayout(); box->setLayout(boxLayout); QLabel* label = new QLabel(Temp); label->setWordWrap(true); boxLayout->addWidget(label); if(StreamKind==Stream_General) { QLabel* labelTags = new QLabel(Tags_Get_General()); labelTags->setWordWrap(true); boxLayout->addWidget(labelTags); } return box; }
MainWindow::MainWindow(QWidget *parent, const char *title, const QSize &size, const char *path) : QMainWindow(parent), _status(statusBar()), _panelManager(new PanelManager()), _watcher(new QFutureWatcher<void>(this)) { /* Window setup. */ setWindowTitle(title); resize(size); /* Actions. */ _actionOpenDirectory = new QAction(this); _actionOpenFile = new QAction(this); _actionClose = new QAction(this); _actionQuit = new QAction(this); _actionAbout = new QAction(this); _actionOpenDirectory->setText(tr("&Open directory")); _actionOpenDirectory->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O)); _actionOpenFile->setText(tr("Open &file")); _actionClose->setText(tr("&Close")); _actionClose->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W)); _actionQuit->setText(tr("&Quit")); _actionQuit->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); _actionAbout->setText(tr("&About")); _actionAbout->setShortcut(QKeySequence(Qt::Key_F1)); /* Menu. */ _menuBar = new QMenuBar(this); _menuFile = new QMenu(_menuBar); _menuHelp = new QMenu(_menuBar); _menuBar->addAction(_menuFile->menuAction()); _menuBar->addAction(_menuHelp->menuAction()); _menuFile->addAction(_actionOpenDirectory); _menuFile->addAction(_actionOpenFile); _menuFile->addSeparator(); _menuFile->addAction(_actionClose); _menuFile->addSeparator(); _menuFile->addAction(_actionQuit); _menuFile->setTitle("&File"); _menuHelp->addAction(_actionAbout); _menuHelp->setTitle("&Help"); setMenuBar(_menuBar); /* Slots. */ QObject::connect(_actionOpenDirectory, &QAction::triggered, this, &MainWindow::slotOpenDirectory); QObject::connect(_actionOpenFile, &QAction::triggered, this, &MainWindow::slotOpenFile); QObject::connect(_actionClose, &QAction::triggered, this, &MainWindow::slotClose); QObject::connect(_actionQuit, &QAction::triggered, this, &MainWindow::slotQuit); QObject::connect(_actionAbout, &QAction::triggered, this, &MainWindow::slotAbout); /* Layout. */ _centralWidget = new QWidget(this); _centralLayout = new QGridLayout(_centralWidget); _splitterTopBottom = new QSplitter(_centralWidget); _splitterLeftRight = new QSplitter(_splitterTopBottom); _treeView = new QTreeView(_splitterLeftRight); QGroupBox *logBox = new QGroupBox(_splitterTopBottom); QWidget *previewWrapper = new QWidget(_splitterTopBottom); // Can't add a layout directly to a splitter. QVBoxLayout *previewWrapperLayout = new QVBoxLayout(previewWrapper); QFrame *resInfoFrame = new QFrame(previewWrapper); _resPreviewFrame = new QFrame(previewWrapper); _log = new QTextEdit(logBox); _log->setReadOnly(true); // Tree // 1:8 ratio; tree:preview/log { QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Preferred); sp.setHorizontalStretch(1); _treeView->setSizePolicy(sp); } // Preview wrapper previewWrapper->setLayout(previewWrapperLayout); previewWrapper->setContentsMargins(0, 0, 0, 0); previewWrapperLayout->setParent(previewWrapper); previewWrapperLayout->setMargin(0); previewWrapperLayout->addWidget(resInfoFrame); previewWrapperLayout->addWidget(_resPreviewFrame); { QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Preferred); sp.setHorizontalStretch(6); previewWrapper->setSizePolicy(sp); } // Log logBox->setTitle(tr("Log")); { QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred); sp.setVerticalStretch(1); logBox->setSizePolicy(sp); QHBoxLayout *hl = new QHBoxLayout(logBox); hl->addWidget(_log); hl->setContentsMargins(0, 5, 0, 0); } // Left/right splitter // 8:1 ratio, preview:log _splitterLeftRight->addWidget(_treeView); _splitterLeftRight->addWidget(previewWrapper); { QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Preferred); sp.setVerticalStretch(5); _splitterLeftRight->setSizePolicy(sp); } // Top/bottom splitter _splitterTopBottom->setOrientation(Qt::Vertical); _splitterTopBottom->addWidget(_splitterLeftRight); _splitterTopBottom->addWidget(logBox); // Resource info frame _panelManager->registerPanel(new PanelPreviewEmpty(nullptr), Aurora::kResourceNone); _panelManager->registerPanel(new PanelPreviewSound(nullptr), Aurora::kResourceSound); _panelManager->registerPanel(new PanelPreviewImage(nullptr), Aurora::kResourceImage); _panelManager->registerPanel(new PanelPreviewText(nullptr), Aurora::kResourceText); _panelManager->registerPanel(new PanelPreviewTable(nullptr), Aurora::kResourceTable); _panelManager->setItem(nullptr); PanelPreviewText *textPanel = static_cast<PanelPreviewText *>(_panelManager->getPanelByType(Aurora::kResourceText)); PanelPreviewTable *tablePanel = static_cast<PanelPreviewTable *>(_panelManager->getPanelByType(Aurora::kResourceTable)); QObject::connect(textPanel, &PanelPreviewText::log, this, &MainWindow::slotLog); QObject::connect(tablePanel, &PanelPreviewTable::log, this, &MainWindow::slotLog); _panelResourceInfo = new PanelResourceInfo(this); QObject::connect(_panelResourceInfo, &PanelResourceInfo::closeDirClicked, this, &MainWindow::slotClose); QObject::connect(_panelResourceInfo, &PanelResourceInfo::saveClicked, this, &MainWindow::saveItem); QObject::connect(_panelResourceInfo, &PanelResourceInfo::exportTGAClicked, this, &MainWindow::exportTGA); QObject::connect(_panelResourceInfo, &PanelResourceInfo::exportBMUMP3Clicked, this, &MainWindow::exportBMUMP3); QObject::connect(_panelResourceInfo, &PanelResourceInfo::exportWAVClicked, this, &MainWindow::exportWAV); QObject::connect(_panelResourceInfo, &PanelResourceInfo::log, this, &MainWindow::slotLog); resInfoFrame->setFrameShape(QFrame::StyledPanel); resInfoFrame->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed)); resInfoFrame->setFixedHeight(140); { QHBoxLayout *hl = new QHBoxLayout(resInfoFrame); hl->addWidget(_panelResourceInfo); } // Resource preview frame _resPreviewFrame->setFrameShape(QFrame::StyledPanel); { QHBoxLayout *hl = new QHBoxLayout(_resPreviewFrame); hl->setMargin(0); _panelManager->setLayout(hl); } setCentralWidget(_centralWidget); _centralLayout->addWidget(_splitterTopBottom); /* Open path. */ const QString qpath = QString::fromUtf8(path); _treeModel = std::make_unique<ResourceTree>(this, _treeView); _proxyModel = std::make_unique<ProxyModel>(this); _panelManager->setItem(nullptr); _status.setText("Idle..."); if (qpath.isEmpty()) _actionClose->setEnabled(false); else open(qpath); }
Settings::FaceManagementPage::FaceManagementPage(QWidget* parent) : QWidget(parent) { // The main layout QVBoxLayout* mainLayout = new QVBoxLayout(this); //////////////////////////////// // The detection settings box // //////////////////////////////// QGroupBox* detectionBox = new QGroupBox(i18n("Face detection")); mainLayout->addWidget(detectionBox); // The detection settings layout QGridLayout* detectionLayout = new QGridLayout(detectionBox); // Speed QLabel* speedLabel = new QLabel(i18n("Accuracy")); speedLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); detectionLayout->addWidget(speedLabel, 0, 1); QLabel* fastLabel = new QLabel(i18n("fast")); fastLabel->setAlignment(Qt::AlignVCenter | Qt::AlignRight); detectionLayout->addWidget(fastLabel, 1, 0); m_speedSlider = new QSlider(Qt::Horizontal); m_speedSlider->setMaximum(100); m_speedSlider->setTickInterval(10); m_speedSlider->setTickPosition(QSlider::TicksBothSides); detectionLayout->addWidget(m_speedSlider, 1, 1); QLabel* accurateLabel = new QLabel(i18n("accurate")); detectionLayout->addWidget(accurateLabel, 1, 2); // Sensitivity QLabel* sensitivityLabel = new QLabel(i18n("Sensitivity")); sensitivityLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); detectionLayout->addWidget(sensitivityLabel, 2, 1); QLabel* falsePositivesLabel = new QLabel(i18n("more false positives")); falsePositivesLabel->setAlignment(Qt::AlignVCenter | Qt::AlignRight); detectionLayout->addWidget(falsePositivesLabel, 3, 0); m_sensitivitySlider = new QSlider(Qt::Horizontal); m_sensitivitySlider->setMaximum(100); m_sensitivitySlider->setTickInterval(10); m_sensitivitySlider->setTickPosition(QSlider::TicksBothSides); detectionLayout->addWidget(m_sensitivitySlider, 3, 1); QLabel* missedFacesLabel = new QLabel(i18n("more missed faces")); detectionLayout->addWidget(missedFacesLabel, 3, 2); // Make the detection settings box as small as possible QSizePolicy detectionPolicy; detectionPolicy.setHorizontalPolicy(QSizePolicy::Minimum); detectionBox->setSizePolicy(detectionPolicy); ////////////////////////////////// // The recognition database box // ////////////////////////////////// QGroupBox* recognitionBox = new QGroupBox(i18n("Face recognition")); mainLayout->addWidget(recognitionBox); // The detection settings layout QGridLayout* recognitionLayout = new QGridLayout(recognitionBox); // List of all database entries m_databaseEntries = new QTreeWidget; m_databaseEntries->setColumnCount(2); m_databaseEntries->setHeaderLabels(QStringList() << i18n("Database entry") << i18n("Trained faces")); m_databaseEntries->setSortingEnabled(true); m_databaseEntries->setSelectionMode(QAbstractItemView::ExtendedSelection); clearDatabaseEntries(); recognitionLayout->addWidget(m_databaseEntries, 0, 0, 3, 1); // Take as much space as possible for the database entries list QSizePolicy databaseEntriesPolicy; databaseEntriesPolicy.setHorizontalPolicy(QSizePolicy::Expanding); databaseEntriesPolicy.setVerticalPolicy(QSizePolicy::Expanding); m_databaseEntries->setSizePolicy(databaseEntriesPolicy); connect(m_databaseEntries, SIGNAL(itemSelectionChanged()), this, SLOT(checkSelection())); // The "Delete selected" button m_deleteSelectedButton = new QPushButton(i18n("Delete selected")); m_deleteSelectedButton->setEnabled(false); recognitionLayout->addWidget(m_deleteSelectedButton, 1, 1); connect(m_deleteSelectedButton, SIGNAL(clicked()), this, SLOT(slotDeleteSelected())); // The "Erase database" button QPushButton* eraseButton = new QPushButton(i18n("Erase database")); recognitionLayout->addWidget(eraseButton, 2, 1); connect(eraseButton, SIGNAL(clicked()), this, SLOT(slotEraseDatabase())); QLabel* cautionLabel = new QLabel(i18n( "<b>Caution:</b> Changes to category names or category deletions are not " "adopted by the recognition database until the changes are saved!"), this); mainLayout->addWidget(cautionLabel); cautionLabel->setSizePolicy(detectionPolicy); }
Options::Options(QWidget *parent) : KDialogBase(Tabbed, i18n("Options"), Ok | Cancel, Ok, parent, 0, false){ fRemote = false; DCache = dc = opts->DCache; PCache = pc = opts->PCache; privCmd = prc = opts->privCmd; if (DCache >= Opts::SESSION) { cacheObj::clearDCache(); // clear dir caches if needed } if (PCache >= Opts::SESSION) { cacheObj::clearPCache(); // clear package caches if needed } { QVBox *page = addVBoxPage(i18n("&Types")); framet = new QGroupBox(1,Qt::Horizontal,i18n("Handle Package Type"), page); hh = new QGroupBox(1,Qt::Horizontal,i18n("Remote Host"),framet); huse = new QCheckBox(i18n("Use remote host (Debian APT only):"),hh); connect(huse, SIGNAL(clicked()), this, SLOT(useRemote())); hosts = new KComboBox( true, hh, "combo" ); KCompletion *comp = hosts->completionObject(); connect(hosts,SIGNAL(returnPressed(const QString&)),comp,SLOT(addItem(const QString&))); connect(hosts,SIGNAL(returnPressed()),this,SLOT(insHosts())); hosts->setMaxCount(20); hosts->setDuplicatesEnabled(false); hosts->setInsertionPolicy(QComboBox::AtTop); // hosts->setInsertionPolicy(QComboBox::NoInsertion); hosts->setTrapReturnKey(true); int i; QString msgStr; for (i = 0; i < kpinterfaceN; i++) { if (kpinterface[i]) { if (kpinterface[i]->hasProgram) { msgStr = kpinterface[i]->name; } else { msgStr = kpinterface[i]->name; msgStr = i18n("%1: %2 not found") .arg(kpinterface[i]->name) .arg(kpinterface[i]->errExe); } packageBox[i] = new QGroupBox(2,Qt::Horizontal,msgStr, framet, "box"); packageHandle[i] = new QCheckBox(i18n("Enable"), packageBox[i]); connect(packageHandle[i], SIGNAL(clicked()), this, SLOT(scanLocates())); locate[i] = new QPushButton(i18n("Location of Packages"),packageBox[i]); connect(locate[i], SIGNAL(clicked()), kpinterface[i], SLOT(setLocation())); } else { packageHandle[i] = 0; } } } { QVBox *page = addVBoxPage(i18n("Cac&he")); bc = new QButtonGroup(page); bc->setTitle(i18n("Cache Remote Package Folders")); connect( bc, SIGNAL(clicked(int)), SLOT(PDCache(int)) ); QVBoxLayout* vc = new QVBoxLayout( bc, 15, 10, "vc"); vc->addSpacing( bc->fontMetrics().height() ); dcache[0] = new QRadioButton(i18n("Always"),bc); vc->addWidget(dcache[0]); dcache[1] = new QRadioButton(i18n("During a session"),bc); vc->addWidget(dcache[1]); dcache[2] = new QRadioButton(i18n("Never"),bc); vc->addWidget(dcache[2]); bp = new QButtonGroup(page); bp->setTitle(i18n("Cache Remote Package Files")); connect( bp, SIGNAL(clicked(int)), SLOT(PPCache(int)) ); QVBoxLayout* vp = new QVBoxLayout( bp, 15, 10, "vp"); vp->addSpacing( bp->fontMetrics().height() ); pcache[0] = new QRadioButton(i18n("Always"),bp); vp->addWidget(pcache[0]); pcache[1] = new QRadioButton(i18n("During a session"),bp); vp->addWidget(pcache[1]); pcache[2] = new QRadioButton(i18n("Never"),bp); vp->addWidget(pcache[2]); QGroupBox* cd = new QGroupBox (1, Qt::Horizontal, i18n("Cache Folder"), page) ; cd->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed) ; cachedir = new KURLRequester("", cd, "cachedir"); } { QWidget *page = addVBoxPage(i18n("&Misc")); QVBoxLayout *vf = new QVBoxLayout(page); // vf->setSpacing(KDialog::spacingHint()); vf->setMargin(0); bs = new QButtonGroup(page); bs->setTitle(i18n("Execute Privileged Commands Using")); connect( bs, SIGNAL(clicked(int)), SLOT(PPrivs(int)) ); QVBoxLayout* vs = new QVBoxLayout( bs, 15, 10, "bs"); vs->addSpacing( bs->fontMetrics().height() ); privs[0] = new QRadioButton(i18n("su command"),bs); vs->addWidget(privs[0]); privs[1] = new QRadioButton(i18n("sudo command"),bs); vs->addWidget(privs[1]); privs[2] = new QRadioButton(i18n("ssh command"),bs); vs->addWidget(privs[2]); valid = new QCheckBox(i18n("Verify file list"), page, "valid"); vf->addWidget(valid,0,AlignLeft); pkgRead = new QCheckBox(i18n("Read information from all local package files"), page, "pkgr"); vf->addWidget(pkgRead,0,AlignLeft); vf->addSpacing(100); } connect( this, SIGNAL(okClicked()), SLOT(apply_slot()) ); connect( this, SIGNAL(closeClicked()), SLOT(cancel_slot()) ); connect( this, SIGNAL(cancelClicked()), SLOT(cancel_slot()) ); setValues(); }
AmarokConfigDialog::AmarokConfigDialog( QWidget *parent, const char* name, KConfigSkeleton *config ) : KConfigDialog( parent, name, config ) , m_engineConfig( 0 ) , m_opt4( 0 ) { setWFlags( WDestructiveClose ); // IMPORTANT Don't simply change the page names, they are used as identifiers in other parts of the app. m_opt1 = new Options1( 0, "General" ); m_opt2 = new Options2( 0, "Appearance" ); m_opt4 = new Options4( 0, "Playback" ); Options5 *opt5 = new Options5( 0, "OSD" ); QVBox *opt6 = new QVBox; m_opt7 = new Options7( 0, "Collection" ); Options8 *opt8 = new Options8( 0, "Scrobbler" ); QVBox *opt9 = new QVBox; // Sound System opt6->setName( "Engine" ); opt6->setSpacing( KDialog::spacingHint() ); QWidget *groupBox, *aboutEngineButton; groupBox = new QGroupBox( 2, Qt::Horizontal, i18n("Sound System"), opt6 ); m_engineConfigFrame = new QGroupBox( 1, Qt::Horizontal, opt6 ); m_soundSystem = new QComboBox( false, groupBox ); aboutEngineButton = new QPushButton( i18n("About"), groupBox ); QToolTip::add( m_soundSystem, i18n("Click to select the sound system to use for playback.") ); QToolTip::add( aboutEngineButton, i18n("Click to get the plugin information.") ); /// Populate the engine selection combo box KTrader::OfferList offers = PluginManager::query( "[X-KDE-amaroK-plugintype] == 'engine'" ); KTrader::OfferList::ConstIterator end( offers.end() ); for( KTrader::OfferList::ConstIterator it = offers.begin(); it != end; ++it ) { // Don't list the <no engine> (void engine) entry if it's not currenty active, // cause there's no point in choosing this engine (it's a dummy, after all). if( (*it)->property( "X-KDE-amaroK-name" ).toString() == "void-engine" && AmarokConfig::soundSystem() != "void-engine" ) continue; m_soundSystem->insertItem( (*it)->name() ); // Save name properties in QMap for lookup m_pluginName[(*it)->name()] = (*it)->property( "X-KDE-amaroK-name" ).toString(); m_pluginAmarokName[(*it)->property( "X-KDE-amaroK-name" ).toString()] = (*it)->name(); } // Collection #if !defined(USE_MYSQL) && !defined(USE_POSTGRESQL) m_opt7->databaseBox->hide(); #endif #ifndef USE_MYSQL //FIXME we do this because this widget breaks the Apply button (always enabled). //It breaks because it is set to type="password" in the .kcfg file. Setting to //type="string" also fixes this bug, but means the password is stored in plain //text. This is a temporary fix so that the majority of users get a fixed Apply //button. delete m_opt7->dbSetupFrame->kcfg_MySqlPassword2; #endif m_opt7->collectionFoldersBox->setColumns( 1 ); new CollectionSetup( m_opt7->collectionFoldersBox ); //TODO this widget doesn't update the apply/ok buttons // Media Devices opt9->setName( "Media Devices" ); opt9->setSpacing( KDialog::spacingHint() ); QVBox *topbox = new QVBox( opt9 ); topbox->setSpacing( KDialog::spacingHint() ); QGroupBox *mediaBox = new QGroupBox( 2, Qt::Horizontal, i18n("Media Devices"), topbox ); mediaBox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); QVBox *vbox = new QVBox( mediaBox ); vbox->setSpacing( KDialog::spacingHint() ); m_deviceManager = new MediumPluginManager( vbox ); QHBox *hbox = new QHBox( topbox ); hbox->setSpacing( KDialog::spacingHint() ); hbox->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ); KPushButton *autodetect = new KPushButton( i18n( "Autodetect Devices" ), hbox ); autodetect->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); connect( autodetect, SIGNAL(clicked()), m_deviceManager, SLOT(redetectDevices()) ); KPushButton *add = new KPushButton( i18n( "Add Device..." ), hbox ); add->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); connect( add, SIGNAL(clicked()), m_deviceManager, SLOT(newDevice()) ); QFrame *frame = new QFrame( topbox ); frame->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); // add pages addPage( m_opt1, i18n( "General" ), "misc", i18n( "Configure General Options" ) ); addPage( m_opt2, i18n( "Appearance" ), "colors", i18n( "Configure amaroK's Appearance" ) ); addPage( m_opt4, i18n( "Playback" ), "kmix", i18n( "Configure Playback" ) ); addPage( opt5, i18n( "OSD" ), "tv", i18n( "Configure On-Screen-Display" ) ); addPage( opt6, i18n( "Engine" ), "amarok", i18n( "Configure Engine" ) ); addPage( m_opt7, i18n( "Collection" ), amaroK::icon( "collection" ), i18n( "Configure Collection" ) ); addPage( opt8, i18n( "last.fm" ), "audioscrobbler", i18n( "Configure last.fm Support" ) ); addPage( opt9, i18n( "Media Devices" ), amaroK::icon( "device" ), i18n( "Configure Portable Player Support" ) ); // Show information labels (must be done after insertions) QObjectList *list = queryList( "QLabel", "infoPixmap" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setPixmap( QMessageBox::standardIcon( QMessageBox::Information ) ); delete list; //stop KFont Requesters getting stupidly large list = queryList( "QLabel", "m_sampleLabel" ); for( QObject *label = list->first(); label; label = list->next() ) static_cast<QLabel*>(label)->setMaximumWidth( 250 ); delete list; connect( m_deviceManager, SIGNAL(changed()), SLOT(updateButtons()) ); connect( m_soundSystem, SIGNAL(activated( int )), SLOT(updateButtons()) ); connect( aboutEngineButton, SIGNAL(clicked()), SLOT(aboutEngine()) ); connect( opt5, SIGNAL(settingsChanged()), SLOT(updateButtons()) ); //see options5.ui.h connect( m_opt2->styleComboBox, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt7->dbSetupFrame->databaseEngine, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt1->kComboBox_browser, SIGNAL( activated( int ) ), SLOT( updateButtons() ) ); connect( m_opt1->kLineEdit_customBrowser, SIGNAL( textChanged( const QString& ) ), SLOT( updateButtons() ) ); }
SetColValuesDialog::SetColValuesDialog( ScriptingEnv *env, QWidget* parent, Qt::WFlags fl ) : QDialog( parent, fl ), scripted(env) { setName( "SetColValuesDialog" ); setWindowTitle( tr( "QtiPlot - Set column values" ) ); setSizeGripEnabled(true); QHBoxLayout *hbox1 = new QHBoxLayout(); hbox1->addWidget(new QLabel(tr("For row (i)"))); start = new QSpinBox(); start->setMinValue(1); hbox1->addWidget(start); hbox1->addWidget(new QLabel(tr("to"))); end = new QSpinBox(); end->setMinValue(1); hbox1->addWidget(end); if (sizeof(int)==2) { // 16 bit signed integer start->setMaxValue(0x7fff); end->setMaxValue(0x7fff); } else { // 32 bit signed integer start->setMaxValue(0x7fffffff); end->setMaxValue(0x7fffffff); } QGridLayout *gl1 = new QGridLayout(); functions = new QComboBox(false); gl1->addWidget(functions, 0, 0); btnAddFunction = new QPushButton(tr( "Add function" )); gl1->addWidget(btnAddFunction, 0, 1); boxColumn = new QComboBox(false); gl1->addWidget(boxColumn, 1, 0); btnAddCol = new QPushButton(tr( "Add column" )); gl1->addWidget(btnAddCol, 1, 1); QHBoxLayout *hbox3 = new QHBoxLayout(); hbox3->addStretch(); buttonPrev = new QPushButton("&<<"); hbox3->addWidget(buttonPrev); buttonNext = new QPushButton("&>>"); hbox3->addWidget(buttonNext); gl1->addLayout(hbox3, 2, 0); addCellButton = new QPushButton(tr( "Add cell" )); gl1->addWidget(addCellButton, 2, 1); QGroupBox *gb = new QGroupBox(); QVBoxLayout *vbox1 = new QVBoxLayout(); vbox1->addLayout(hbox1); vbox1->addLayout(gl1); gb->setLayout(vbox1); gb->setSizePolicy(QSizePolicy (QSizePolicy::Preferred, QSizePolicy::Preferred)); explain = new QTextEdit(); explain->setReadOnly (true); explain->setSizePolicy(QSizePolicy (QSizePolicy::Preferred, QSizePolicy::Preferred)); QPalette palette = explain->palette(); palette.setColor(QPalette::Active, QPalette::Base, Qt::lightGray); explain->setPalette(palette); QHBoxLayout *hbox2 = new QHBoxLayout(); hbox2->addWidget(explain); hbox2->addWidget(gb); commands = new ScriptEdit( scriptEnv); QVBoxLayout *vbox2 = new QVBoxLayout(); btnApply = new QPushButton(tr( "&Apply" )); vbox2->addWidget(btnApply); btnCancel = new QPushButton(tr( "&Close" )); vbox2->addWidget(btnCancel); vbox2->addStretch(); QHBoxLayout *hbox4 = new QHBoxLayout(); hbox4->addWidget(commands); hbox4->addLayout(vbox2); QVBoxLayout* vbox3 = new QVBoxLayout(); vbox3->addLayout(hbox2); #ifdef SCRIPTING_PYTHON boxMuParser = NULL; if (env->name() != QString("muParser")){ boxMuParser = new QCheckBox(tr("Use built-in muParser (much faster)")); boxMuParser->setChecked(true); vbox3->addWidget(boxMuParser); } #endif colNameLabel = new QLabel(); vbox3->addWidget(colNameLabel); vbox3->addLayout(hbox4); setLayout(vbox3); setFocusProxy (commands); commands->setFocus(); functions->insertStringList(scriptEnv->mathFunctions(), -1); if (functions->count() > 0) insertExplain(0); connect(btnAddFunction, SIGNAL(clicked()),this, SLOT(insertFunction())); connect(btnAddCol, SIGNAL(clicked()),this, SLOT(insertCol())); connect(addCellButton, SIGNAL(clicked()),this, SLOT(insertCell())); connect(btnApply, SIGNAL(clicked()),this, SLOT(apply())); connect(btnCancel, SIGNAL(clicked()),this, SLOT(close())); connect(functions, SIGNAL(activated(int)),this, SLOT(insertExplain(int))); connect(buttonPrev, SIGNAL(clicked()), this, SLOT(prevColumn())); connect(buttonNext, SIGNAL(clicked()), this, SLOT(nextColumn())); }
void QtDensity::setupDisplay(void) { QWidget *window = new QWidget; window->setWindowTitle("Qt and RInside demo: density estimation"); QSpinBox *spinBox = new QSpinBox; QSlider *slider = new QSlider(Qt::Horizontal); spinBox->setRange(5, 200); slider->setRange(5, 200); QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); spinBox->setValue(m_bw); QObject::connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(getBandwidth(int))); QLabel *cmdLabel = new QLabel("R command for random data creation"); QLineEdit *cmdEntry = new QLineEdit(m_cmd); QObject::connect(cmdEntry, SIGNAL(textEdited(QString)), this, SLOT(getRandomDataCmd(QString))); QObject::connect(cmdEntry, SIGNAL(editingFinished()), this, SLOT(runRandomDataCmd())); QGroupBox *kernelRadioBox = new QGroupBox("Density Estimation kernel"); QRadioButton *radio1 = new QRadioButton("&Gaussian"); QRadioButton *radio2 = new QRadioButton("&Epanechnikov"); QRadioButton *radio3 = new QRadioButton("&Rectangular"); QRadioButton *radio4 = new QRadioButton("&Triangular"); QRadioButton *radio5 = new QRadioButton("&Cosine"); radio1->setChecked(true); QVBoxLayout *vbox = new QVBoxLayout; vbox->addWidget(radio1); vbox->addWidget(radio2); vbox->addWidget(radio3); vbox->addWidget(radio4); vbox->addWidget(radio5); kernelRadioBox->setMinimumSize(260,140); kernelRadioBox->setMaximumSize(260,140); kernelRadioBox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); kernelRadioBox->setLayout(vbox); QButtonGroup *kernelGroup = new QButtonGroup; kernelGroup->addButton(radio1, 0); kernelGroup->addButton(radio2, 1); kernelGroup->addButton(radio3, 2); kernelGroup->addButton(radio4, 3); kernelGroup->addButton(radio5, 4); QObject::connect(kernelGroup, SIGNAL(buttonClicked(int)), this, SLOT(getKernel(int))); m_svg = new QSvgWidget(); runRandomDataCmd(); // also calls plot() QGroupBox *estimationBox = new QGroupBox("Density estimation bandwidth (scaled by 100)"); QHBoxLayout *spinners = new QHBoxLayout; spinners->addWidget(spinBox); spinners->addWidget(slider); QVBoxLayout *topright = new QVBoxLayout; topright->addLayout(spinners); topright->addWidget(cmdLabel); topright->addWidget(cmdEntry); estimationBox->setMinimumSize(360,140); estimationBox->setMaximumSize(360,140); estimationBox->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); estimationBox->setLayout(topright); QHBoxLayout *upperlayout = new QHBoxLayout; upperlayout->addWidget(kernelRadioBox); upperlayout->addWidget(estimationBox); QHBoxLayout *lowerlayout = new QHBoxLayout; lowerlayout->addWidget(m_svg); QVBoxLayout *outer = new QVBoxLayout; outer->addLayout(upperlayout); outer->addLayout(lowerlayout); window->setLayout(outer); window->show(); }
MainWindow::MainWindow( QWidget *parent ) : QWidget(parent), adChannel(0), psthLength(1000), psthBinw(20), spikeThres(1), psthOn(0), spikeDetected(false), time(0), linearAverage(0) { // initialize comedi const char *filename = "/dev/comedi0"; /* open the device */ if( (dev = comedi_open(filename)) == 0 ) { comedi_perror(filename); exit(1); } // do not produce NAN for out of range behaviour comedi_set_global_oor_behavior(COMEDI_OOR_NUMBER); maxdata = comedi_get_maxdata(dev, COMEDI_SUB_DEVICE, 0); crange = comedi_get_range(dev,COMEDI_SUB_DEVICE,0,0); numChannels = comedi_get_n_channels(dev, COMEDI_SUB_DEVICE); chanlist = new unsigned[numChannels]; /* Set up channel list */ for( int i=0; i<numChannels; i++ ) chanlist[i] = CR_PACK(i, COMEDI_RANGE_ID, AREF_GROUND); int ret = comedi_get_cmd_generic_timed( dev, COMEDI_SUB_DEVICE, &comediCommand, numChannels, (int)(1e9/(SAMPLING_RATE)) ); if(ret < 0) { printf("comedi_get_cmd_generic_timed failed\n"); exit(-1); } /* Modify parts of the command */ comediCommand.chanlist = chanlist; comediCommand.stop_src = TRIG_NONE; comediCommand.stop_arg = 0; /* comedi_command_test() tests a command to see if the * trigger sources and arguments are valid for the subdevice. * If a trigger source is invalid, it will be logically ANDed * with valid values (trigger sources are actually bitmasks), * which may or may not result in a valid trigger source. * If an argument is invalid, it will be adjusted to the * nearest valid value. In this way, for many commands, you * can test it multiple times until it passes. Typically, * if you can't get a valid command in two tests, the original * command wasn't specified very well. */ ret = comedi_command_test(dev, &comediCommand); if(ret < 0) { comedi_perror("comedi_command_test"); exit(-1); } fprintf(stderr, "first test returned %d\n", ret); ret = comedi_command_test(dev, &comediCommand); if(ret < 0) { comedi_perror("comedi_command_test"); exit(-1); } fprintf(stderr, "second test returned %d\n", ret); if(ret != 0) { fprintf(stderr,"Error preparing command\n"); exit(-1); } // the timing is done channel by channel // this means that the actual sampling rate is divided by // number of channels if ((comediCommand.convert_src == TRIG_TIMER)&&(comediCommand.convert_arg)) { sampling_rate=(((double)1E9 / comediCommand.convert_arg)/numChannels); } // the timing is done scan by scan (all channels at once) // the sampling rate is equivalent of the scan_begin_arg if ((comediCommand.scan_begin_src == TRIG_TIMER)&&(comediCommand.scan_begin_arg)) { sampling_rate=(double)1E9 / comediCommand.scan_begin_arg; } // 50Hz or 60Hz mains notch filter iirnotch = new Iir::Butterworth::BandStop<IIRORDER>; assert( iirnotch != NULL ); iirnotch->setup (IIRORDER, sampling_rate, NOTCH_F, NOTCH_F/10.0); /* start the command */ ret = comedi_command(dev, &comediCommand); if(ret < 0) { comedi_perror("comedi_command"); exit(1); } int subdev_flags = comedi_get_subdevice_flags(dev, COMEDI_SUB_DEVICE); if( (sigmaBoard = subdev_flags & SDF_LSAMPL) ) readSize = sizeof(lsampl_t) * numChannels; else readSize = sizeof(sampl_t) * numChannels; // Initialize data for plots for(int i=0; i<MAX_PSTH_LENGTH; i++) { xData[i] = i; // time axis yData[i] = 0; timeData[i] = double(i)*psthBinw; // psth time axis spikeCountData[i] = 0; psthData[i] = 0; } // the gui, straight forward QT/Qwt resize(640,420); QHBoxLayout *mainLayout = new QHBoxLayout( this ); QVBoxLayout *controlLayout = new QVBoxLayout; mainLayout->addLayout(controlLayout); QVBoxLayout *plotLayout = new QVBoxLayout; plotLayout->addStrut(400); mainLayout->addLayout(plotLayout); // two plots RawDataPlot = new DataPlot(xData, yData, psthLength, crange->max, crange->min, this); plotLayout->addWidget(RawDataPlot); RawDataPlot->show(); plotLayout->addSpacing(20); MyPsthPlot = new PsthPlot(timeData, psthData, psthLength/psthBinw, this); plotLayout->addWidget(MyPsthPlot); MyPsthPlot->show(); /*---- Buttons ----*/ // AD group QGroupBox *ADcounterGroup = new QGroupBox( "A/D Channel", this ); QVBoxLayout *ADcounterLayout = new QVBoxLayout; ADcounterGroup->setLayout(ADcounterLayout); ADcounterGroup->setAlignment(Qt::AlignJustify); ADcounterGroup->setSizePolicy( QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed) ); controlLayout->addWidget( ADcounterGroup ); QwtCounter *cntChannel = new QwtCounter(ADcounterGroup); cntChannel->setRange(0, numChannels-1, 1); cntChannel->setValue(adChannel); ADcounterLayout->addWidget(cntChannel); connect(cntChannel, SIGNAL(valueChanged(double)), SLOT(slotSetChannel(double))); filter50HzCheckBox = new QCheckBox( "50Hz filter" ); filter50HzCheckBox->setEnabled( true ); ADcounterLayout->addWidget(filter50HzCheckBox); // psth functions QGroupBox *PSTHfunGroup = new QGroupBox( "Actions", this ); QVBoxLayout *PSTHfunLayout = new QVBoxLayout; PSTHfunGroup->setLayout(PSTHfunLayout); PSTHfunGroup->setAlignment(Qt::AlignJustify); PSTHfunGroup->setSizePolicy( QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed) ); controlLayout->addWidget( PSTHfunGroup ); averagePsth = new QComboBox(PSTHfunGroup); averagePsth->addItem(tr("PSTH")); averagePsth->addItem(tr("VEP")); PSTHfunLayout->addWidget(averagePsth); connect( averagePsth, SIGNAL(currentIndexChanged(int)), SLOT(slotAveragePsth(int)) ); triggerPsth = new QPushButton(PSTHfunGroup); triggerPsth->setText("PSTH on"); triggerPsth->setCheckable(true); PSTHfunLayout->addWidget(triggerPsth); connect(triggerPsth, SIGNAL(clicked()), SLOT(slotTriggerPsth())); QPushButton *clearPsth = new QPushButton(PSTHfunGroup); clearPsth->setText("clear data"); PSTHfunLayout->addWidget(clearPsth); connect(clearPsth, SIGNAL(clicked()), SLOT(slotClearPsth())); QPushButton *savePsth = new QPushButton(PSTHfunGroup); savePsth->setText("save data"); PSTHfunLayout->addWidget(savePsth); connect(savePsth, SIGNAL(clicked()), SLOT(slotSavePsth())); // psth params QGroupBox *PSTHcounterGroup = new QGroupBox( "Parameters", this ); QVBoxLayout *PSTHcounterLayout = new QVBoxLayout; PSTHcounterGroup->setLayout(PSTHcounterLayout); PSTHcounterGroup->setAlignment(Qt::AlignJustify); PSTHcounterGroup->setSizePolicy( QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed) ); controlLayout->addWidget( PSTHcounterGroup ); QLabel *psthLengthLabel = new QLabel("Sweep length", PSTHcounterGroup); PSTHcounterLayout->addWidget(psthLengthLabel); QwtCounter *cntSLength = new QwtCounter(PSTHcounterGroup); cntSLength->setNumButtons(2); cntSLength->setIncSteps(QwtCounter::Button1, 10); cntSLength->setIncSteps(QwtCounter::Button2, 100); cntSLength->setRange(1, MAX_PSTH_LENGTH, 1); cntSLength->setValue(psthLength); PSTHcounterLayout->addWidget(cntSLength); connect(cntSLength, SIGNAL(valueChanged(double)), SLOT(slotSetPsthLength(double))); QLabel *binwidthLabel = new QLabel("Binwidth", PSTHcounterGroup); PSTHcounterLayout->addWidget(binwidthLabel); cntBinw = new QwtCounter(PSTHcounterGroup); cntBinw->setNumButtons(2); cntBinw->setIncSteps(QwtCounter::Button1, 1); cntBinw->setIncSteps(QwtCounter::Button2, 10); cntBinw->setRange(1, 100, 1); cntBinw->setValue(psthBinw); PSTHcounterLayout->addWidget(cntBinw); connect(cntBinw, SIGNAL(valueChanged(double)), SLOT(slotSetPsthBinw(double))); QLabel *thresholdLabel = new QLabel("Spike Threshold", PSTHcounterGroup); PSTHcounterLayout->addWidget(thresholdLabel); editSpikeT = new QTextEdit("0"); QFont editFont("Courier",14); QFontMetrics editMetrics(editFont); editSpikeT->setMaximumHeight ( editMetrics.height()*1.2 ); editSpikeT->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); editSpikeT->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); editSpikeT->setFont(editFont); PSTHcounterLayout->addWidget(editSpikeT); connect(editSpikeT, SIGNAL(textChanged()), SLOT(slotSetSpikeThres())); thresholdMarker = new QwtPlotMarker(); thresholdMarker->setValue(0,0); thresholdMarker->attach(RawDataPlot); thresholdMarker->setLineStyle(QwtPlotMarker::HLine); // Generate timer event every 50ms (void)startTimer(50); }
MatrixValuesDialog::MatrixValuesDialog( ScriptingEnv *env, QWidget* parent, Qt::WFlags fl ) : QDialog( parent, fl ), scripted(env) { setName( "MatrixValuesDialog" ); setWindowTitle( tr( "QtiPlot - Set Matrix Values" ) ); setSizeGripEnabled(true); setAttribute(Qt::WA_DeleteOnClose); QGridLayout *gl1 = new QGridLayout(); gl1->addWidget(new QLabel(tr("For row (i)")), 0, 0); startRow = new QSpinBox(); startRow->setRange(1, INT_MAX); gl1->addWidget(startRow, 0, 1); gl1->addWidget(new QLabel(tr("to")), 0, 2); endRow = new QSpinBox(); endRow->setRange(1, INT_MAX); gl1->addWidget(endRow, 0, 3); gl1->addWidget(new QLabel(tr("For col (j)")), 1, 0); startCol = new QSpinBox(); startCol->setRange(1, INT_MAX); gl1->addWidget(startCol, 1, 1); gl1->addWidget(new QLabel(tr("to")), 1, 2); endCol = new QSpinBox(); endCol->setRange(1, INT_MAX); gl1->addWidget(endCol, 1, 3); functions = new QComboBox(false); btnAddFunction = new QPushButton(tr( "Add &Function" )); btnAddCell = new QPushButton(tr( "Add Ce&ll" )); QHBoxLayout *hbox1 = new QHBoxLayout(); hbox1->addWidget(functions); hbox1->addWidget(btnAddFunction); hbox1->addWidget(btnAddCell); QVBoxLayout *vbox1 = new QVBoxLayout(); vbox1->addLayout(gl1); vbox1->addLayout(hbox1); QGroupBox *gb = new QGroupBox(); gb->setLayout(vbox1); gb->setSizePolicy(QSizePolicy (QSizePolicy::Preferred, QSizePolicy::Preferred)); explain = new QTextEdit(); explain->setReadOnly(true); explain->setSizePolicy(QSizePolicy (QSizePolicy::Preferred, QSizePolicy::Preferred)); QPalette palette = explain->palette(); palette.setColor(QPalette::Active, QPalette::Base, Qt::lightGray); explain->setPalette(palette); QHBoxLayout *hbox2 = new QHBoxLayout(); hbox2->addWidget(explain); hbox2->addWidget(gb); QHBoxLayout *hbox3 = new QHBoxLayout(); commands = new ScriptEdit( scriptEnv); commands->setTabStopWidth(((ApplicationWindow *)parent)->d_notes_tab_length); commands->setFont(((ApplicationWindow *)parent)->d_notes_font); commands->setFocus(); hbox3->addWidget(commands); QVBoxLayout *vbox2 = new QVBoxLayout(); btnApply = new QPushButton(tr( "&Apply" )); vbox2->addWidget(btnApply); btnCancel = new QPushButton(tr( "&Close" )); vbox2->addWidget(btnCancel); vbox2->addStretch(); hbox3->addLayout(vbox2); QVBoxLayout* vbox3 = new QVBoxLayout(this); vbox3->addLayout(hbox2); #ifdef SCRIPTING_PYTHON boxMuParser = NULL; if (scriptEnv->name() != QString("muParser")){ boxMuParser = new QCheckBox(tr("Use built-in muParser (much faster)")); boxMuParser->setChecked(true); vbox3->addWidget(boxMuParser); } #endif vbox3->addWidget(new QLabel(tr( "Cell(i,j)=" ))); vbox3->addLayout(hbox3); functions->insertStringList(scriptEnv->mathFunctions(), -1); insertExplain(0); connect(btnAddCell, SIGNAL(clicked()), this, SLOT(addCell())); connect(btnAddFunction, SIGNAL(clicked()), this, SLOT(insertFunction())); connect(btnApply, SIGNAL(clicked()), this, SLOT(apply())); connect(btnCancel, SIGNAL(clicked()), this, SLOT(close())); connect(functions, SIGNAL(activated(int)), this, SLOT(insertExplain(int))); }
void BodyLinkViewImpl::setupWidgets() { QHBoxLayout* hbox; QVBoxLayout* vbox; QGridLayout* grid; QWidget* topWidget = new QWidget(); topWidget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); QVBoxLayout* topVBox = new QVBoxLayout(); //topVBox->setContentsMargins(4); topWidget->setLayout(topVBox); scrollArea.setFrameShape(QFrame::NoFrame); scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea.setWidget(topWidget); QVBoxLayout* baseLayout = new QVBoxLayout(); scrollArea.setWidgetResizable(true); baseLayout->addWidget(&scrollArea); self->setLayout(baseLayout); //nameLabel.setAlignment(Qt::AlignCenter); nameLabel.setTextInteractionFlags(Qt::TextSelectableByMouse); topVBox->addWidget(&nameLabel, 0, Qt::AlignCenter); topVBox->addSpacing(4); QFrame* frame = new QFrame(); topVBox->addWidget(frame); grid = new QGridLayout(); //grid->setContentsMargins(4); grid->setVerticalSpacing(4); grid->setColumnStretch(1, 1); grid->setColumnStretch(3, 1); grid->addWidget(new QLabel(_("Index:")), 0, 0); grid->addWidget(&linkIndexLabel, 0, 1); grid->addWidget(new QLabel(_("Joint ID:")), 0, 2); grid->addWidget(&jointIdLabel, 0, 3); grid->addWidget(new QLabel(_("Joint Type:")), 1, 0); jointTypeLabel.setTextInteractionFlags(Qt::TextSelectableByMouse); grid->addWidget(&jointTypeLabel, 1, 1, 1, 3); grid->addWidget(new QLabel(_("Joint Axis:")), 2, 0); jointAxisLabel.setTextInteractionFlags(Qt::TextSelectableByMouse); grid->addWidget(&jointAxisLabel, 2, 1, 1, 3); frame->setLayout(grid); topVBox->addSpacing(4); QGroupBox* linkBox = new QGroupBox(); linkBox->setTitle(_("Link Position [m],[deg]")); linkBox->setAlignment(Qt::AlignCenter); vbox = new QVBoxLayout(); linkBox->setLayout(vbox); grid = new QGridLayout(); //grid->setContentsMargins(4); grid->setVerticalSpacing(4); vbox->addLayout(grid); static const char* xyzLabels[] = {"X", "Y", "Z"}; for(int i=0; i < 3; ++i){ grid->addWidget(new QLabel(xyzLabels[i], frame), 0, i, Qt::AlignCenter); grid->addWidget(&xyzSpin[i], 1, i); //xyzSpin[i].set_width_chars(7); xyzSpin[i].setAlignment(Qt::AlignCenter); xyzSpin[i].setDecimals(4); xyzSpin[i].setRange(-99.9999, 99.9999); xyzSpin[i].setSingleStep(0.0001); stateWidgetConnections.add( xyzSpin[i].sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::onXyzChanged, this))); } static const char* rpyLabels[] = {"R", "P", "Y"}; for(int i=0; i < 3; ++i){ grid->addWidget(new QLabel(rpyLabels[i], frame), 2, i, Qt::AlignCenter); grid->addWidget(&rpySpin[i], 3, i); rpySpin[i].setAlignment(Qt::AlignCenter); rpySpin[i].setDecimals(1); rpySpin[i].setRange(-360.0, 360.0); rpySpin[i].setSingleStep(0.1); stateWidgetConnections.add( rpySpin[i].sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::onRpyChanged, this))); } attMatrixCheck.setText(_("Matrix")); attMatrixCheck.sigToggled().connect( boost::bind(&BodyLinkViewImpl::onAttMatrixCheckToggled, this)); vbox->addWidget(&attMatrixCheck, 0, Qt::AlignCenter); grid = new QGridLayout(); grid->setHorizontalSpacing(10); //grid->setContentsMargins(4); grid->setVerticalSpacing(4); hbox = new QHBoxLayout(); attMatrixBox.setLayout(hbox); hbox->addStretch(); hbox->addWidget(new QLabel("R = ")); hbox->addWidget(new VSeparator()); hbox->addLayout(grid); hbox->addWidget(new VSeparator()); hbox->addStretch(); for(int i=0; i < 3; ++i){ for(int j=0; j < 3; ++j){ grid->addWidget(&attLabels[i][j], i, j); attLabels[i][j].setText("0.0"); } } vbox->addWidget(&attMatrixBox); attMatrixBox.hide(); topVBox->addWidget(linkBox); topVBox->addSpacing(4); qBox.setAlignment(Qt::AlignHCenter); topVBox->addWidget(&qBox); vbox = new QVBoxLayout(); //vbox->setContentsMargins(4); qBox.setLayout(vbox); hbox = new QHBoxLayout(); vbox->addLayout(hbox); hbox->addStretch(); hbox->addWidget(&qMinLabel); qSpin.setAlignment(Qt::AlignCenter); hbox->addWidget(&qSpin); hbox->addWidget(&qMaxLabel); hbox->addStretch(); qSlider.setOrientation(Qt::Horizontal); vbox->addWidget(&qSlider); stateWidgetConnections.add( qSpin.sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::on_qSpinChanged, this, _1))); stateWidgetConnections.add( qSlider.sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::on_qSliderChanged, this, _1))); topVBox->addSpacing(4); dqBox.setAlignment(Qt::AlignHCenter); topVBox->addWidget(&dqBox); hbox = new QHBoxLayout(); //hbox->setContentsMargins(4); // min velocity spin hbox->addStretch(); hbox->addWidget(new QLabel(_("min"))); dqMaxSpin.setAlignment(Qt::AlignCenter); hbox->addWidget(&dqMinSpin); // velocity label hbox->addWidget(&dqLabel); // max velocity spin dqMinSpin.setAlignment(Qt::AlignCenter); hbox->addWidget(&dqMaxSpin); hbox->addWidget(new QLabel(_("max"))); hbox->addStretch(); dqBox.setLayout(hbox); propertyWidgetConnections.add( dqMinSpin.sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::on_dqLimitChanged, this, true))); propertyWidgetConnections.add( dqMaxSpin.sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::on_dqLimitChanged, this, false))); topVBox->addSpacing(4); QGroupBox* collisionBox = new QGroupBox(); collisionBox->setTitle(_("Collisions")); collisionBox->setAlignment(Qt::AlignCenter); collisionBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); vbox = new QVBoxLayout(); collisionBox->setLayout(vbox); //vbox->setContentsMargins(4); vbox->setSpacing(4); worldCollisionsLabel.setTextInteractionFlags(Qt::TextSelectableByMouse); worldCollisionsLabel.setAlignment(Qt::AlignCenter); worldCollisionsLabel.setWordWrap(true); vbox->addWidget(&worldCollisionsLabel); hbox = new QHBoxLayout(); hbox->setSpacing(4); hbox->addWidget(new HSeparator(), 1); hbox->addWidget(new QLabel(_("Self-Collisions")), 0); hbox->addWidget(new HSeparator(), 1); vbox->addLayout(hbox); selfCollisionsLabel.setTextInteractionFlags(Qt::TextSelectableByMouse); selfCollisionsLabel.setAlignment(Qt::AlignCenter); selfCollisionsLabel.setWordWrap(true); vbox->addWidget(&selfCollisionsLabel); topVBox->addWidget(collisionBox); topVBox->addSpacing(4); zmpBox.setTitle(_("ZMP [m]")); zmpBox.setAlignment(Qt::AlignCenter); grid = new QGridLayout(); //grid->setContentsMargins(4); grid->setVerticalSpacing(2); zmpBox.setLayout(grid); for(int i=0; i < 3; ++i){ grid->addWidget(new QLabel(xyzLabels[i]), 0, i, Qt::AlignCenter); grid->addWidget(&zmpXyzSpin[i], 1, i); //zmpXyzSpin[i].set_width_chars(7); zmpXyzSpin[i].setAlignment(Qt::AlignCenter); zmpXyzSpin[i].setDecimals(4); zmpXyzSpin[i].setRange(-99.9999, 99.9999); zmpXyzSpin[i].setSingleStep(0.0001); stateWidgetConnections.add( zmpXyzSpin[i].sigValueChanged().connect( boost::bind(&BodyLinkViewImpl::onZmpXyzChanged, this))); } topVBox->addWidget(&zmpBox); zmpBox.hide(); }