//========================================================================== // PREFERENCESDIALOG.CC - part of // // OMNeT++/OMNEST // Discrete System Simulation in C++ // //========================================================================== /*--------------------------------------------------------------* Copyright (C) 1992-2017 Andras Varga Copyright (C) 2006-2017 OpenSim Ltd. This file is distributed WITHOUT ANY WARRANTY. See the file `license' for details on this and other legal matters. *--------------------------------------------------------------*/ #include "preferencesdialog.h" #include "ui_preferencesdialog.h" #include "qtenv.h" #include "inspectorutil.h" #include namespace omnetpp { namespace qtenv { PreferencesDialog::PreferencesDialog(eTab defaultPage, QWidget *parent) : QDialog(parent), ui(new Ui::PreferencesDialog) { ui->setupUi(this); setFont(getQtenv()->getBoldFont()); if (defaultPage == TAB_NOTDEFINED) { QVariant variant = getQtenv()->getPref("preferences-dialog-page"); ui->tabWidget->setCurrentIndex(variant.isValid() ? variant.value() : 0); } else ui->tabWidget->setCurrentIndex(defaultPage); init(); } // TODO: use default values passed to getPref, and store ref to opt or ptr to env void PreferencesDialog::init() { // General tab QVariant variant; variant = getQtenv()->getPref("confirm-exit"); ui->confirmExit->setChecked(variant.isValid() ? variant.value() : true); ui->express->setText(QString::number(getQtenv()->opt->updateFreqExpress)); // XXX This conversion is fragile, it depends on the order of // both the enum values, and the items in the checkbox. ui->hideNameSpace->setCurrentIndex(getQtenv()->opt->stripNamespace); // Logs tab ui->initBanners->setChecked(getQtenv()->opt->printInitBanners); ui->eventBanners->setChecked(getQtenv()->opt->printEventBanners); ui->shortBanners->setChecked(getQtenv()->opt->shortBanners); ui->logPrefix->setText(getQtenv()->opt->logFormat.c_str()); ui->scrollback->setText(QString::number(getQtenv()->opt->scrollbackLimit)); ui->overall->setText(QString::number(getQtenv()->getLogBuffer()->getMaxNumEntries())); for (int i = 0; i < ui->logLevel->count(); ++i) ui->logLevel->setItemData(i, cLog::resolveLogLevel(ui->logLevel->itemText(i).toLatin1())); ui->logLevel->setCurrentIndex(ui->logLevel->findData(getQtenv()->opt->logLevel)); // Layouting tab switch(getQtenv()->opt->layouterChoice) { case LAYOUTER_FAST: ui->fastRadio->setChecked(true); break; case LAYOUTER_ADVANCED: ui->advancedRadio->setChecked(true); break; case LAYOUTER_AUTO: ui->adaptiveRadio->setChecked(true); break; } ui->showLayouting->setChecked(getQtenv()->opt->showLayouting); ui->arrange->setChecked(getQtenv()->opt->arrangeVectorConnections); variant = getQtenv()->getPref("layout-may-change-zoom"); ui->allowZoom->setChecked(variant.isValid() ? variant.value() : false); // Animation tab ui->animMsg->setChecked(getQtenv()->opt->animationEnabled); variant = getQtenv()->getPref("concurrent-anim"); ui->animBroadcast->setChecked(variant.isValid() ? variant.value() : false); ui->showMarker->setChecked(getQtenv()->opt->showNextEventMarkers); ui->showArrows->setChecked(getQtenv()->opt->showSendDirectArrows); ui->showBubbles->setChecked(getQtenv()->opt->showBubbles); ui->animCalls->setChecked(getQtenv()->opt->animateMethodCalls); ui->dispName->setChecked(getQtenv()->opt->animationMsgNames); ui->dispClass->setChecked(getQtenv()->opt->animationMsgClassNames); ui->colorMsg->setChecked(getQtenv()->opt->animationMsgColors); ui->penguinMode->setChecked(getQtenv()->opt->penguinMode); ui->delayEdit->setText(QString::number(getQtenv()->opt->methodCallAnimDuration)); // Filtering tab variant = getQtenv()->getPref("timeline-wantselfmsgs"); ui->selfMsg->setChecked(variant.isValid() ? variant.value() : true); variant = getQtenv()->getPref("timeline-wantnonselfmsgs"); ui->nonSelfMsg->setChecked(variant.isValid() ? variant.value() : true); variant = getQtenv()->getPref("timeline-wantsilentmsgs"); ui->silentMsg->setChecked(variant.isValid() ? variant.value() : true); ui->excludMsgEdit->setText(getQtenv()->getSilentEventFilters()); // Fonts tab QFont interfaceFont = getQtenv()->getBoldFont(); QFont timelineFont = getQtenv()->getTimelineFont(); QFont canvasFont = getQtenv()->getCanvasFont(); QFont logBoxFont = getQtenv()->getLogFont(); QFont timeFont = getQtenv()->getTimeFont(); setFontsTabFonts(interfaceFont, timelineFont, canvasFont, logBoxFont, timeFont); connect(ui->restoreButton, SIGNAL(clicked()), this, SLOT(restoreDefaultFonts())); adjustSize(); } void PreferencesDialog::setFontsTabFonts(const QFont &interfaceFont, const QFont &timelineFont, const QFont &canvasFont, const QFont &logBoxFont, const QFont &timeFont) { ui->userInterfaceBox->setCurrentFont(interfaceFont); ui->userInterfaceNumBox->setValue(interfaceFont.pointSize()); ui->timeLineBox->setCurrentFont(timelineFont); ui->timeLineNumBox->setValue(timelineFont.pointSize()); ui->canvasBox->setCurrentFont(canvasFont); ui->canvasNumBox->setValue(canvasFont.pointSize()); ui->logBox->setCurrentFont(logBoxFont); ui->logNumBox->setValue(logBoxFont.pointSize()); ui->timeBox->setCurrentFont(timeFont); ui->timeNumBox->setValue(timeFont.pointSize()); } void PreferencesDialog::restoreDefaultFonts() { QFont interfaceFont = getQtenv()->getDefaultBoldFont(); QFont timelineFont = getQtenv()->getDefaultTimelineFont(); QFont canvasFont = getQtenv()->getDefaultCanvasFont(); QFont logBoxFont = getQtenv()->getDefaultLogFont(); QFont timeFont = getQtenv()->getDefaultTimeFont(); setFontsTabFonts(interfaceFont, timelineFont, canvasFont, logBoxFont, timeFont); } void PreferencesDialog::accept() { getQtenv()->opt->updateFreqExpress = ui->express->text().toLong(); getQtenv()->setSilentEventFilters(ui->excludMsgEdit->toPlainText().toStdString().c_str()); QString n = ui->overall->text(); if (n.isEmpty() || n.toInt() != 0) { int historySize = n.toInt(); if (!n.isEmpty() && historySize < 100) historySize = 100; getQtenv()->getLogBuffer()->setMaxNumEntries(historySize); } n = ui->scrollback->text(); if (n.isEmpty() || n.toInt() != 0) { int scrollBack = n.toInt(); if (!n.isEmpty() && scrollBack < 500) scrollBack = 500; getQtenv()->opt->scrollbackLimit = scrollBack; } getQtenv()->opt->printEventBanners = ui->eventBanners->isChecked(); getQtenv()->opt->printInitBanners = ui->initBanners->isChecked(); getQtenv()->opt->shortBanners = ui->shortBanners->isChecked(); std::string logFormat = ui->logPrefix->text().toStdString(); getQtenv()->setLogFormat(logFormat.c_str()); getQtenv()->opt->logFormat = logFormat.c_str(); LogLevel logLevel = LogLevel(ui->logLevel->currentData().toInt()); getQtenv()->opt->logLevel = logLevel; getQtenv()->setLogLevel(logLevel); getQtenv()->opt->animationEnabled = ui->animMsg->isChecked(); getQtenv()->setPref("concurrent-anim", ui->animBroadcast->isChecked()); getQtenv()->opt->showNextEventMarkers = ui->showMarker->isChecked(); getQtenv()->opt->showSendDirectArrows = ui->showArrows->isChecked(); getQtenv()->opt->animateMethodCalls = ui->animCalls->isChecked(); getQtenv()->opt->methodCallAnimDuration = ui->delayEdit->text().toInt(); getQtenv()->opt->animationMsgNames = ui->dispName->isChecked(); getQtenv()->opt->animationMsgClassNames = ui->dispClass->isChecked(); getQtenv()->opt->animationMsgColors = ui->colorMsg->isChecked(); getQtenv()->opt->penguinMode = ui->penguinMode->isChecked(); getQtenv()->opt->showLayouting = ui->showLayouting->isChecked(); getQtenv()->opt->layouterChoice = ui->fastRadio->isChecked() ? LAYOUTER_FAST : ui->advancedRadio->isChecked() ? LAYOUTER_ADVANCED : LAYOUTER_AUTO; getQtenv()->opt->arrangeVectorConnections = ui->arrange->isChecked(); getQtenv()->opt->showBubbles = ui->showBubbles->isChecked(); getQtenv()->setPref("confirm-exit", ui->confirmExit->isChecked()); // TODO: this conversion is fragile, it depends on the order of the enum which might change getQtenv()->opt->stripNamespace = StripNamespace(ui->hideNameSpace->currentIndex()); getQtenv()->setPref("layout-may-change-zoom", ui->allowZoom->isChecked()); getQtenv()->setPref("timeline-wantselfmsgs", ui->selfMsg->isChecked()); getQtenv()->setPref("timeline-wantnonselfmsgs", ui->nonSelfMsg->isChecked()); getQtenv()->setPref("timeline-wantsilentmsgs", ui->silentMsg->isChecked()); // Fonts tab QFont font = ui->userInterfaceBox->currentFont(); font.setPointSize(ui->userInterfaceNumBox->value()); getQtenv()->setBoldFont(font); font = ui->timeLineBox->currentFont(); font.setPointSize(ui->timeLineNumBox->value()); getQtenv()->setTimelineFont(font); font = ui->canvasBox->currentFont(); font.setPointSize(ui->canvasNumBox->value()); getQtenv()->setCanvasFont(font); font = ui->logBox->currentFont(); font.setPointSize(ui->logNumBox->value()); getQtenv()->setLogFont(font); font = ui->timeBox->currentFont(); font.setPointSize(ui->timeNumBox->value()); getQtenv()->setTimeFont(font); getQtenv()->updateQtFonts(); getQtenv()->callRefreshInspectors(); getQtenv()->setPref("preferences-dialog-page", ui->tabWidget->currentIndex()); QDialog::accept(); } PreferencesDialog::~PreferencesDialog() { delete ui; } } // namespace qtenv } // namespace omnetpp