OSItemList::OSItemList(OSVectorController* vectorController, bool addScrollArea, QWidget * parent) : OSItemSelector(parent), m_vectorController(vectorController), m_vLayout(nullptr), m_selectedItem(nullptr), m_itemsDraggable(false), m_itemsRemoveable(false), m_type(OSItemType::ListItem), m_dirty(false) { // for now we will allow this item list to manage memory of OS_ASSERT(!m_vectorController->parent()); m_vectorController->setParent(this); this->setObjectName("GrayWidget"); QString style; style.append("QWidget#GrayWidget {"); style.append(" background: #E6E6E6;"); style.append(" border-bottom: 1px solid black;"); style.append("}"); setStyleSheet(style); auto outerVLayout = new QVBoxLayout(); outerVLayout->setContentsMargins(0,0,0,0); this->setLayout(outerVLayout); auto outerWidget = new QWidget(); if (addScrollArea){ auto scrollArea = new QScrollArea(); scrollArea->setFrameStyle(QFrame::NoFrame); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); outerVLayout->addWidget(scrollArea); scrollArea->setWidget(outerWidget); scrollArea->setWidgetResizable(true); }else{ outerVLayout->addWidget(outerWidget); } m_vLayout = new QVBoxLayout(); outerWidget->setLayout(m_vLayout); m_vLayout->setContentsMargins(0,0,0,0); m_vLayout->setSpacing(0); m_vLayout->addStretch(); connect(this, &OSItemList::itemsRequested, vectorController, &OSVectorController::reportItems); /* Vector controller does not handle removing items in list from model * connect(this, &OSItemList::itemRemoveClicked, vectorController, &OSVectorController::removeItem); */ connect(vectorController, &OSVectorController::itemIds, this, &OSItemList::setItemIds); connect(vectorController, &OSVectorController::selectedItemId, this, &OSItemList::selectItemId); // allow time for OSDocument to finish constructing QTimer::singleShot(0, vectorController, SLOT(reportItems())); }
void CropLasBox::p_setupUi () { setTitle("Crop and merge LAS clouds"); addWidget(new QLabel("Input cloud (.las) files")); m_inputs = new AppendableLineEdit; addWidget(m_inputs); addWidget(new QLabel("Output cloud (.pcd) file")); m_savename = new DroppableLineEdit; addWidget(m_savename); addWidget(new QLabel("Desired bounding box (UTM)")); m_xmin = util::setupSpinBox(addInput<SpinBoxExpert>("x min "), 353151, 20, 354422, 353551); m_ymin = util::setupSpinBox(addInput<SpinBoxExpert>("y min "), 5260480, 20, 5261630, 5260860); m_xmax = util::setupSpinBox(addInput<SpinBoxExpert>("x max "), 353151, 20, 354422, 354022); m_ymax = util::setupSpinBox(addInput<SpinBoxExpert>("y max "), 5260480, 20, 5261630, 5261230); addWidget(new HLine); m_decimate = util::setupSpinBox(addInput<QSpinBox>("decimate "), 1, 1, 100, 1); m_kneigh = util::setupSpinBox(addInput<QSpinBox>("k neigh. "), 4, 1, 20, 10); btn_crop = new QPushButton(this); btn_crop->setText("Crop & merge"); addWidget(btn_crop); addWidget(new HLine); addWidget(new QLabel("Remove duplicates from:")); m_removable = new DroppableLineEdit; addWidget(m_removable); btn_remove_duplicates = new QPushButton; btn_remove_duplicates->setText("Remove duplicates"); addWidget(btn_remove_duplicates); }
MeshifyPopup::MeshifyPopup() : DVGui::Dialog(TApp::instance()->getMainWindow(), true, false, "MeshifyPopup") , m_r(-1) , m_c(-1) { setWindowTitle(tr("Create Mesh")); setLabelWidth(0); setModal(false); setTopMargin(0); setTopSpacing(0); beginVLayout(); QSplitter *splitter = new QSplitter(Qt::Vertical); splitter->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); addWidget(splitter); endVLayout(); //------------------------- Top Layout -------------------------- QScrollArea *scrollArea = new QScrollArea(splitter); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); scrollArea->setMinimumWidth(450); splitter->addWidget(scrollArea); splitter->setStretchFactor(0, 1); QFrame *topWidget = new QFrame(scrollArea); scrollArea->setWidget(topWidget); QGridLayout *topLayout = new QGridLayout(topWidget); // Needed to justify at top topWidget->setLayout(topLayout); //------------------------- Parameters -------------------------- int row = 0; QLabel *edgesLengthLabel = new QLabel(tr("Mesh Edges Length:")); topLayout->addWidget(edgesLengthLabel, row, 0, Qt::AlignRight | Qt::AlignVCenter); m_edgesLength = new DVGui::MeasuredDoubleField; m_edgesLength->setMeasure("length.x"); m_edgesLength->setRange(0.0, 1.0); // In inches (standard unit) m_edgesLength->setValue(0.2); topLayout->addWidget(m_edgesLength, row++, 1); QLabel *rasterizationDpiLabel = new QLabel(tr("Rasterization DPI:")); topLayout->addWidget(rasterizationDpiLabel, row, 0, Qt::AlignRight | Qt::AlignVCenter); m_rasterizationDpi = new DVGui::DoubleLineEdit; m_rasterizationDpi->setRange(1.0, (std::numeric_limits<double>::max)()); m_rasterizationDpi->setValue(300.0); topLayout->addWidget(m_rasterizationDpi, row++, 1); QLabel *shapeMarginLabel = new QLabel(tr("Mesh Margin (pixels):")); topLayout->addWidget(shapeMarginLabel, row, 0, Qt::AlignRight | Qt::AlignVCenter); m_margin = new DVGui::IntLineEdit; m_margin->setRange(2, (std::numeric_limits<int>::max)()); m_margin->setValue(5); topLayout->addWidget(m_margin, row++, 1); connect(m_edgesLength, SIGNAL(valueChanged(bool)), this, SLOT(onParamsChanged(bool))); connect(m_rasterizationDpi, SIGNAL(editingFinished()), this, SLOT(onParamsChanged())); connect(m_margin, SIGNAL(editingFinished()), this, SLOT(onParamsChanged())); topLayout->setRowStretch(row, 1); //------------------------- View Widget ------------------------- // NOTE: It's IMPORTANT that parent widget is supplied. It's somewhat // used by QSplitter to decide the initial widget sizes... m_viewer = new Swatch(splitter); m_viewer->setMinimumHeight(150); m_viewer->setFocusPolicy(Qt::WheelFocus); splitter->addWidget(m_viewer); //--------------------------- Buttons --------------------------- m_okBtn = new QPushButton(tr("Apply")); addButtonBarWidget(m_okBtn); connect(m_okBtn, SIGNAL(clicked()), this, SLOT(apply())); // Finally, acquire current selection onCellSwitched(); m_viewer->resize(0, 350); resize(600, 700); }
StartupView::StartupView( QWidget * parent ) : QWidget( parent ) { m_templateListModel = std::shared_ptr<TemplateListModel>( new TemplateListModel() ); setStyleSheet("openstudio--StartupView { background: #E6E6E6; }"); #ifdef Q_OS_MAC setWindowFlags(Qt::FramelessWindowHint); #else setWindowFlags(Qt::CustomizeWindowHint); #endif auto recentProjectsView = new QWidget(); recentProjectsView->setStyleSheet("QWidget { background: #F2F2F2; }"); auto recentProjectsLayout = new QVBoxLayout(); recentProjectsLayout->setContentsMargins(10,10,10,10); QLabel * recentProjectsLabel = new QLabel("Recent Projects"); recentProjectsLabel->setStyleSheet("QLabel { font: bold }"); recentProjectsLayout->addWidget(recentProjectsLabel,0,Qt::AlignTop); recentProjectsView->setLayout(recentProjectsLayout); auto openButton = new QToolButton(); openButton->setText("Open File"); openButton->setStyleSheet("QToolButton { font: bold; }"); openButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); QIcon openIcon(":/images/open_file.png"); openButton->setIcon(openIcon); openButton->setIconSize(QSize(40,40)); connect(openButton, &QToolButton::clicked, this, &StartupView::openClicked); auto importButton = new QToolButton(); importButton->setText("Import Idf"); importButton->setStyleSheet("QToolButton { font: bold; }"); importButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); QIcon importIcon(":/images/import_file.png"); importButton->setIcon(importIcon); importButton->setIconSize(QSize(40,40)); connect(importButton, &QToolButton::clicked, this, &StartupView::importClicked); /* QToolButton * importSDDButton = new QToolButton(); importSDDButton->setText("Import SDD"); importSDDButton->setStyleSheet("QToolButton { font: bold; }"); importSDDButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); QIcon importSDDIcon(":/images/import_file.png"); importSDDButton->setIcon(importSDDIcon); importSDDButton->setIconSize(QSize(40,40)); connect(importSDDButton, &QToolButton::clicked, this, &StartupView::importSDDClicked); */ auto projectChooserView = new QWidget(); projectChooserView->setFixedWidth(238); projectChooserView->setStyleSheet("QWidget { background: #F2F2F2; }"); auto projectChooserLayout = new QVBoxLayout(); projectChooserLayout->setContentsMargins(10,10,10,10); QLabel * projectChooserLabel = new QLabel("Create New From Template"); projectChooserLabel->setStyleSheet("QLabel { font: bold }"); projectChooserLayout->addWidget(projectChooserLabel,0,Qt::AlignTop); m_listView = new QListView(); m_listView->setViewMode(QListView::IconMode); m_listView->setModel(m_templateListModel.get()); m_listView->setFocusPolicy(Qt::NoFocus); m_listView->setFlow(QListView::LeftToRight); m_listView->setUniformItemSizes(true); m_listView->setSelectionMode(QAbstractItemView::SingleSelection); projectChooserLayout->addWidget(m_listView); projectChooserView->setLayout(projectChooserLayout); m_projectDetailView = new QWidget(); m_projectDetailView->setStyleSheet("QWidget { background: #F2F2F2; }"); auto projectDetailLayout = new QVBoxLayout(); projectDetailLayout->setContentsMargins(10,10,10,10); m_projectDetailView->setLayout(projectDetailLayout); auto footerView = new QWidget(); footerView->setObjectName("FooterView"); footerView->setStyleSheet("QWidget#FooterView { background: #E6E6E6; }"); footerView->setMaximumHeight(50); footerView->setMinimumHeight(50); auto cancelButton = new QPushButton(); cancelButton->setObjectName("StandardGrayButton"); cancelButton->setMinimumSize(QSize(99,28)); #ifdef OPENSTUDIO_PLUGIN cancelButton->setText("Cancel"); connect(cancelButton, &QPushButton::clicked, this, &StartupView::hide); #else #ifdef Q_OS_MAC cancelButton->setText("Quit"); #else cancelButton->setText("Exit"); #endif connect(cancelButton, &QPushButton::clicked, OpenStudioApp::instance(), &OpenStudioApp::quit); #endif cancelButton->setStyleSheet("QPushButton { font: bold; }"); auto chooseButton = new QPushButton(); chooseButton->setObjectName("StandardBlueButton"); chooseButton->setText("Choose"); chooseButton->setMinimumSize(QSize(99,28)); connect(chooseButton, &QPushButton::clicked, this, &StartupView::newFromTemplateSlot); chooseButton->setStyleSheet("QPushButton { font: bold; }"); auto hFooterLayout = new QHBoxLayout(); hFooterLayout->setSpacing(25); hFooterLayout->setContentsMargins(0,0,0,0); hFooterLayout->addStretch(); hFooterLayout->addWidget(cancelButton); hFooterLayout->addWidget(chooseButton); footerView->setLayout(hFooterLayout); auto hLayout = new QHBoxLayout(); auto vLayout = new QVBoxLayout(); auto vOpenLayout = new QVBoxLayout(); vOpenLayout->addWidget(recentProjectsView); vOpenLayout->addWidget(openButton); vOpenLayout->addWidget(importButton); //vOpenLayout->addWidget(importSDDButton); hLayout->addLayout(vOpenLayout); hLayout->addWidget(projectChooserView); hLayout->addWidget(m_projectDetailView,1); vLayout->addSpacing(50); vLayout->addLayout(hLayout); vLayout->addWidget(footerView); setLayout(vLayout); connect(m_listView, &QListView::clicked, this, &StartupView::showDetailsForItem); m_listView->setCurrentIndex(m_templateListModel->index(0,0)); showDetailsForItem(m_templateListModel->index(0,0)); }
void MaterialInspectorView::createLayout() { auto hiddenWidget = new QWidget(); this->stackedWidget()->addWidget(hiddenWidget); auto visibleWidget = new QWidget(); this->stackedWidget()->addWidget(visibleWidget); auto mainGridLayout = new QGridLayout(); mainGridLayout->setContentsMargins(7, 7, 7, 7); mainGridLayout->setSpacing(14); visibleWidget->setLayout(mainGridLayout); int row = mainGridLayout->rowCount(); QLabel * label = nullptr; // Name label = new QLabel("Name: "); label->setObjectName("H2"); mainGridLayout->addWidget(label, row, 0); ++row; m_nameEdit = new OSLineEdit(); mainGridLayout->addWidget(m_nameEdit, row, 0, 1, 3); ++row; // Standards Information m_standardsInformationWidget = new StandardsInformationMaterialWidget(m_isIP, mainGridLayout, row); m_standardsInformationWidget->showComposite(); ++row; QVBoxLayout * vLayout = nullptr; // Roughness vLayout = new QVBoxLayout(); label = new QLabel("Roughness: "); label->setObjectName("H2"); vLayout->addWidget(label); m_roughness = new OSComboBox(); m_roughness->addItem("Very Rough"); m_roughness->addItem("Rough"); m_roughness->addItem("Medium Rough"); m_roughness->addItem("Medium Smooth"); m_roughness->addItem("Smooth"); m_roughness->addItem("Very Smooth"); vLayout->addWidget(m_roughness); mainGridLayout->addLayout(vLayout, row, 0); // Thickness vLayout = new QVBoxLayout(); label = new QLabel("Thickness: "); label->setObjectName("H2"); vLayout->addWidget(label); m_thickness = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_thickness, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_thickness); mainGridLayout->addLayout(vLayout, row++, 1); // Conductivity vLayout = new QVBoxLayout(); label = new QLabel("Conductivity: "); label->setObjectName("H2"); vLayout->addWidget(label); m_conductivity = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_conductivity, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_conductivity); mainGridLayout->addLayout(vLayout, row, 0); // Density vLayout = new QVBoxLayout(); label = new QLabel("Density: "); label->setObjectName("H2"); vLayout->addWidget(label); m_density = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_density, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_density); mainGridLayout->addLayout(vLayout, row++, 1); // Specific Heat vLayout = new QVBoxLayout(); label = new QLabel("Specific Heat: "); label->setObjectName("H2"); vLayout->addWidget(label); m_specificHeat = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_specificHeat, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_specificHeat); mainGridLayout->addLayout(vLayout, row, 0); // Thermal Absorptance vLayout = new QVBoxLayout(); label = new QLabel("Thermal Absorptance: "); label->setObjectName("H2"); vLayout->addWidget(label); m_thermalAbsorptance = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_thermalAbsorptance, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_thermalAbsorptance); mainGridLayout->addLayout(vLayout, row++, 1); // Solar Absorptance vLayout = new QVBoxLayout(); label = new QLabel("Solar Absorptance: "); label->setObjectName("H2"); vLayout->addWidget(label); m_solarAbsorptance = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_solarAbsorptance, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_solarAbsorptance); mainGridLayout->addLayout(vLayout, row, 0); // Visible Absorptance vLayout = new QVBoxLayout(); label = new QLabel("Visible Absorptance: "); label->setObjectName("H2"); vLayout->addWidget(label); m_visibleAbsorptance = new OSQuantityEdit(m_isIP); connect(this, &MaterialInspectorView::toggleUnitsClicked, m_visibleAbsorptance, &OSQuantityEdit::onUnitSystemChange); vLayout->addWidget(m_visibleAbsorptance); mainGridLayout->addLayout(vLayout, row++, 1); // Stretch mainGridLayout->setRowStretch(100,100); mainGridLayout->setColumnStretch(100,100); }
GeneralSettingsPage::GeneralSettingsPage(QWidget* parent) : SettingsPage(parent) , translation_file(getSetting(Settings::General_TranslationFile).toString()) { auto layout = new QFormLayout(this); layout->addRow(Util::Headline::create(tr("Appearance"))); auto language_widget = new QWidget(); auto language_layout = new QHBoxLayout(language_widget); language_layout->setContentsMargins({}); layout->addRow(tr("Language:"), language_widget); language_box = new QComboBox(this); language_layout->addWidget(language_box); QAbstractButton* language_file_button = new QToolButton(); language_file_button->setIcon(QIcon(QLatin1String(":/images/open.png"))); language_layout->addWidget(language_file_button); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Screen"))); auto ppi_widget = new QWidget(); auto ppi_layout = new QHBoxLayout(ppi_widget); ppi_layout->setContentsMargins({}); layout->addRow(tr("Pixels per inch:"), ppi_widget); ppi_edit = Util::SpinBox::create(2, 0.01, 9999); ppi_layout->addWidget(ppi_edit); QAbstractButton* ppi_calculate_button = new QToolButton(); ppi_calculate_button->setIcon(QIcon(QLatin1String(":/images/settings.png"))); ppi_layout->addWidget(ppi_calculate_button); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Program start"))); open_mru_check = new QCheckBox(AbstractHomeScreenWidget::tr("Open most recently used file")); layout->addRow(open_mru_check); tips_visible_check = new QCheckBox(AbstractHomeScreenWidget::tr("Show tip of the day")); layout->addRow(tips_visible_check); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("Saving files"))); compatibility_check = new QCheckBox(tr("Retain compatibility with Mapper %1").arg(QLatin1String("0.5"))); layout->addRow(compatibility_check); // Possible point: limit size of undo/redo journal autosave_check = new QCheckBox(tr("Save information for automatic recovery")); layout->addRow(autosave_check); autosave_interval_edit = Util::SpinBox::create(1, 120, tr("min", "unit minutes"), 1); layout->addRow(tr("Recovery information saving interval:"), autosave_interval_edit); layout->addItem(Util::SpacerItem::create(this)); layout->addRow(Util::Headline::create(tr("File import and export"))); encoding_box = new QComboBox(); encoding_box->addItem(QLatin1String("System")); encoding_box->addItem(QLatin1String("Windows-1250")); encoding_box->addItem(QLatin1String("Windows-1252")); encoding_box->addItem(QLatin1String("ISO-8859-1")); encoding_box->addItem(QLatin1String("ISO-8859-15")); encoding_box->setEditable(true); QStringList availableCodecs; for (const QByteArray& item : QTextCodec::availableCodecs()) { availableCodecs.append(QString::fromUtf8(item)); } if (!availableCodecs.empty()) { availableCodecs.sort(Qt::CaseInsensitive); availableCodecs.removeDuplicates(); encoding_box->addItem(tr("More...")); } QCompleter* completer = new QCompleter(availableCodecs, this); completer->setCaseSensitivity(Qt::CaseInsensitive); encoding_box->setCompleter(completer); layout->addRow(tr("8-bit encoding:"), encoding_box); ocd_importer_check = new QCheckBox(tr("Use the new OCD importer also for version 8 files").replace("8", "6-8")); layout->addRow(ocd_importer_check); updateWidgets(); connect(language_file_button, &QAbstractButton::clicked, this, &GeneralSettingsPage::openTranslationFileDialog); connect(ppi_calculate_button, &QAbstractButton::clicked, this, &GeneralSettingsPage::openPPICalculationDialog); connect(encoding_box, &QComboBox::currentTextChanged, this, &GeneralSettingsPage::encodingChanged); connect(autosave_check, &QAbstractButton::toggled, autosave_interval_edit, &QWidget::setEnabled); connect(autosave_check, &QAbstractButton::toggled, layout->labelForField(autosave_interval_edit), &QWidget::setEnabled); }
void TupMainWindow::setWorkSpace(const QStringList &users) { #ifdef K_DEBUG T_FUNCINFO; #endif if (m_projectManager->isOpen()) { if (TupMainWindow::requestType == NewLocalProject || TupMainWindow::requestType == NewNetProject) TOsd::self()->display(tr("Information"), tr("Opening a new document...")); contextMode = TupProject::FRAMES_EDITION; // Setting undo/redo actions setUndoRedoActions(); drawingTab = new TupViewDocument(m_projectManager->project(), this, isNetworked, users); TCONFIG->beginGroup("Network"); QString server = TCONFIG->value("Server").toString(); if (isNetworked && server.compare("tupitube.com") == 0) { connect(drawingTab, SIGNAL(requestExportImageToServer(int, int, const QString &, const QString &, const QString &)), netProjectManagerHandler, SLOT(sendExportImageRequestToServer(int, int, const QString &, const QString &, const QString &))); } drawingTab->setWindowTitle(tr("Animation")); addWidget(drawingTab); connectToDisplays(drawingTab); connectWidgetToManager(drawingTab); connectWidgetToLocalManager(drawingTab); connect(drawingTab, SIGNAL(modeHasChanged(int)), this, SLOT(expandExposureView(int))); connect(drawingTab, SIGNAL(expandColorPanel()), this, SLOT(expandColorView())); connect(drawingTab, SIGNAL(updateColorFromFullScreen(const QColor &)), this, SLOT(updatePenColor(const QColor &))); connect(drawingTab, SIGNAL(updatePenFromFullScreen(const QPen &)), this, SLOT(updatePenThickness(const QPen &))); drawingTab->setAntialiasing(true); int width = drawingTab->workSpaceSize().width(); int height = drawingTab->workSpaceSize().height(); int pWidth = m_projectManager->project()->dimension().width(); int pHeight = m_projectManager->project()->dimension().height(); /* tError() << "W: " << width; tError() << "H: " << height; tError() << "Pw: " << pWidth; tError() << "Ph: " << pHeight; */ double proportion = 1; if (pWidth > pHeight) proportion = (double) width / (double) pWidth; else proportion = (double) height / (double) pHeight; if (proportion <= 0.5) { drawingTab->setZoomView("20"); } else if (proportion > 0.5 && proportion <= 0.75) { drawingTab->setZoomView("25"); } else if (proportion > 0.75 && proportion <= 1.5) { drawingTab->setZoomView("50"); } else if (proportion > 1.5 && proportion < 2) { drawingTab->setZoomView("75"); } // TupViewCamera * viewCamera = new TupViewCamera(m_projectManager->project(), isNetworked); connectWidgetToManager(viewCamera); m_libraryWidget->setNetworking(isNetworked); if (isNetworked) { connect(viewCamera, SIGNAL(requestForExportVideoToServer(const QString &, const QString &, const QString &, int, const QList<int>)), this, SLOT(postVideo(const QString &, const QString &, const QString &, int, const QList<int>))); connect(viewCamera, SIGNAL(requestForExportStoryboardToServer(const QString &, const QString &, const QString &, const QList<int>)), this, SLOT(postStoryboard(const QString &, const QString &, const QString &, const QList<int>))); } else { connect(drawingTab, SIGNAL(autoSave()), this, SLOT(callSave())); } animationTab = new TupAnimationspace(viewCamera); animationTab->setWindowIcon(QIcon(THEME_DIR + "icons/play_small.png")); animationTab->setWindowTitle(tr("Player")); addWidget(animationTab); helpTab = new TupHelpBrowser(this); helpTab->setDataDirs(QStringList() << m_helper->helpPath()); QString lang = (QLocale::system().name()).left(2); if (lang.length() < 2) lang = "en"; QString helpPath = SHARE_DIR + "data/help/" + QString(lang + "/cover.html"); QFile file(helpPath); if (!file.exists()) helpPath = SHARE_DIR + "data/help/" + QString("en/cover.html"); helpTab->setSource(helpPath); addWidget(helpTab); QString twitterPath = QDir::homePath() + "/." + QCoreApplication::applicationName() + "/twitter.html"; if (QFile::exists(twitterPath)) { internetOn = true; newsTab = new TupTwitterWidget(this); newsTab->setSource(twitterPath); addWidget(newsTab); } connect(this, SIGNAL(tabHasChanged(int)), this, SLOT(updateCurrentTab(int))); exposureView->expandDock(true); // if (!isNetworked) // connect(drawingTab, SIGNAL(autoSave()), this, SLOT(callSave())); m_projectManager->undoModified(); // SQA: Check if this instruction is really required m_colorPalette->init(); TCONFIG->beginGroup("PenParameters"); int thicknessValue = TCONFIG->value("Thickness", -1).toInt(); m_penWidget->init(); m_penWidget->setThickness(thicknessValue); if (TupMainWindow::requestType == OpenLocalProject || TupMainWindow::requestType == OpenNetProject) TOsd::self()->display(tr("Information"), tr("Project <b>%1</b> opened!").arg(m_projectManager->project()->projectName())); connect(m_projectManager, SIGNAL(modified(bool)), this, SLOT(updatePlayer(bool))); m_exposureSheet->setScene(0); }
void StatusBar::addWidgetImpl( QWidget* w ) { addWidget( w ); }
OSCollapsibleItem::OSCollapsibleItem(OSCollapsibleItemHeader * collapsibleItemHeader, OSItemList * itemList, QWidget * parent) : QWidget(parent), m_collapsibleItemHeader(collapsibleItemHeader), m_itemList(itemList), m_mainLayout(nullptr), m_showFilterLayout(false) { OS_ASSERT(m_collapsibleItemHeader); OS_ASSERT(m_itemList); //m_collapsibleItemHeader->setDraggable(false); //m_collapsibleItemHeader->setRemoveable(false); setObjectName("OSCollapsibleItem"); m_mainLayout = new QVBoxLayout(); m_mainLayout->setSpacing(0); m_mainLayout->setContentsMargins(0,0,0,0); setLayout(m_mainLayout); // collapsible header m_mainLayout->addWidget(m_collapsibleItemHeader); m_filterWidget = new QWidget(); m_filterWidget->setObjectName("GrayWidget"); QString style; style.append("QWidget#GrayWidget {"); style.append(" background: #E6E6E6;"); style.append(" border-bottom: 1px solid black;"); style.append("}"); m_filterWidget->setStyleSheet(style); // RADIO BUTTONS m_filtersOnBtn = new QRadioButton(this); m_filtersOnBtn->setText(FILTERS_ON); m_filtersOnBtn->setChecked(true); connect(m_filtersOnBtn, &QRadioButton::clicked, this, &OSCollapsibleItem::filtersOnClicked); m_filtersOffBtn = new QRadioButton(this); m_filtersOffBtn->setText(FILTERS_OFF); connect(m_filtersOffBtn, &QRadioButton::clicked, this, &OSCollapsibleItem::filtersOffClicked); m_filterBtnGroup = new QButtonGroup(this); m_filterBtnGroup->setExclusive(true); m_filterBtnGroup->addButton(m_filtersOnBtn); m_filterBtnGroup->addButton(m_filtersOffBtn); auto radioBtnVLayout = new QVBoxLayout(); radioBtnVLayout->addWidget(m_filtersOnBtn); radioBtnVLayout->addWidget(m_filtersOffBtn); // RADIO BUTTONS AND PUSHBUTTON m_openLibDlgButton = new QPushButton(this); m_openLibDlgButton->setObjectName("OpenLibDlgButton"); m_openLibDlgButton->setLayoutDirection(Qt::RightToLeft); m_openLibDlgButton->setText("Edit"); connect(m_openLibDlgButton, &QPushButton::clicked, this, &OSCollapsibleItem::openLibDlgClicked); auto btnHLayout = new QHBoxLayout(); btnHLayout->addLayout(radioBtnVLayout); btnHLayout->addWidget(m_openLibDlgButton); // BUTTONS AND COMBOBOX m_sortLabel = new QLabel("Sort by:", this); m_sortComboBox = new QComboBox(this); m_sortComboBox->setFocusPolicy(Qt::ClickFocus); m_sortComboBox->addItem("Relevance"); m_sortComboBox->addItem("Recently Downloaded from BCL"); m_sortComboBox->addItem("BCL Components"); connect(m_sortComboBox, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &OSCollapsibleItem::comboBoxClicked); auto vLayout = new QVBoxLayout(); vLayout->addLayout(btnHLayout); vLayout->addWidget(m_sortLabel); vLayout->addWidget(m_sortComboBox); m_filterWidget->setLayout(vLayout); m_mainLayout->addWidget(m_filterWidget); connect(collapsibleItemHeader, &OSCollapsibleItemHeader::clicked, this, &OSCollapsibleItem::onHeaderClicked); // item list m_mainLayout->addWidget(m_itemList); connect(itemList, &OSItemList::itemSelected, this, &OSCollapsibleItem::itemSelected); connect(itemList, &OSItemList::itemRemoveClicked, this, &OSCollapsibleItem::itemRemoveClicked); connect(itemList, &OSItemList::itemReplacementDropped, this, &OSCollapsibleItem::itemReplacementDropped); connect(itemList, &OSItemList::selectionCleared, this, &OSCollapsibleItem::selectionCleared); m_mainLayout->addStretch(); setShowFilterWidgets(m_showFilterLayout); setExpanded(false); }
AdjustLevelsPopup::AdjustLevelsPopup() : DVGui::Dialog(TApp::instance()->getMainWindow(), true, false, "AdjustLevels"), m_thresholdD(0.005) //0.5% of the image size { int i, j; setWindowTitle(tr("Adjust Levels")); setLabelWidth(0); setModal(false); setTopMargin(0); setTopSpacing(0); beginVLayout(); QSplitter *splitter = new QSplitter(Qt::Vertical); splitter->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); addWidget(splitter); endVLayout(); //------------------------- Top Layout -------------------------- QScrollArea *scrollArea = new QScrollArea(splitter); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); scrollArea->setMinimumWidth(450); splitter->addWidget(scrollArea); splitter->setStretchFactor(0, 1); QFrame *topWidget = new QFrame(scrollArea); scrollArea->setWidget(topWidget); QVBoxLayout *topVLayout = new QVBoxLayout(topWidget); //Needed to justify at top topWidget->setLayout(topVLayout); QHBoxLayout *topLayout = new QHBoxLayout(topWidget); topVLayout->addLayout(topLayout); topVLayout->addStretch(1); //------------------------- Histogram --------------------------- m_histogram = new Histogram(topWidget); topLayout->addWidget(m_histogram); //------------------------- Mark Bars --------------------------- MarksBar *histogramMarksBar, *colorBarMarksBar; QVBoxLayout *histogramViewLayout; for (i = 0; i < 5; ++i) { HistogramView *view = m_histogram->getHistograms()->getHistogramView(i); histogramViewLayout = static_cast<QVBoxLayout *>(view->layout()); //Don't draw channel numbers view->channelBar()->setDrawNumbers(false); for (j = 0; j < 2; ++j) { EditableMarksBar *editableMarksBar = m_marksBar[j + (i << 1)] = new EditableMarksBar; MarksBar *marksBar = editableMarksBar->marksBar(); //Set margins up to cover the histogram editableMarksBar->layout()->setContentsMargins(6, 0, 5, 0); connect(editableMarksBar, SIGNAL(paramsChanged()), this, SLOT(onParamsChanged())); histogramViewLayout->insertWidget(1 + (j << 1), editableMarksBar); } } //------------------------- View Widget ------------------------- //NOTE: It's IMPORTANT that parent widget is supplied. It's somewhat //used by QSplitter to decide the initial widget sizes... m_viewer = new Swatch(splitter); m_viewer->setMinimumHeight(150); m_viewer->setFocusPolicy(Qt::WheelFocus); splitter->addWidget(m_viewer); //--------------------------- Buttons --------------------------- QVBoxLayout *buttonsLayout = new QVBoxLayout(topWidget); topLayout->addLayout(buttonsLayout); buttonsLayout->addSpacing(50); QPushButton *clampRange = new QPushButton(tr("Clamp"), topWidget); clampRange->setMinimumSize(65, 25); buttonsLayout->addWidget(clampRange); connect(clampRange, SIGNAL(clicked(bool)), this, SLOT(clampRange())); QPushButton *autoAdjust = new QPushButton(tr("Auto"), topWidget); autoAdjust->setMinimumSize(65, 25); buttonsLayout->addWidget(autoAdjust); connect(autoAdjust, SIGNAL(clicked(bool)), this, SLOT(autoAdjust())); QPushButton *resetBtn = new QPushButton(tr("Reset"), topWidget); resetBtn->setMinimumSize(65, 25); buttonsLayout->addWidget(resetBtn); connect(resetBtn, SIGNAL(clicked(bool)), this, SLOT(reset())); buttonsLayout->addStretch(1); m_okBtn = new QPushButton(tr("Apply")); addButtonBarWidget(m_okBtn); connect(m_okBtn, SIGNAL(clicked()), this, SLOT(apply())); //Finally, acquire current selection acquireRaster(); m_viewer->resize(0, 350); resize(600, 700); }
LoopLibraryDialog::LoopLibraryDialog(QWidget * parent) : QDialog(parent) { setObjectName("GrayWidget"); setFixedSize(280,584); setWindowTitle("Add HVAC System"); setWindowFlags(Qt::WindowFlags(Qt::Dialog | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)); auto mainVLayout = new QVBoxLayout(); mainVLayout->setContentsMargins(0,0,0,0); mainVLayout->setSpacing(0); setLayout(mainVLayout); QLabel * loopsLabel = new QLabel("HVAC Systems"); loopsLabel->setStyleSheet("QLabel { margin-left: 5px; }"); mainVLayout->addSpacing(5); mainVLayout->addWidget(loopsLabel); mainVLayout->addSpacing(5); auto divider = new QFrame(); divider->setFrameShape(QFrame::HLine); divider->setFrameShadow(QFrame::Sunken); mainVLayout->addWidget(divider); auto scrollAreaWidget = new QWidget(); scrollAreaWidget->setContentsMargins(0,0,0,0); scrollAreaWidget->setObjectName("GrayWidget"); auto scrollAreaLayout = new QVBoxLayout(); scrollAreaLayout->setContentsMargins(0,0,0,0); scrollAreaLayout->setSpacing(0); scrollAreaLayout->setAlignment(Qt::AlignTop); scrollAreaWidget->setLayout(scrollAreaLayout); m_scrollArea = new QScrollArea(); m_scrollArea->setFrameStyle(QFrame::NoFrame); m_scrollArea->setWidget(scrollAreaWidget); m_scrollArea->setWidgetResizable(true); m_scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); mainVLayout->addWidget(m_scrollArea,100); mainVLayout->addStretch(); //newItem( ADDTOMODEL_SYSTEM_TYPE_1, // QString("Packaged Terminal \nAir Conditioner"), // QPixmap(":/images/system_type_1.png") ); //newItem( ADDTOMODEL_SYSTEM_TYPE_2, // QString("Packaged Terminal Heat Pump"), // QPixmap(":/images/system_type_2.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_3, QString("Packaged Rooftop Unit"), QPixmap(":/images/system_type_3.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_4, QString("Packaged Rooftop Heat Pump"), QPixmap(":/images/system_type_4.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_5, QString("Packaged DX Rooftop VAV \nwith Reheat"), QPixmap(":/images/system_type_5.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_6, QString("Packaged Rooftop \nVAV with Parallel Fan \nPower Boxes and reheat"), QPixmap(":/images/system_type_6.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_7, QString("Packaged Rooftop \nVAV with Reheat"), QPixmap(":/images/system_type_7.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_8, QString("VAV with Parallel Fan-Powered \nBoxes and Reheat"), QPixmap(":/images/system_type_8.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_9, QString("Warm Air Furnace \nGas Fired"), QPixmap(":/images/system_type_9.png") ); newItem( ADDTOMODEL_SYSTEM_TYPE_10, QString("Warm Air Furnace \nElectric"), QPixmap(":/images/system_type_10.png") ); newItem( ADDTOMODEL_AIRLOOPHVAC, QString("Empty Air Loop"), QPixmap(":/images/air_loop_icon.png") ); newItem( ADDTOMODEL_PLANTLOOP, QString("Empty Plant Loop"), QPixmap(":/images/plant_loop_icon.png") ); }
void RawCellmlViewWidget::initialize(const QString &pFileName) { // Retrieve the size of our viewer and current editor, and hide the editor bool needInitialSizes = !mBorderedEditor; int borderedViewerHeight = 0; int borderedEditorHeight = 0; if (mBorderedEditor) { // An editor is currently available, so retrieve the size of both our // viewer and the current editor borderedViewerHeight = mBorderedViewer->height(); borderedEditorHeight = mBorderedEditor->height(); // Hide the current editor mBorderedEditor->hide(); } // Retrieve the editor associated with the file name, if any mBorderedEditor = mBorderedEditors.value(pFileName); if (!mBorderedEditor) { // No editor exists for the file name, so create and set up a Scintilla // editor with an XML lexer associated with it QFile file(pFileName); QString fileContents = QString(); bool fileIsWritable = false; if (file.open(QIODevice::ReadOnly|QIODevice::Text)) { // We could open the file, so retrieve its contents and whether it // can be written to fileContents = QTextStream(&file).readAll(); fileIsWritable = !(QFileInfo(pFileName).isWritable()); // We are done with the file, so close it file.close(); } mBorderedEditor = new Core::BorderedWidget(new QScintillaSupport::QScintilla(parentWidget(), fileContents, fileIsWritable, new QsciLexerXML(this)), true, false, false, false); // Keep track of our bordered editor and add it to ourselves mBorderedEditors.insert(pFileName, mBorderedEditor); addWidget(mBorderedEditor); } // Make sure that 'new' bordered editor is visible mBorderedEditor->show(); // Set the raw CellML view widget's focus proxy to the 'new' editor setFocusProxy(mBorderedEditor->widget()); // Adjust our sizes if (needInitialSizes) { // We need to initialise our sizes, so... setSizes(QList<int>() << mBorderedViewerHeight << mBorderedEditorHeight); } else { // Our sizes have already been initialised, so set our sizes so that // our 'new' editor gets its size set to that of the 'old' editor QList<int> newSizes = QList<int>() << borderedViewerHeight; for (int i = 1, iMax = count(); i < iMax; ++i) if (static_cast<Core::BorderedWidget *>(widget(i)) == mBorderedEditor) // This is the editor we are after, so... newSizes << borderedEditorHeight; else // Not the editor we are after, so... newSizes << 0; setSizes(newSizes); } }
void BiLiTextSourcePropertyDlg::setupSourcePropertiesUI() { //注意:添加控件时,记得根据需要在最后添加控件的变动通知监视! //否则可能导致点了确定之后设置没有保存进去 ui.PropertyNameLab->setText(tr("Text Property")); //select from file auto FileTxtLayout = new QHBoxLayout(); FileTxtLayout->setSpacing(0); FileTxtLayout->setContentsMargins(0, 0, 0, 0); FromFileCheckBox = new QCheckBox(ui.PropertyWid); FromFileCheckBox->setFixedHeight(13); FromFileCheckBox->setObjectName(QStringLiteral("FromFileCheckBox")); FromFileCheckBox->setProperty("FromFileCheckBox", qVPtr<QCheckBox>::toVariant(FromFileCheckBox) ); auto BrowseFileBtn = new QPushButton(ui.PropertyWid); BrowseFileBtn->setObjectName(QStringLiteral("BrowseFileBtn")); QSizePolicy sizePolicyBrowseFileBtn(QSizePolicy::Fixed, QSizePolicy::Fixed); sizePolicyBrowseFileBtn.setHeightForWidth(BrowseFileBtn->sizePolicy().hasHeightForWidth()); BrowseFileBtn->setSizePolicy(sizePolicyBrowseFileBtn); BrowseFileBtn->setMinimumSize(QSize(50, 25)); BrowseFileBtn->setMaximumSize(QSize(50, 25)); FilePathEdit = new QPlainTextEdit(); FilePathEdit->setObjectName(QStringLiteral("FilePathEdit")); QSizePolicy sizePolicyFilePathEdit(QSizePolicy::Expanding, QSizePolicy::Fixed); sizePolicyFilePathEdit.setHorizontalStretch(0); sizePolicyFilePathEdit.setVerticalStretch(0); sizePolicyFilePathEdit.setHeightForWidth(FilePathEdit->sizePolicy().hasHeightForWidth()); FilePathEdit->setSizePolicy(sizePolicyFilePathEdit); FilePathEdit->setFixedHeight(30); FilePathEdit->setReadOnly(true); connect(BrowseFileBtn, &QPushButton::clicked, [this](){ QString path = QFileDialog::getOpenFileName(this, tr("Select File"), QDir::currentPath(), tr("TxtFile (*.txt *.int *.log )")); if (path.isEmpty()) return; QFileInfo fileInfo(path); if (!fileInfo.isFile()) return; FilePathEdit->setPlainText(path); }); QSpacerItem *fileSpacer0 = new QSpacerItem(10, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *fileSpacer1 = new QSpacerItem(10, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); //QSpacerItem *fileSpacer2 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); FileTxtLayout->addWidget(FromFileCheckBox); FileTxtLayout->addItem(fileSpacer0); FileTxtLayout->addWidget(BrowseFileBtn); FileTxtLayout->addItem(fileSpacer1); FileTxtLayout->addWidget(FilePathEdit); PlainTextEdit = new QPlainTextEdit(); PlainTextEdit->setObjectName(QStringLiteral("PlainTextEdit")); QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(PlainTextEdit->sizePolicy().hasHeightForWidth()); PlainTextEdit->setSizePolicy(sizePolicy); PlainTextEdit->setFixedHeight(60); connect(PlainTextEdit, SIGNAL(textChanged()), this, SLOT(mSltTxtChanged())); auto FontHLayout = new QHBoxLayout(); FontHLayout->setSpacing(0); FontHLayout->setContentsMargins(0, 0, 27, 0); auto FontLab = new QLabel(ui.PropertyWid); FontLab->setObjectName(QStringLiteral("FontLab")); QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed); sizePolicy1.setHorizontalStretch(0); sizePolicy1.setVerticalStretch(0); sizePolicy1.setHeightForWidth(FontLab->sizePolicy().hasHeightForWidth()); FontLab->setSizePolicy(sizePolicy1); FontLab->setMinimumSize(QSize(62, 30)); FontLab->setMaximumSize(QSize(62, 30)); FontLab->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); FontHLayout->addWidget(FontLab); QSpacerItem *FontHLayout_spacer_h0 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); FontHLayout->addItem(FontHLayout_spacer_h0); FontComboBox = new QFontComboBox(ui.PropertyWid); FontComboBox->setFixedSize(142, 30); FontComboBox->setObjectName(QStringLiteral("FontComboBox")); FontComboBox->setStyleSheet(QStringLiteral("")); FontHLayout->addWidget(FontComboBox); connect(FontComboBox, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(mSltFontComboxChanged(const QString &))); QSpacerItem *FontHLayout_spacer_h1 = new QSpacerItem(30, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); FontHLayout->addItem(FontHLayout_spacer_h1); auto ColorLab = new QLabel(ui.PropertyWid); ColorLab->setObjectName(QStringLiteral("ColorLab")); sizePolicy1.setHeightForWidth(ColorLab->sizePolicy().hasHeightForWidth()); ColorLab->setSizePolicy(sizePolicy1); ColorLab->setMinimumSize(QSize(40, 30)); ColorLab->setMaximumSize(QSize(40, 30)); ColorLab->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); FontHLayout->addWidget(ColorLab); QSpacerItem *FontHLayout_spacer_h2 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); FontHLayout->addItem(FontHLayout_spacer_h2); QVBoxLayout *ColorChangeBtn_layout = new QVBoxLayout(); ColorChangeBtn_layout->setSpacing(0); ColorChangeBtn_layout->setContentsMargins(0, 5, 0, 5); ColorChangeBtn = new QPushButton(ui.PropertyWid); ColorChangeBtn->setObjectName(QStringLiteral("ColorChangeBtn")); sizePolicy1.setHeightForWidth(ColorChangeBtn->sizePolicy().hasHeightForWidth()); ColorChangeBtn->setSizePolicy(sizePolicy1); ColorChangeBtn->setMinimumSize(QSize(30, 20)); ColorChangeBtn->setMaximumSize(QSize(30, 20)); ColorChangeBtn_layout->addWidget(ColorChangeBtn); FontHLayout->addLayout(ColorChangeBtn_layout); connect(ColorChangeBtn, &QPushButton::clicked, this, &BiLiTextSourcePropertyDlg::mSltColorChangeBtn); auto StyleHSpacer1 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); auto StyleHSpacer2 = new QSpacerItem(30, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); auto StyleHLayout = new QHBoxLayout(); StyleHLayout->setContentsMargins(0, 0, 151, 0); StyleHLayout->setSpacing(0); auto StyleLab = new QLabel(ui.PropertyWid); StyleLab->setObjectName(QStringLiteral("StyleLab")); sizePolicy1.setHeightForWidth(StyleLab->sizePolicy().hasHeightForWidth()); StyleLab->setSizePolicy(sizePolicy1); StyleLab->setMinimumSize(QSize(62, 13)); StyleLab->setMaximumSize(QSize(62, 13)); StyleLab->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); StyleHLayout->addWidget(StyleLab); StyleHLayout->addItem(StyleHSpacer1); auto BoldStyleCheckBox = new QCheckBox(ui.PropertyWid); BoldStyleCheckBox->setFixedHeight(13); BoldStyleCheckBox->setObjectName(QStringLiteral("BoldStyleCheckBox")); StyleHLayout->addWidget(BoldStyleCheckBox); auto ItalicCheckBox = new QCheckBox(ui.PropertyWid); ItalicCheckBox->setFixedHeight(13); ItalicCheckBox->setObjectName(QStringLiteral("ItalicCheckBox")); StyleHLayout->addItem(StyleHSpacer2); StyleHLayout->addWidget(ItalicCheckBox); FontComboBox->setProperty("BoldStyleCheckBox", qVPtr<QCheckBox>::toVariant(BoldStyleCheckBox) ); FontComboBox->setProperty("ItalicCheckBox", qVPtr<QCheckBox>::toVariant(ItalicCheckBox) ); auto OpacitySliderHLayout = new QHBoxLayout(); OpacitySliderHLayout->setSpacing(0); OpacitySliderHLayout->setContentsMargins(0, 0, 0, 0); auto OpacityLabel = new QLabel(); OpacityLabel->setObjectName("OpacityLabel"); OpacityLabel->setText(QApplication::translate("TextAddForm", "Opacity:", 0)); OpacityLabel->setMinimumSize(QSize(62, 16)); OpacityLabel->setMaximumSize(QSize(62, 16)); OpacityLabel->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); OpacityValLabel = new QLabel(); OpacityValLabel->setObjectName("OpacityValLabel"); OpacityValLabel->setFixedSize(38, 16); OpacityValLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); auto OpacitySlider = new CircleSliderSlider(this); OpacitySlider->setFixedWidth(150); OpacitySlider->setRange(0, 255, 0); QSpacerItem *OpacitySliderHLayout_spacer0 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *OpacitySliderHLayout_spacer1 = new QSpacerItem(8, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *OpacitySliderHLayout_spacer2 = new QSpacerItem(8, 10, QSizePolicy::Expanding, QSizePolicy::Fixed); OpacitySliderHLayout->addWidget(OpacityLabel); OpacitySliderHLayout->addItem(OpacitySliderHLayout_spacer0); OpacitySliderHLayout->addWidget(OpacitySlider); OpacitySliderHLayout->addItem(OpacitySliderHLayout_spacer1); OpacitySliderHLayout->addWidget(OpacityValLabel); OpacitySliderHLayout->addItem(OpacitySliderHLayout_spacer2); ColorChangeBtn->setProperty("OpacitySlider", qVPtr<CircleSliderSlider>::toVariant(OpacitySlider)); ColorChangeBtn->setProperty("OpacityValLabel", qVPtr<QLabel>::toVariant(OpacityValLabel) ); QSpacerItem *ScrollSpeedSliderHLayout_spacer0 = new QSpacerItem(4, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *ScrollSpeedSliderHLayout_spacer1 = new QSpacerItem(8, 10, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *ScrollSpeedSliderHLayout_spacer2 = new QSpacerItem(8, 10, QSizePolicy::Expanding, QSizePolicy::Fixed); auto ScrollSpeedSliderHLayout = new QHBoxLayout(); ScrollSpeedSliderHLayout->setSpacing(0); ScrollSpeedSliderHLayout->setContentsMargins(0, 0, 0, 0); auto ScrollSpeedLabel = new QLabel(); ScrollSpeedLabel->setObjectName("ScrollSpeedLabel"); ScrollSpeedLabel->setText(QApplication::translate("TextAddForm", "ScrollSpeed:", 0)); ScrollSpeedLabel->setMinimumSize(QSize(62, 16)); ScrollSpeedLabel->setMaximumSize(QSize(62, 16)); ScrollSpeedLabel->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter); ScrollSpeedValLabel = new QLabel(); ScrollSpeedValLabel->setObjectName("ScrollSpeedValLabel"); ScrollSpeedSlider = new CircleSliderSlider(nullptr); ScrollSpeedSlider->setFixedWidth(150); ScrollSpeedValLabel->setFixedWidth(38); ScrollSpeedValLabel->setFixedHeight(16); ScrollSpeedValLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); ScrollSpeedSlider->setRange(0, 300, 0); ScrollSpeedSliderHLayout->addWidget(ScrollSpeedLabel); ScrollSpeedSliderHLayout->addItem(ScrollSpeedSliderHLayout_spacer0); ScrollSpeedSliderHLayout->addWidget(ScrollSpeedSlider); ScrollSpeedSliderHLayout->addItem(ScrollSpeedSliderHLayout_spacer1); ScrollSpeedSliderHLayout->addWidget(ScrollSpeedValLabel); ScrollSpeedSliderHLayout->addItem(ScrollSpeedSliderHLayout_spacer2); auto MainVLayout = new QVBoxLayout(ui.PropertyWid); MainVLayout->setObjectName(QStringLiteral("MainVLayout")); MainVLayout->setContentsMargins(14, 20, 14, 30); MainVLayout->setSpacing(0); QSpacerItem *spacer_v0 = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *spacer_v1 = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *spacer_v2 = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *spacer_v3 = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed); QSpacerItem *spacer_v4 = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Fixed); MainVLayout->addWidget(PlainTextEdit); MainVLayout->addItem(spacer_v0); MainVLayout->addLayout(FileTxtLayout); MainVLayout->addItem(spacer_v4); MainVLayout->addLayout(FontHLayout); MainVLayout->addItem(spacer_v1); MainVLayout->addLayout(StyleHLayout); MainVLayout->addItem(spacer_v2); MainVLayout->addLayout(OpacitySliderHLayout); MainVLayout->addItem(spacer_v3); MainVLayout->addLayout(ScrollSpeedSliderHLayout); FontLab->setText(QApplication::translate("TextAddForm", "Font:", 0)); ColorLab->setText(QApplication::translate("TextAddForm", "Color:", 0)); StyleLab->setText(QApplication::translate("TextAddForm", "Style:", 0)); BoldStyleCheckBox->setText(QApplication::translate("TextAddForm", "Bold", 0)); ItalicCheckBox->setText(QApplication::translate("TextAddForm", "Italic", 0)); FromFileCheckBox->setText(QApplication::translate("TextAddForm", "FromFile", 0)); BrowseFileBtn->setText(QApplication::translate("TextAddForm", "Browse", 0)); QMetaObject::connectSlotsByName(ui.PropertyWid); obs_data_t* settings = obs_source_get_settings(mSrc); DataToWidget(BILI_DATA_FONT(), FontComboBox, settings, "font"); DataToWidget(BILI_DATA_INT(), ColorChangeBtn, settings, "color1"); DataToWidget(BILI_DATA_STRING(), PlainTextEdit, settings, "text"); DataToWidget(BILI_DATA_STRING(), FilePathEdit, settings, "text_file"); DataToWidget(BILI_DATA_BOOL(), FromFileCheckBox, settings, "from_file"); obs_data_release(settings); //为文字源创建filter scrollFilter = obs_source_get_filter_by_name(mSrc, scroll_filter_id); if (!scrollFilter) { scrollFilter = obs_source_create(OBS_SOURCE_TYPE_FILTER, scroll_filter_id, scroll_filter_id, 0, 0); obs_source_filter_add(mSrc, scrollFilter); obs_data_t* settings = obs_data_create(); obs_data_set_bool(settings, "disable_repeat_if_no_speed", true); obs_source_update(scrollFilter, settings); obs_data_release(settings); } QObject::connect(ScrollSpeedSlider, &CircleSliderSlider::valueChanged, this, &BiLiTextSourcePropertyDlg::OnScrollSpeedSliderChanged); QObject::connect(OpacitySlider, &CircleSliderSlider::valueChanged, this, &BiLiTextSourcePropertyDlg::OnOpacitySliderChanged); //读取filter设置 FilterDataToWidget(BILI_DATA_DOUBLE(), ScrollSpeedSlider, mSrc, scroll_filter_id, "speed_x"); //读取透明度设置 settings = obs_source_get_settings(mSrc); int64_t color1 = obs_data_get_int(settings, "color1"); obs_data_release(settings); int opacity = (color1 >> 24) & 0xff; OpacitySlider->setValue(opacity); ScrollSpeedValLabel->setText(QString("%1%").arg(ScrollSpeedSlider->value())); OpacityValLabel->setText(QString("%1%").arg(OpacitySlider->value() * 100 / 255)); //添加监听控件变动 mChangeEvnetFilter->Watch({ PlainTextEdit, FontComboBox, /*ColorChangeBtn, */BoldStyleCheckBox, ItalicCheckBox, OpacitySlider, ScrollSpeedSlider, FromFileCheckBox, FilePathEdit }); connect(mChangeEvnetFilter.get(), SIGNAL(OnChangedSignal()), this, SLOT(mSltOnSettingChanged())); }
PropTabBar::PropTabBar(QWidget *parent) : QHBoxLayout(parent) , m_currentIndex(-1) { setAlignment(Qt::AlignLeft | Qt::AlignCenter); setSpacing(3); m_btnGroup = new QButtonGroup(this); // General tab QPushButton *mainInfosButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("document-properties"), #endif tr("General"), parent); mainInfosButton->setShortcut(Qt::ALT + Qt::Key_G); addWidget(mainInfosButton); m_btnGroup->addButton(mainInfosButton, MainTab); // Trackers tab QPushButton *trackersButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("network-server"), #endif tr("Trackers"), parent); trackersButton->setShortcut(Qt::ALT + Qt::Key_C); addWidget(trackersButton); m_btnGroup->addButton(trackersButton, TrackersTab); // Peers tab QPushButton *peersButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("edit-find-user"), #endif tr("Peers"), parent); peersButton->setShortcut(Qt::ALT + Qt::Key_R); addWidget(peersButton); m_btnGroup->addButton(peersButton, PeersTab); // URL seeds tab QPushButton *URLSeedsButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("network-server"), #endif tr("HTTP Sources"), parent); URLSeedsButton->setShortcut(Qt::ALT + Qt::Key_B); addWidget(URLSeedsButton); m_btnGroup->addButton(URLSeedsButton, URLSeedsTab); // Files tab QPushButton *filesButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("inode-directory"), #endif tr("Content"), parent); filesButton->setShortcut(Qt::ALT + Qt::Key_Z); addWidget(filesButton); m_btnGroup->addButton(filesButton, FilesTab); // Spacer addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed)); // Speed tab QPushButton *speedButton = new QPushButton( #ifndef Q_OS_MAC GuiIconProvider::instance()->getIcon("office-chart-line"), #endif tr("Speed"), parent); speedButton->setShortcut(Qt::ALT + Qt::Key_D); addWidget(speedButton); m_btnGroup->addButton(speedButton, SpeedTab); // SIGNAL/SLOT connect(m_btnGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked) , this, &PropTabBar::setCurrentIndex); // Disable buttons focus foreach (QAbstractButton *btn, m_btnGroup->buttons()) btn->setFocusPolicy(Qt::NoFocus); }
PluginDialog::PluginDialog(QWidget *parent) : QDialog(parent), m_view(new ExtensionSystem::PluginView(this)) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); QVBoxLayout *vl = new QVBoxLayout(this); auto filterLayout = new QHBoxLayout; vl->addLayout(filterLayout); auto filterEdit = new Utils::FancyLineEdit(this); filterEdit->setFiltering(true); connect(filterEdit, &Utils::FancyLineEdit::filterChanged, m_view, &ExtensionSystem::PluginView::setFilter); filterLayout->addWidget(filterEdit); m_view->setShowHidden(false); auto showHidden = new QCheckBox(tr("Show all")); showHidden->setToolTip(tr("Show all installed plugins, including base plugins " "and plugins that are not available on this platform.")); showHidden->setChecked(m_view->isShowingHidden()); connect(showHidden, &QCheckBox::stateChanged, m_view, &ExtensionSystem::PluginView::setShowHidden); filterLayout->addWidget(showHidden); vl->addWidget(m_view); m_detailsButton = new QPushButton(tr("Details"), this); m_errorDetailsButton = new QPushButton(tr("Error Details"), this); m_closeButton = new QPushButton(tr("Close"), this); m_detailsButton->setEnabled(false); m_errorDetailsButton->setEnabled(false); m_closeButton->setEnabled(true); m_closeButton->setDefault(true); m_restartRequired = new QLabel(tr("Restart required."), this); if (!s_isRestartRequired) m_restartRequired->setVisible(false); QHBoxLayout *hl = new QHBoxLayout; hl->addWidget(m_detailsButton); hl->addWidget(m_errorDetailsButton); hl->addSpacing(10); hl->addWidget(m_restartRequired); hl->addStretch(5); hl->addWidget(m_closeButton); vl->addLayout(hl); resize(650, 400); setWindowTitle(tr("Installed Plugins")); connect(m_view, &ExtensionSystem::PluginView::currentPluginChanged, this, &PluginDialog::updateButtons); connect(m_view, &ExtensionSystem::PluginView::pluginActivated, this, &PluginDialog::openDetails); connect(m_view, &ExtensionSystem::PluginView::pluginSettingsChanged, this, &PluginDialog::updateRestartRequired); connect(m_detailsButton, &QAbstractButton::clicked, [this] { openDetails(m_view->currentPlugin()); }); connect(m_errorDetailsButton, &QAbstractButton::clicked, this, &PluginDialog::openErrorDetails); connect(m_closeButton, &QAbstractButton::clicked, this, &PluginDialog::closeDialog); updateButtons(); }
AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent) { #if defined(Q_OS_WIN) resize(530, 620); setMinimumSize(530, 620); #elif defined(Q_OS_MAC) resize(660, 690); setMinimumSize(660, 690); #endif setWindowModality(Qt::WindowModal); QString titleText = tr("About %1").arg(Defs::APP_NAME); setWindowTitle(titleText); WidgetUtils::removeContextHelpButton(this); auto introduction = new QLabel; introduction->setText( tr("<h2>%1<sup>®</sup> version %2 %3</h2>" "<h6>Built on %4 at %5<br />With %7<br /></h6>" ).arg(Defs::APP_NAME) .arg(Defs::APP_VERSION_STR) .arg(Defs::APP_STAGE_STR) .arg(QStringLiteral(__DATE__)) .arg(QStringLiteral(__TIME__)) #if defined(Q_OS_WIN) .arg(Defs::WIN_COMPILER) #elif defined(Q_OS_MAC) .arg(Defs::MAC_COMPILER) #endif ); auto icon = new QLabel; auto app_logo_2x = QPixmap(QStringLiteral(":/icons/app-logo-about")); #if defined(Q_OS_MAC) app_logo_2x.setDevicePixelRatio(2.0); #endif icon->setPixmap(app_logo_2x); // About information auto infoWidget = new QWidget; auto infoLabel = new QLabel; infoLabel-> setText( tr("<br />%1 is an open source software application that is developed, " "maintained, supported by LI-COR Biosciences. It originates from " "ECO2S, the Eddy COvariance COmmunity Software project, which was " "developed as part of the IMECC-EU research project.</p>" "<p>We gratefully acknowledge the IMECC consortium, the ECO2S " "development team, the University of Tuscia (Italy) and scientists " "around the world who assisted with development and testing of the " "original version of this software." "<p>Copyright © 2011-%2 LI-COR Inc.</p>" "<div>Contact LI-COR Inc.:</div><br />" "<div style=\"text-indent: 20px;\">4647 Superior Street</div>" "<div style=\"text-indent: 20px;\">P.O. Box 4000</div>" "<div style=\"text-indent: 20px;\">Lincoln, Nebraska, 68504, USA</div><br />" "<div style=\"text-indent: 20px;\">Phone: 1-402-467-3576</div>" "<div style=\"text-indent: 20px;\">Toll Free: 800-447-3576</div>" "<div style=\"text-indent: 20px;\">Fax: 1-402-467-2819</div>" "<div style=\"text-indent: 20px;\">Email: <a href=\"mailto:[email protected]?subject=EddyPro %3\">[email protected]</a></div>" "<div style=\"text-indent: 20px;\">Website: <a href=\"http://www.licor.com\">http://www.licor.com</a></div>" ).arg(Defs::APP_NAME).arg(Defs::CURRENT_COPYRIGHT_YEAR).arg(Defs::APP_VERSION_STR) ); infoLabel->setOpenExternalLinks(true); infoLabel->setWordWrap(true); auto infoLayout = new QVBoxLayout; infoLayout->addWidget(infoLabel); infoLayout->addStretch(); infoWidget->setLayout(infoLayout); // Thanks auto thanksWidget = new QWidget; auto thanksLabel = new QLabel; thanksLabel->setText( tr("<br />We would like to thank the whole " "Eddy Covariance community, the authors, testers, the users and the " "following people (and the missing ones), in no special " "order, for their collaboration and source code contribution " "to create this free software." )); thanksLabel->setWordWrap(true); auto thanksEdit = new QTextEdit; thanksEdit->setText( tr("<h4>Original Authors</h4>" "<ul type=\"square\">" "<li>Gerardo Fratini ([email protected]): processing engines designer and developer</li>" "<li>Antonio Forgione ([email protected]): GUI designer and developer</li>" "<li>Dario Papale ([email protected]): project manager and coordinator</li>" "</ul>" "<h4>Others contributors</h4>" "<ul type=\"square\">" "<li>Carlo Trotta: code harmonization and documentation</li>" "<li>Natascha Kljun: code for footprint estimation, Kljun et al. (2004, BLM)</li>" "<li>Taro Nakai: code for angle of attack correction, Nakai et al. (2006, AFM)</li>" "<li>Andreas Ibrom: supervision during implementation of a spectral correction procedure, Ibrom et al. (2007, AFM)</li>" "<li>Stephen Chan: Revision, refinement and testing of implementation of Massman 2000/2001 spectral correction.</li>" "</ul>" "<h4>Software validation (intercomparison)</h4>" "<ul type=\"square\">" "<li>Juha-Pekka Tuovinen</li>" "<li>Andreas Ibrom</li>" "<li>Ivan Mammarella</li>" "<li>Robert Clement</li>" "<li>Meelis Molder</li>" "<li>Olaf Kolle</li>" "<li>Corinna Rebmann</li>" "<li>Matthias Mauder</li>" "<li>Jan Elbers</li>" "</ul>" "<h4>User testing and bug notifications</h4>" "<ul type=\"square\">" "<li>Tarek El-Madany</li>" "<li>Sergiy Medinets</li>" "<li>Beniamino Gioli</li>" "<li>Nicola Arriga</li>" "<li>Luca Belelli</li>" "<li>Michal Heliasz</li>" "<li>Bernard Heinesch</li>" "<li>Arnaud Carrara</li>" "<li>Patrik Vestin</li>" "<li>Matthias Barthel</li>" "<li>Karoline Wischnewski</li>" "<li>Matthew Wilkinson</li>" "<li>Simone Sabbatini</li>" "</ul>" "<h4>Software discussions</h4>" "<ul type=\"square\">" "<li>Ian Elbers</li>" "<li>George Burba</li>" "<li>Christian Wille</li>" "</ul>" "<h4>Libraries</h4>" "<ul type=\"square\">" "<li>Arjan van Dijk: libdate module</li>" "<li>Michael Baudin, Arjen Markus: m_logging module</li>" "<li>University of Chicago: m_levenberg_marquardt from the MINPACK package</li>" "<li>netlib.org: FFT routines from the SLATEC Common Mathematical Library</li>" "<li>The Qt Company: Qt framework</li>" "<li>Boost::math</li>" "<li>Trenton Schulz (Trolltech AS): Fader widget</li>" "<li>Morgan Leborgne: QProgressIndicator widget</li>" "<li>Witold Wysota: Debug helper class</li>" "<li>Sergey A. Tachenov: QuaZIP</li>" "<li>Mark Summerfield: classes from the book 'Advanced Qt Programming'</li>" "</ul>" "<h4>Tools</h4>" "<ul type=\"square\">" "<li>GFortran compiler</li>" "<li>MinGW compiler and GDB debugger</li>" "<li>Clang compiler</li>" "<li>The Qt Company: Qt Creator IDE</li>" "<li>Code::Blocks IDE</li>" "<li>\n</li>" "</ul>")); thanksEdit->setReadOnly(true); auto thanksLayout = new QVBoxLayout; thanksLayout->addWidget(thanksLabel); thanksLayout->addWidget(thanksEdit); thanksWidget->setLayout(thanksLayout); // License auto licenseWidget = new QWidget; auto licenseLabel = new QLabel; licenseLabel->setText( tr("<br />The %1 software application is Copyright © 2011-%2 " "LI-COR Inc.\n\n" "You may use, distribute and copy the %1 programs suite under " "the terms of the GNU General Public License version 3, " "which is displayed below. If you would like to obtain " "a copy of the source package please contact LI-COR " "Biosciences at " "<a href=\"mailto:[email protected]?subject=%1 %3&body=" "Please, send me a copy of the source package." "\">[email protected]</a>." ).arg(Defs::APP_NAME).arg(Defs::CURRENT_COPYRIGHT_YEAR).arg(Defs::APP_VERSION_STR)); licenseLabel->setWordWrap(true); licenseLabel->setOpenExternalLinks(true); auto licenseEdit = new QTextEdit; QFile licenseFile(QStringLiteral(":/docs/license")); qDebug() << licenseFile.open(QIODevice::ReadOnly | QIODevice::Text); licenseEdit->setText(QLatin1String(licenseFile.readAll())); licenseEdit->setReadOnly(true); licenseFile.close(); auto licenseLayout = new QVBoxLayout; licenseLayout->addWidget(licenseLabel); licenseLayout->addWidget(licenseEdit); licenseWidget->setLayout(licenseLayout); // Changelog auto changelogWidget = new QWidget; auto changelogLabel = new QLabel; changelogLabel->setText( tr("<br />Software updates include bug fixes, usability " "improvements\n\n and feature enhancements. These are summarized " "in the change log below.")); changelogLabel->setWordWrap(true); changelogLabel->setOpenExternalLinks(true); auto changelogEdit = new QTextEdit; QFile changelogFile(QStringLiteral(":/docs/changelog")); qDebug() << changelogFile.open(QIODevice::ReadOnly | QIODevice::Text); changelogEdit->setText(QLatin1String(changelogFile.readAll())); changelogEdit->setReadOnly(true); changelogFile.close(); auto changelogLayout = new QVBoxLayout; changelogLayout->addWidget(changelogLabel); changelogLayout->addWidget(changelogEdit); changelogWidget->setLayout(changelogLayout); // Dialog Tabs auto tab = new QTabWidget; tab->addTab(infoWidget, tr("About")); tab->addTab(thanksWidget, tr("Acknowledgments")); tab->addTab(licenseWidget, tr("License")); tab->addTab(changelogWidget, tr("Changes")); auto okButton = WidgetUtils::createCommonButton(this, tr("Ok")); auto dialogLayout = new QVBoxLayout(this); dialogLayout->addWidget(icon, 0, Qt::AlignCenter); dialogLayout->addWidget(introduction, 0, Qt::AlignCenter); dialogLayout->addWidget(tab); dialogLayout->addWidget(okButton, 0, Qt::AlignCenter); dialogLayout->setContentsMargins(30, 30, 30, 30); setLayout(dialogLayout); connect(okButton, &QPushButton::clicked, [=](){ if (this->isVisible()) hide(); }); }
GoogleMapExample() : WContainerWidget() { auto layout = setLayout(cpp14::make_unique<WHBoxLayout>()); setHeight(400); auto map = cpp14::make_unique<WGoogleMap>(GoogleMapsVersion::v3); map_ = map.get(); layout->addWidget(std::move(map), 1); map_->setMapTypeControl(MapTypeControl::Default); map_->enableScrollWheelZoom(); auto controls = cpp14::make_unique<WTemplate>(tr("graphics-GoogleMap-controls")); auto controls_ = controls.get(); layout->addWidget(std::move(controls)); auto zoomIn = cpp14::make_unique<WPushButton>("+"); auto zoomIn_ = controls_->bindWidget("zoom-in", std::move(zoomIn)); zoomIn_->addStyleClass("zoom"); zoomIn_->clicked().connect([=] { map_->zoomIn(); }); auto zoomOut = cpp14::make_unique<WPushButton>("-"); auto zoomOut_ = controls_->bindWidget("zoom-out", std::move(zoomOut)); zoomOut_->addStyleClass("zoom"); zoomOut_->clicked().connect([=] { map_->zoomOut(); }); std::string cityNames[] = { "Brussels", "Lisbon", "Paris" }; WGoogleMap::Coordinate cityCoords[] = { WGoogleMap::Coordinate(50.85034,4.35171), WGoogleMap::Coordinate(38.703731,-9.135475), WGoogleMap::Coordinate(48.877474, 2.312579) }; for (unsigned i = 0; i < 3; ++i) { auto city = cpp14::make_unique<WPushButton>(cityNames[i]); auto city_ = controls_->bindWidget(cityNames[i], std::move(city)); WGoogleMap::Coordinate coord = cityCoords[i]; city_->clicked().connect([=] { map_->panTo(coord); }); } auto reset = cpp14::make_unique<WPushButton>("Reset"); auto reset_ = controls_->bindWidget("emweb", std::move(reset)); reset_->clicked().connect([=] { this->panToEmWeb(); }); auto savePosition = cpp14::make_unique<WPushButton>("Save current position"); auto savePosition_ = controls_->bindWidget("save-position", std::move(savePosition)); savePosition_->clicked().connect([=] { this->savePosition(); }); auto returnToPosition = cpp14::make_unique<WPushButton>("Return to saved position"); returnToPosition_ = controls_->bindWidget("return-to-saved-position", std::move(returnToPosition)); returnToPosition_->setEnabled(false); returnToPosition_->clicked().connect([=] { map_->returnToSavedPosition(); }); mapTypeModel_ = std::make_shared<WStringListModel>(); addMapTypeControl("No control", MapTypeControl::None); addMapTypeControl("Default", MapTypeControl::Default); addMapTypeControl("Menu", MapTypeControl::Menu); if (map_->apiVersion() == GoogleMapsVersion::v2) addMapTypeControl("Hierarchical", MapTypeControl::Hierarchical); if (map_->apiVersion() == GoogleMapsVersion::v3) addMapTypeControl("Horizontal bar", MapTypeControl::HorizontalBar); auto menuControls = cpp14::make_unique<WComboBox>(); auto menuControls_ = controls_->bindWidget("control-menu-combo", std::move(menuControls)); menuControls_->setModel(mapTypeModel_); menuControls_->setCurrentIndex(1); menuControls_->activated().connect([=] (int mapType) { this->setMapTypeControl(mapType); }); auto draggingCB = cpp14::make_unique<WCheckBox>("Enable dragging"); auto draggingCB_ = controls_->bindWidget("dragging-cb", std::move(draggingCB)); draggingCB_->setChecked(true); map_->enableDragging(); draggingCB_->checked().connect([=] { map_->enableDragging(); }); draggingCB_->unChecked().connect([=] { map_->disableDragging(); }); auto enableDoubleClickZoomCB = cpp14::make_unique<WCheckBox>("Enable double click zoom"); auto enableDoubleClickZoomCB_ = controls_->bindWidget("double-click-zoom-cb", std::move(enableDoubleClickZoomCB)); enableDoubleClickZoomCB_->setChecked(false); map_->disableDoubleClickZoom(); enableDoubleClickZoomCB_->checked().connect([=] { map_->enableDoubleClickZoom(); }); enableDoubleClickZoomCB_->unChecked().connect([=] { map_->disableDoubleClickZoom(); }); auto enableScrollWheelZoomCB = cpp14::make_unique<WCheckBox>("Enable scroll wheel zoom"); auto enableScrollWheelZoomCB_ = controls_->bindWidget("scroll-wheel-zoom-cb", std::move(enableScrollWheelZoomCB)); enableScrollWheelZoomCB_->setChecked(true); map_->enableScrollWheelZoom(); enableScrollWheelZoomCB_->checked().connect([=] { map_->enableScrollWheelZoom(); }); enableScrollWheelZoomCB_->unChecked().connect([=] { map_->disableScrollWheelZoom(); }); std::vector<WGoogleMap::Coordinate> road = roadDescription(); map_->addPolyline(road, WColor(0, 191, 255)); //Koen's favourite bar! map_->addMarker(WGoogleMap::Coordinate(50.885069,4.71958)); map_->setCenter(road[road.size()-1]); map_->openInfoWindow(road[0], "<img src=\"http://www.emweb.be/css/emweb_small.jpg\" />" "<p><strong>Emweb office</strong></p>"); map_->clicked().connect([=] (WGoogleMap::Coordinate c) { this->googleMapClicked(c); }); map_->doubleClicked().connect([=] (WGoogleMap::Coordinate c) { this->googleMapDoubleClicked(c); }); }
GameScene::GameScene(QWidget *parent) : QGraphicsScene(parent), myLock(false) { inputDisabled = true; dconfirm = new ConfirmDialog(); addWidget(dconfirm, Qt::FramelessWindowHint); dconfirm->hide(); menu = new MenuWidget(); addWidget(menu); menu->activate(); connect(menu, SIGNAL(menuNew()), this, SLOT(on_menuNew())); connect(menu, SIGNAL(menuContinue()), this, SLOT(on_menuContinue())); connect(menu, SIGNAL(menuExit()), this, SLOT(on_menuExit())); connect(menu, SIGNAL(menuPauseBack()), this, SLOT(on_menuPauseBack())); connect(menu, SIGNAL(menuRestartLevel()), this, SLOT(on_menuRestartLevel())); connect(menu, SIGNAL(menuAbandonGame()), this, SLOT(on_menuAbandonGame())); connect(menu, SIGNAL(menuThemeChanged()), this, SLOT(on_menuThemeChanged())); connect(menu, SIGNAL(menuGameStart()), this, SLOT(on_menuGameStart())); connect(menu, SIGNAL(menuLevelPack()), this, SLOT(on_menuLevelPack())); stat = new StatInfo(); connect(gameProfile, SIGNAL(profileChanged()), this, SLOT(initProfile())); rows = cols = 0; xoff = 20; yoff = 10; advanceTimer = new QTimer(this); advanceTimer->setInterval(30); connect(advanceTimer, SIGNAL(timeout()), this, SLOT(nextCycle())); timeTimer = new QTimer(this); timeTimer->setInterval(1000); connect(timeTimer, SIGNAL(timeout()), this, SLOT(countTime())); bonusTimer = new QTimer(this); bonusTimer->setInterval(500); connect(bonusTimer, SIGNAL(timeout()), this, SLOT(countBonusTime())); hintTimer = new QTimer(this); hintTimer->setInterval(10000); connect(hintTimer, SIGNAL(timeout()), this, SLOT(hintAvailableMoves())); // init components GameStock::init(); toolset = new ToolSet(); gameBonus = new GameBonus(); setSceneRect(0,0, WIDTH, HEIGHT); // set background gameBackground = new GameBackground(); setBackgroundBrush(Qt::black); setDefaultGameCursor(); // update max level for current pack max_level = gameProfile->levelPackCount(gameProfile->currentLevelPack()); // very first initialization initGame(); }
AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), d(new Data) { d->ui.setupUi(this); auto link = [] (const char *url) -> QString { return "<a href=\""_a % _L(url) % "\">"_a % _L(url) % "</a>"_a; }; d->ui.app_name->setText(cApp.displayName()); #define UI_LABEL_ARG(label, arg) d->ui.label->setText(d->ui.label->text().arg) UI_LABEL_ARG(version, arg(_L(cApp.version()))); UI_LABEL_ARG(qt_info, arg(_L(qVersion()), _L(QT_VERSION_STR))); UI_LABEL_ARG(copyright, arg(QDate::currentDate().year()).arg(tr("Lee, Byoung-young"))); UI_LABEL_ARG(contacts, arg(link("http://bomi-player.github.io") % "<br>"_a). arg(link("http://twitter.com/bomi_player") % "<br>"_a). arg(link("https://github.com/xylosper/bomi/issues") % "<br>"_a). arg("<a href=\"mailto:[email protected]\">[email protected]</a><br>"_a)); UI_LABEL_ARG(ivan, arg(_L("https://plus.google.com/u/1/117118228830713086299/posts"))); #undef UI_LABEL_ARG d->ui.license->setText( u"This program is free software; " "you can redistribute it and/or modify it under the terms of " "the GNU General Public License " "as published by ""the Free Software Foundation; " "either version 2 of the License, " "or (at your option) any later version.<br><br>" "This program is distributed in the hope that it will be useful, " "but WITHOUT ANY WARRANTY; without even the implied warranty of " "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. " "See the GNU General Public License for more details.<br><br>" "You should have received a copy of " "the GNU General Public License along with this program; " "if not, see <a href=\"http://www.gnu.org/licenses\">" "http://www.gnu.org/licenses</a>."_q ); auto show = [this] () { QDialog dlg(this); auto text = new QTextBrowser(&dlg); auto close = new QPushButton(tr("Close"), &dlg); auto vbox = new QVBoxLayout(&dlg); vbox->addWidget(text); auto hbox = new QHBoxLayout; hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding)); hbox->addWidget(close); hbox->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding)); vbox->addLayout(hbox); connect(close, &QPushButton::clicked, &dlg, &QDialog::accept); const QString fileName(u":/gpl.html"_q); QFile file(fileName); file.open(QFile::ReadOnly | QFile::Text); text->setHtml(QString::fromLatin1(file.readAll())); dlg.resize(500, 400); dlg.exec(); }; connect(d->ui.view_gpl, &QPushButton::clicked, this, show); adjustSize(); }
DatabaseWidget::DatabaseWidget(Database* db, QWidget* parent) : QStackedWidget(parent) , m_db(db) , m_searchUi(new Ui::SearchWidget()) , m_searchWidget(new QWidget()) , m_newGroup(Q_NULLPTR) , m_newEntry(Q_NULLPTR) , m_newParent(Q_NULLPTR) { m_searchUi->setupUi(m_searchWidget); m_searchTimer = new QTimer(this); m_searchTimer->setSingleShot(true); m_mainWidget = new QWidget(this); QLayout* layout = new QHBoxLayout(m_mainWidget); QSplitter* splitter = new QSplitter(m_mainWidget); QWidget* rightHandSideWidget = new QWidget(splitter); m_searchWidget->setParent(rightHandSideWidget); m_groupView = new GroupView(db, splitter); m_groupView->setObjectName("groupView"); m_groupView->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_groupView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(emitGroupContextMenuRequested(QPoint))); m_entryView = new EntryView(rightHandSideWidget); m_entryView->setObjectName("entryView"); m_entryView->setContextMenuPolicy(Qt::CustomContextMenu); m_entryView->setGroup(db->rootGroup()); connect(m_entryView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(emitEntryContextMenuRequested(QPoint))); QSizePolicy policy; policy = m_groupView->sizePolicy(); policy.setHorizontalStretch(30); m_groupView->setSizePolicy(policy); policy = rightHandSideWidget->sizePolicy(); policy.setHorizontalStretch(70); rightHandSideWidget->setSizePolicy(policy); QAction* closeAction = new QAction(m_searchWidget); QIcon closeIcon = filePath()->icon("actions", "dialog-close"); closeAction->setIcon(closeIcon); m_searchUi->closeSearchButton->setDefaultAction(closeAction); m_searchUi->closeSearchButton->setShortcut(Qt::Key_Escape); m_searchWidget->hide(); m_searchUi->caseSensitiveCheckBox->setVisible(false); QVBoxLayout* vLayout = new QVBoxLayout(rightHandSideWidget); vLayout->setMargin(0); vLayout->addWidget(m_searchWidget); vLayout->addWidget(m_entryView); rightHandSideWidget->setLayout(vLayout); splitter->addWidget(m_groupView); splitter->addWidget(rightHandSideWidget); layout->addWidget(splitter); m_mainWidget->setLayout(layout); m_editEntryWidget = new EditEntryWidget(); m_editEntryWidget->setObjectName("editEntryWidget"); m_historyEditEntryWidget = new EditEntryWidget(); m_editGroupWidget = new EditGroupWidget(); m_editGroupWidget->setObjectName("editGroupWidget"); m_changeMasterKeyWidget = new ChangeMasterKeyWidget(); m_changeMasterKeyWidget->headlineLabel()->setText(tr("Change master key")); QFont headlineLabelFont = m_changeMasterKeyWidget->headlineLabel()->font(); headlineLabelFont.setBold(true); headlineLabelFont.setPointSize(headlineLabelFont.pointSize() + 2); m_changeMasterKeyWidget->headlineLabel()->setFont(headlineLabelFont); m_databaseSettingsWidget = new DatabaseSettingsWidget(); m_databaseSettingsWidget->setObjectName("databaseSettingsWidget"); m_databaseOpenWidget = new DatabaseOpenWidget(); m_databaseOpenWidget->setObjectName("databaseOpenWidget"); m_keepass1OpenWidget = new KeePass1OpenWidget(); m_keepass1OpenWidget->setObjectName("keepass1OpenWidget"); m_unlockDatabaseWidget = new UnlockDatabaseWidget(); m_unlockDatabaseWidget->setObjectName("unlockDatabaseWidget"); addWidget(m_mainWidget); addWidget(m_editEntryWidget); addWidget(m_editGroupWidget); addWidget(m_changeMasterKeyWidget); addWidget(m_databaseSettingsWidget); addWidget(m_historyEditEntryWidget); addWidget(m_databaseOpenWidget); addWidget(m_keepass1OpenWidget); addWidget(m_unlockDatabaseWidget); connect(m_groupView, SIGNAL(groupChanged(Group*)), this, SLOT(clearLastGroup(Group*))); connect(m_groupView, SIGNAL(groupChanged(Group*)), SIGNAL(groupChanged())); connect(m_groupView, SIGNAL(groupChanged(Group*)), m_entryView, SLOT(setGroup(Group*))); connect(m_entryView, SIGNAL(entryActivated(Entry*, EntryModel::ModelColumn)), SLOT(entryActivationSignalReceived(Entry*, EntryModel::ModelColumn))); connect(m_entryView, SIGNAL(entrySelectionChanged()), SIGNAL(entrySelectionChanged())); connect(m_editEntryWidget, SIGNAL(editFinished(bool)), SLOT(switchToView(bool))); connect(m_editEntryWidget, SIGNAL(historyEntryActivated(Entry*)), SLOT(switchToHistoryView(Entry*))); connect(m_historyEditEntryWidget, SIGNAL(editFinished(bool)), SLOT(switchBackToEntryEdit())); connect(m_editGroupWidget, SIGNAL(editFinished(bool)), SLOT(switchToView(bool))); connect(m_changeMasterKeyWidget, SIGNAL(editFinished(bool)), SLOT(updateMasterKey(bool))); connect(m_databaseSettingsWidget, SIGNAL(editFinished(bool)), SLOT(switchToView(bool))); connect(m_databaseOpenWidget, SIGNAL(editFinished(bool)), SLOT(openDatabase(bool))); connect(m_keepass1OpenWidget, SIGNAL(editFinished(bool)), SLOT(openDatabase(bool))); connect(m_unlockDatabaseWidget, SIGNAL(editFinished(bool)), SLOT(unlockDatabase(bool))); connect(this, SIGNAL(currentChanged(int)), this, SLOT(emitCurrentModeChanged())); connect(m_searchUi->searchEdit, SIGNAL(textChanged(QString)), this, SLOT(startSearchTimer())); connect(m_searchUi->caseSensitiveCheckBox, SIGNAL(toggled(bool)), this, SLOT(startSearch())); connect(m_searchUi->searchCurrentRadioButton, SIGNAL(toggled(bool)), this, SLOT(startSearch())); connect(m_searchUi->searchRootRadioButton, SIGNAL(toggled(bool)), this, SLOT(startSearch())); connect(m_searchTimer, SIGNAL(timeout()), this, SLOT(search())); connect(closeAction, SIGNAL(triggered()), this, SLOT(closeSearch())); setCurrentWidget(m_mainWidget); }
KomStdPlugin::KomStdPlugin() { const char *group = "Kommander"; addWidget("Label", group, "", 0); addWidget("PixmapLabel", group, "", 0); addWidget("LineEdit", group, "", 0); addWidget("Dialog", group, "", 0); addWidget("ExecButton", group, "", 0); addWidget("CloseButton", group, "", 0); addWidget("Konsole", group, "", 0); addWidget("TextEdit", group, "", 0); addWidget("RadioButton", group, "", 0); // addWidget("", group, ""); addWidget("GroupBox", group, "", 0); addWidget("ButtonGroup", group, "", 0); addWidget("CheckBox", group, "", 0); addWidget("ComboBox", group, "", 0); addWidget("SpinBoxInt", group, "", 0); // addWidget("Wizard", group, ""); addWidget("TabWidget", group, "", 0); addWidget("ToolBox", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("toolbox", KIcon::NoGroup, KIcon::SizeMedium)), "", true); // addWidget("SubDialog", group, ""); addWidget("ListBox", group, "", 0); addWidget("Timer", group, "", 0); addWidget("ScriptObject", group, "", 0); addWidget("RichTextEditor", group, "", 0); addWidget("TreeWidget", group, "", 0); addWidget("StatusBar", group, "", 0); addWidget("TextBrowser", group, "", 0); addWidget("Slider", group, "", 0); addWidget("Table", group, "", 0); addWidget("DatePicker", group, "", 0); addWidget("PopupMenu", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("contents", KIcon::NoGroup, KIcon::SizeMedium))); addWidget("FontDialog", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("kfontcombo", KIcon::NoGroup, KIcon::SizeMedium))); addWidget("AboutDialog", group, "", new QIconSet(KGlobal::iconLoader()->loadIcon("kommander", KIcon::NoGroup, KIcon::SizeMedium))); }
MainStatusBar::MainStatusBar(QWidget *parent) : QStatusBar(parent), cap_file_(NULL), edit_action_(NULL), delete_action_(NULL) { QSplitter *splitter = new QSplitter(this); #ifdef HAVE_LIBPCAP QString ready_msg(tr("Ready to load or capture")); #else QString ready_msg(tr("Ready to load file")); #endif QWidget *info_progress = new QWidget(this); QHBoxLayout *info_progress_hb = new QHBoxLayout(info_progress); QAction *action; #if defined(Q_OS_WIN) // Handles are the same color as widgets, at least on Windows 7. splitter->setHandleWidth(3); splitter->setStyleSheet(QString( "QSplitter::handle {" " border-left: 1px solid palette(mid);" " border-right: 1px solid palette(mid);" "}" )); #elif defined(Q_OS_MAC) expert_status_.setAttribute(Qt::WA_MacSmallSize, true); #endif expert_status_.setTextFormat(Qt::RichText); expert_status_.hide(); // XXX Add the comment icon info_progress_hb->setContentsMargins(0, 0, 0, 0); info_status_.setTemporaryContext(STATUS_CTX_TEMPORARY); info_progress_hb->addWidget(&expert_status_); info_progress_hb->addWidget(&info_status_); info_progress_hb->addWidget(&progress_bar_); info_progress_hb->addStretch(10); splitter->addWidget(info_progress); splitter->addWidget(&packet_status_); splitter->addWidget(&profile_status_); splitter->setStretchFactor(0, 3); splitter->setStretchFactor(1, 3); splitter->setStretchFactor(2, 1); addWidget(splitter, 1); cur_main_status_bar_ = this; splitter->hide(); info_status_.pushText(ready_msg, STATUS_CTX_MAIN); packets_bar_update(); action = ctx_menu_.addAction(tr("Manage Profiles...")); action->setData(ProfileDialog::ShowProfiles); connect(action, SIGNAL(triggered()), this, SLOT(manageProfile())); ctx_menu_.addSeparator(); action = ctx_menu_.addAction(tr("New...")); action->setData(ProfileDialog::NewProfile); connect(action, SIGNAL(triggered()), this, SLOT(manageProfile())); edit_action_ = ctx_menu_.addAction(tr("Edit...")); edit_action_->setData(ProfileDialog::EditCurrentProfile); connect(edit_action_, SIGNAL(triggered()), this, SLOT(manageProfile())); delete_action_ = ctx_menu_.addAction(tr("Delete")); delete_action_->setData(ProfileDialog::DeleteCurrentProfile); connect(delete_action_, SIGNAL(triggered()), this, SLOT(manageProfile())); ctx_menu_.addSeparator(); profile_menu_.setTitle(tr("Switch to")); ctx_menu_.addMenu(&profile_menu_); connect(wsApp, SIGNAL(appInitialized()), splitter, SLOT(show())); connect(wsApp, SIGNAL(appInitialized()), this, SLOT(pushProfileName())); connect(&info_status_, SIGNAL(toggleTemporaryFlash(bool)), this, SLOT(toggleBackground(bool))); connect(wsApp, SIGNAL(captureCaptureUpdateContinue(capture_session*)), this, SLOT(updateCaptureStatistics(capture_session*))); connect(wsApp, SIGNAL(configurationProfileChanged(const gchar *)), this, SLOT(pushProfileName())); connect(&profile_status_, SIGNAL(mousePressedAt(QPoint,Qt::MouseButton)), this, SLOT(showProfileMenu(QPoint,Qt::MouseButton))); }
void WidgetWithLoader::setMainWidget(QWidget *mainWidget){ this->mainWidget = mainWidget; addWidget(mainWidget); }
QPushButton *ChatWidget::addButton(const QString &name, int x) { QPushButton *button = createButton(name); addWidget(button, x); return button; }
EffectSlider::EffectSlider(const ossia::net::node_base& fx, QWidget* parent): QWidget{parent}, m_param{fx} { auto addr = m_param.getAddress(); auto dom = addr->getDomain(); if(auto f = dom.maybe_min<ossia::Float>()) m_min = *f; if(auto f = dom.maybe_max<ossia::Float>()) m_max = *f; auto lay = new iscore::MarginLess<QVBoxLayout>; lay->addWidget(new AddressLabel{ m_param, QString::fromStdString(addr->getDescription()), this}); m_slider = new iscore::DoubleSlider{this}; lay->addWidget(m_slider); this->setLayout(lay); auto cur_val = ossia::convert<float>(m_param.getAddress()->cloneValue()); scaledValue = (cur_val - m_min) / (m_max - m_min); m_slider->setValue(scaledValue); connect(m_slider, &iscore::DoubleSlider::valueChanged, this, [=] (double v) { // TODO undo ??? // v is between 0 - 1 auto cur = m_param.getAddress()->cloneValue(); auto exp = float(m_min + (m_max - m_min) * v); if(ossia::convert<float>(cur) != exp) m_param.getAddress()->pushValue(ossia::Float{exp}); }); m_callback = addr->add_callback([=] (const ossia::value& val) { if(auto v = val.target<ossia::Float>()) { scaledValue = (*v - m_min) / (m_max - m_min); // if(scaled != m_slider->value()) // TODO qFuzzyCompare instead // m_slider->setValue(scaled); } }); m_addAutomAction = new QAction{tr("Add automation"), this}; connect(m_addAutomAction, &QAction::triggered, this, [=] () { auto& ossia_addr = *m_param.getAddress(); auto& dom = ossia_addr.getDomain(); auto addr = State::parseAddress(QString::fromStdString(ossia::net::address_string_from_node(ossia_addr))); if(addr) { auto min = dom.convert_min<double>(); auto max = dom.convert_max<double>(); emit createAutomation(std::move(*addr), min, max); } }); // TODO show tooltip with current value }
EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetailsWidget) : QWidget(parent), d(new EnvironmentWidgetPrivate) { d->m_model = new Utils::EnvironmentModel(); connect(d->m_model, &Utils::EnvironmentModel::userChangesChanged, this, &EnvironmentWidget::userChangesChanged); connect(d->m_model, &QAbstractItemModel::modelReset, this, &EnvironmentWidget::invalidateCurrentIndex); connect(d->m_model, &Utils::EnvironmentModel::focusIndex, this, &EnvironmentWidget::focusIndex); auto vbox = new QVBoxLayout(this); vbox->setContentsMargins(0, 0, 0, 0); d->m_detailsContainer = new Utils::DetailsWidget(this); auto details = new QWidget(d->m_detailsContainer); d->m_detailsContainer->setWidget(details); details->setVisible(false); auto vbox2 = new QVBoxLayout(details); vbox2->setMargin(0); if (additionalDetailsWidget) vbox2->addWidget(additionalDetailsWidget); auto horizontalLayout = new QHBoxLayout(); horizontalLayout->setMargin(0); auto tree = new Utils::TreeView(this); connect(tree, &QAbstractItemView::activated, tree, [tree](const QModelIndex &idx) { tree->edit(idx); }); d->m_environmentView = tree; d->m_environmentView->setModel(d->m_model); d->m_environmentView->setItemDelegate(new EnvironmentDelegate(d->m_model, d->m_environmentView)); d->m_environmentView->setMinimumHeight(400); d->m_environmentView->setRootIsDecorated(false); d->m_environmentView->setUniformRowHeights(true); new Utils::HeaderViewStretcher(d->m_environmentView->header(), 1); d->m_environmentView->setSelectionMode(QAbstractItemView::SingleSelection); d->m_environmentView->setSelectionBehavior(QAbstractItemView::SelectItems); d->m_environmentView->setFrameShape(QFrame::NoFrame); QFrame *findWrapper = Core::ItemViewFind::createSearchableWrapper(d->m_environmentView, Core::ItemViewFind::LightColored); findWrapper->setFrameStyle(QFrame::StyledPanel); horizontalLayout->addWidget(findWrapper); auto buttonLayout = new QVBoxLayout(); d->m_editButton = new QPushButton(this); d->m_editButton->setText(tr("&Edit")); buttonLayout->addWidget(d->m_editButton); d->m_addButton = new QPushButton(this); d->m_addButton->setText(tr("&Add")); buttonLayout->addWidget(d->m_addButton); d->m_resetButton = new QPushButton(this); d->m_resetButton->setEnabled(false); d->m_resetButton->setText(tr("&Reset")); buttonLayout->addWidget(d->m_resetButton); d->m_unsetButton = new QPushButton(this); d->m_unsetButton->setEnabled(false); d->m_unsetButton->setText(tr("&Unset")); buttonLayout->addWidget(d->m_unsetButton); d->m_batchEditButton = new QPushButton(this); d->m_batchEditButton->setText(tr("&Batch Edit...")); buttonLayout->addWidget(d->m_batchEditButton); buttonLayout->addStretch(); horizontalLayout->addLayout(buttonLayout); vbox2->addLayout(horizontalLayout); vbox->addWidget(d->m_detailsContainer); connect(d->m_model, &QAbstractItemModel::dataChanged, this, &EnvironmentWidget::updateButtons); connect(d->m_editButton, &QAbstractButton::clicked, this, &EnvironmentWidget::editEnvironmentButtonClicked); connect(d->m_addButton, &QAbstractButton::clicked, this, &EnvironmentWidget::addEnvironmentButtonClicked); connect(d->m_resetButton, &QAbstractButton::clicked, this, &EnvironmentWidget::removeEnvironmentButtonClicked); connect(d->m_unsetButton, &QAbstractButton::clicked, this, &EnvironmentWidget::unsetEnvironmentButtonClicked); connect(d->m_batchEditButton, &QAbstractButton::clicked, this, &EnvironmentWidget::batchEditEnvironmentButtonClicked); connect(d->m_environmentView->selectionModel(), &QItemSelectionModel::currentChanged, this, &EnvironmentWidget::environmentCurrentIndexChanged); connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated, this, &EnvironmentWidget::linkActivated); connect(d->m_model, &Utils::EnvironmentModel::userChangesChanged, this, &EnvironmentWidget::updateSummaryText); }
void WindowMaterialGlazingRefractionExtinctionMethodInspectorView::createLayout() { auto hiddenWidget = new QWidget(); this->stackedWidget()->addWidget(hiddenWidget); auto visibleWidget = new QWidget(); this->stackedWidget()->addWidget(visibleWidget); auto mainGridLayout = new QGridLayout(); mainGridLayout->setContentsMargins(7, 7, 7, 7); mainGridLayout->setSpacing(14); visibleWidget->setLayout(mainGridLayout); int row = mainGridLayout->rowCount(); QLabel * label = nullptr; // Name label = new QLabel("Name: "); label->setObjectName("H2"); mainGridLayout->addWidget(label, row, 0); ++row; m_nameEdit = new OSLineEdit(); mainGridLayout->addWidget(m_nameEdit, row, 0, 1, 3); ++row; // Standards Information m_standardsInformationWidget = new StandardsInformationMaterialWidget(m_isIP, mainGridLayout, row); ++row; // Thickness label = new QLabel("Thickness: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_thickness = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_thickness, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_thickness,row++,0,1,3); // Solar Index Of Refraction label = new QLabel("Solar Index Of Refraction: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_solarIndexOfRefraction = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_solarIndexOfRefraction, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_solarIndexOfRefraction,row++,0,1,3); // Solar Extinction Coefficient label = new QLabel("Solar Extinction Coefficient: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_solarExtinctionCoefficient = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_solarExtinctionCoefficient, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_solarExtinctionCoefficient,row++,0,1,3); // Visible Index of Refraction label = new QLabel("Visible Index of Refraction: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_visibleIndexOfRefraction = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_visibleIndexOfRefraction, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_visibleIndexOfRefraction,row++,0,1,3); // Visible Extinction Coefficient label = new QLabel("Visible Extinction Coefficient: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_visibleExtinctionCoefficient = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_visibleExtinctionCoefficient, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_visibleExtinctionCoefficient,row++,0,1,3); // Infrared Transmittance At Normal Incidence label = new QLabel("Infrared Transmittance At Normal Incidence: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_infraredTransmittanceAtNormalIncidence = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_infraredTransmittanceAtNormalIncidence, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_infraredTransmittanceAtNormalIncidence,row++,0,1,3); // Infrared Hemispherical Emissivity label = new QLabel("Infrared Hemispherical Emissivity: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_infraredHemisphericalEmissivity = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_infraredHemisphericalEmissivity, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_infraredHemisphericalEmissivity,row++,0,1,3); // Conductivity label = new QLabel("Conductivity: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_conductivity = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_conductivity, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_conductivity,row++,0,1,3); // Dirt Correction Factor For Solar And Visible Transmittance label = new QLabel("Dirt Correction Factor For Solar And Visible Transmittance: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_dirtCorrectionFactorForSolarAndVisibleTransmittance = new OSQuantityEdit(m_isIP); connect(this, &WindowMaterialGlazingRefractionExtinctionMethodInspectorView::toggleUnitsClicked, m_dirtCorrectionFactorForSolarAndVisibleTransmittance, &OSQuantityEdit::onUnitSystemChange); mainGridLayout->addWidget(m_dirtCorrectionFactorForSolarAndVisibleTransmittance,row++,0,1,3); // Solar Diffusing label = new QLabel("Solar Diffusing: "); label->setObjectName("H2"); mainGridLayout->addWidget(label,row++,0); m_solarDiffusing = new OSSwitch(); mainGridLayout->addWidget(m_solarDiffusing,row++,0,1,3); // Stretch mainGridLayout->setRowStretch(100,100); mainGridLayout->setColumnStretch(100,100); }
MainStatusBar::MainStatusBar(QWidget *parent) : QStatusBar(parent), cap_file_(NULL), edit_action_(NULL), delete_action_(NULL) { QSplitter *splitter = new QSplitter(this); #ifdef HAVE_LIBPCAP QString ready_msg(tr("Ready to load or capture")); #else QString ready_msg(tr("Ready to load file")); #endif QWidget *info_progress = new QWidget(this); QHBoxLayout *info_progress_hb = new QHBoxLayout(info_progress); QAction *action; #if defined(Q_OS_WIN) // Handles are the same color as widgets, at least on Windows 7. splitter->setHandleWidth(3); splitter->setStyleSheet(QString( "QSplitter::handle {" " border-left: 1px solid palette(mid);" " border-right: 1px solid palette(mid);" "}" )); #elif defined(Q_OS_MAC) expert_status_.setAttribute(Qt::WA_MacSmallSize, true); #endif expert_status_.setTextFormat(Qt::RichText); expert_status_.hide(); // We just want a clickable image. Using a QPushButton or QToolButton would require // a lot of adjustment. comment_label_.setText("<a href><img src=\":/comment/capture_comment_update.png\"></img></a>"); comment_label_.setToolTip(tr("Open the Capture File Properties dialog")); comment_label_.setEnabled(false); connect(&expert_status_, SIGNAL(linkActivated(QString)), this, SIGNAL(showExpertInfo())); connect(&comment_label_, SIGNAL(linkActivated(QString)), this, SIGNAL(editCaptureComment())); info_progress_hb->setContentsMargins(0, 0, 0, 0); info_status_.setTemporaryContext(STATUS_CTX_TEMPORARY); info_status_.setShrinkable(true); info_progress_hb->addWidget(&expert_status_); info_progress_hb->addWidget(&comment_label_); info_progress_hb->addWidget(&info_status_); info_progress_hb->addWidget(&progress_frame_); info_progress_hb->addStretch(10); splitter->addWidget(info_progress); splitter->addWidget(&packet_status_); splitter->addWidget(&profile_status_); splitter->setStretchFactor(0, 3); splitter->setStretchFactor(1, 3); splitter->setStretchFactor(2, 1); addWidget(splitter, 1); cur_main_status_bar_ = this; splitter->hide(); info_status_.pushText(ready_msg, STATUS_CTX_MAIN); packets_bar_update(); action = ctx_menu_.addAction(tr("Manage Profiles" UTF8_HORIZONTAL_ELLIPSIS)); action->setData(ProfileDialog::ShowProfiles); connect(action, SIGNAL(triggered()), this, SLOT(manageProfile())); ctx_menu_.addSeparator(); action = ctx_menu_.addAction(tr("New" UTF8_HORIZONTAL_ELLIPSIS)); action->setData(ProfileDialog::NewProfile); connect(action, SIGNAL(triggered()), this, SLOT(manageProfile())); edit_action_ = ctx_menu_.addAction(tr("Edit" UTF8_HORIZONTAL_ELLIPSIS)); edit_action_->setData(ProfileDialog::EditCurrentProfile); connect(edit_action_, SIGNAL(triggered()), this, SLOT(manageProfile())); delete_action_ = ctx_menu_.addAction(tr("Delete")); delete_action_->setData(ProfileDialog::DeleteCurrentProfile); connect(delete_action_, SIGNAL(triggered()), this, SLOT(manageProfile())); ctx_menu_.addSeparator(); profile_menu_.setTitle(tr("Switch to")); ctx_menu_.addMenu(&profile_menu_); #ifdef QWINTASKBARPROGRESS_H progress_frame_.enableTaskbarUpdates(true); #endif connect(wsApp, SIGNAL(appInitialized()), splitter, SLOT(show())); connect(wsApp, SIGNAL(appInitialized()), this, SLOT(pushProfileName())); connect(&info_status_, SIGNAL(toggleTemporaryFlash(bool)), this, SLOT(toggleBackground(bool))); connect(wsApp, SIGNAL(profileNameChanged(const gchar *)), this, SLOT(pushProfileName())); connect(&profile_status_, SIGNAL(mousePressedAt(QPoint,Qt::MouseButton)), this, SLOT(showProfileMenu(QPoint,Qt::MouseButton))); connect(&progress_frame_, SIGNAL(stopLoading()), this, SIGNAL(stopLoading())); }
BrightnessAndContrastPopup::BrightnessAndContrastPopup() : Dialog(TApp::instance()->getMainWindow(), true, false, "BrightnessAndContrast"), m_startRas(0) { setWindowTitle(tr("Brightness and Contrast")); setLabelWidth(0); setModal(false); setTopMargin(0); setTopSpacing(0); beginVLayout(); QSplitter *splitter = new QSplitter(Qt::Vertical); splitter->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); addWidget(splitter); endVLayout(); //------------------------- Top Layout -------------------------- QScrollArea *scrollArea = new QScrollArea(splitter); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); splitter->addWidget(scrollArea); splitter->setStretchFactor(0, 1); QFrame *topWidget = new QFrame(scrollArea); topWidget->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); scrollArea->setWidget(topWidget); QGridLayout *topLayout = new QGridLayout(this); topWidget->setLayout(topLayout); //------------------------- Parameters -------------------------- //Brightness QLabel *brightnessLabel = new QLabel(tr("Brightness:")); topLayout->addWidget(brightnessLabel, 0, 0, Qt::AlignRight | Qt::AlignVCenter); m_brightnessField = new DVGui::IntField(topWidget); m_brightnessField->setRange(-127, 127); m_brightnessField->setValue(0); topLayout->addWidget(m_brightnessField, 0, 1); //Contrast QLabel *contrastLabel = new QLabel(tr("Contrast:")); topLayout->addWidget(contrastLabel, 1, 0, Qt::AlignRight | Qt::AlignVCenter); m_contrastField = new DVGui::IntField(topWidget); m_contrastField->setRange(-127, 127); m_contrastField->setValue(0); topLayout->addWidget(m_contrastField, 1, 1); topLayout->setRowStretch(2, 1); //--------------------------- Swatch ---------------------------- m_viewer = new Swatch(splitter); m_viewer->setMinimumHeight(150); m_viewer->setFocusPolicy(Qt::WheelFocus); splitter->addWidget(m_viewer); //--------------------------- Button ---------------------------- m_okBtn = new QPushButton(QString("Apply"), this); connect(m_okBtn, SIGNAL(clicked()), this, SLOT(apply())); addButtonBarWidget(m_okBtn); //------------------------ Connections -------------------------- TApp *app = TApp::instance(); bool ret = true; ret = ret && connect(m_brightnessField, SIGNAL(valueChanged(bool)), this, SLOT(onValuesChanged(bool))); ret = ret && connect(m_contrastField, SIGNAL(valueChanged(bool)), this, SLOT(onValuesChanged(bool))); assert(ret); m_viewer->resize(0, 350); resize(600, 500); }
EventView::EventView( QWidget* parent ) : QDialog( parent ) , m_toolBar( new QToolBar( this ) ) , m_actionUndo( this ) , m_actionRedo( this ) , m_actionNewEvent( this ) , m_actionEditEvent( this ) , m_actionDeleteEvent( this ) , m_actionCreateTimeSheet( this ) , m_actionFindAndReplace( this ) , m_comboBox( new QComboBox( this ) ) , m_labelTotal( new QLabel( this ) ) , m_listView( new QListView( this ) ) { setWindowTitle( tr( "Event Editor" ) ); auto layout = new QVBoxLayout( this ); layout->setMargin( 0 ); layout->setSpacing( 0 ); layout->addWidget( m_toolBar ); layout->addWidget( m_listView ); m_listView->setAlternatingRowColors( true ); m_listView->setContextMenuPolicy( Qt::CustomContextMenu ); connect( m_listView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(slotContextMenuRequested(QPoint)) ); connect( m_listView, SIGNAL(doubleClicked(QModelIndex)), SLOT(slotEventDoubleClicked(QModelIndex)) ); connect( &m_actionNewEvent, SIGNAL(triggered()), SLOT(slotNewEvent()) ); connect( &m_actionEditEvent, SIGNAL(triggered()), SLOT(slotEditEvent()) ); connect( &m_actionDeleteEvent, SIGNAL(triggered()), SLOT(slotDeleteEvent()) ); // connect( &m_commitTimer, SIGNAL(timeout()), // SLOT(slotCommitTimeout()) ); // m_commitTimer.setSingleShot( true ); m_actionUndo.setText(tr("Undo")); m_actionUndo.setToolTip(tr("Undo the latest change")); m_actionUndo.setShortcut(QKeySequence::Undo); m_actionUndo.setEnabled(false); m_actionRedo.setText(tr("Redo")); m_actionRedo.setToolTip(tr("Redo the last undone change.")); m_actionRedo.setShortcut(QKeySequence::Redo); m_actionRedo.setEnabled(false); m_undoStack = new QUndoStack(this); connect(m_undoStack, SIGNAL(canUndoChanged(bool)), &m_actionUndo, SLOT(setEnabled(bool))); connect(m_undoStack, SIGNAL(undoTextChanged(QString)), this, SLOT(slotUndoTextChanged(QString))); connect(&m_actionUndo, SIGNAL(triggered()), m_undoStack, SLOT(undo())); connect(m_undoStack, SIGNAL(canRedoChanged(bool)), &m_actionRedo, SLOT(setEnabled(bool))); connect(m_undoStack, SIGNAL(redoTextChanged(QString)), this, SLOT(slotRedoTextChanged(QString))); connect(&m_actionRedo, SIGNAL(triggered()), m_undoStack, SLOT(redo())); m_actionNewEvent.setText( tr( "New Event..." ) ); m_actionNewEvent.setToolTip( tr( "Create a new Event" ) ); m_actionNewEvent.setIcon( Data::newTaskIcon() ); m_actionNewEvent.setShortcut( QKeySequence::New ); m_toolBar->addAction( &m_actionNewEvent ); m_actionEditEvent.setText( tr( "Edit Event...") ); m_actionEditEvent.setShortcut( Qt::CTRL + Qt::Key_E ); m_actionEditEvent.setIcon( Data::editEventIcon() ); m_toolBar->addAction( &m_actionEditEvent ); m_actionFindAndReplace.setText( tr( "Search/Replace Events..." ) ); m_actionFindAndReplace.setToolTip( tr( "Change the task events belong to" ) ); m_actionFindAndReplace.setIcon( Data::searchIcon() ); m_toolBar->addAction( &m_actionFindAndReplace ); connect( &m_actionFindAndReplace, SIGNAL(triggered()), SLOT(slotFindAndReplace()) ); m_actionDeleteEvent.setText( tr( "Delete Event..." ) ); QList<QKeySequence> deleteShortcuts; deleteShortcuts << QKeySequence::Delete; #ifdef Q_OS_OSX deleteShortcuts << Qt::Key_Backspace; #endif m_actionDeleteEvent.setShortcuts(deleteShortcuts); m_actionDeleteEvent.setIcon( Data::deleteTaskIcon() ); m_toolBar->addAction( &m_actionDeleteEvent ); // disable all actions, action state will be set when the current // item changes: m_actionNewEvent.setEnabled( true ); // always on m_actionEditEvent.setEnabled( false ); m_actionDeleteEvent.setEnabled( false ); m_toolBar->addWidget( m_comboBox ); connect( m_comboBox, SIGNAL(currentIndexChanged(int)), SLOT(timeFrameChanged(int)) ); auto spacer = new QWidget( this ); QSizePolicy spacerSizePolicy = spacer->sizePolicy(); spacerSizePolicy.setHorizontalPolicy( QSizePolicy::Expanding ); spacer->setSizePolicy( spacerSizePolicy ); m_toolBar->addWidget( spacer ); m_toolBar->addWidget( m_labelTotal ); QTimer::singleShot( 0, this, SLOT(delayedInitialization()) ); // I hate doing this but the stupid default view sizeHints suck badly. setMinimumHeight( 200 ); }