Skip to content

Commit

Permalink
Make SimulationDialog remember its geometry.
Browse files Browse the repository at this point in the history
Moved the VerticalScrollArea class to Utilities.
  • Loading branch information
adeas31 committed Oct 26, 2016
1 parent 3f78d75 commit 755ceb7
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 28 deletions.
47 changes: 22 additions & 25 deletions OMEdit/OMEditGUI/Simulation/SimulationDialog.cpp
Expand Up @@ -81,11 +81,18 @@ SimulationDialog::~SimulationDialog()
}

/*!
Reimplementation of QDialog::show method.
\param pLibraryTreeItem - pointer to LibraryTreeItem
*/
* \brief SimulationDialog::show
* Reimplementation of QDialog::show method.
* \param pLibraryTreeItem - pointer to LibraryTreeItem
* \param isReSimulate
* \param simulationOptions
*/
void SimulationDialog::show(LibraryTreeItem *pLibraryTreeItem, bool isReSimulate, SimulationOptions simulationOptions)
{
/* restore the window geometry. */
if (mpMainWindow->getOptionsDialog()->getGeneralSettingsPage()->getPreserveUserCustomizations()) {
restoreGeometry(Utilities::getApplicationSettings()->value("SimulationDialog/geometry").toByteArray());
}
mpLibraryTreeItem = pLibraryTreeItem;
initializeFields(isReSimulate, simulationOptions);
setVisible(true);
Expand All @@ -110,28 +117,6 @@ void SimulationDialog::directSimulate(LibraryTreeItem *pLibraryTreeItem, bool la
simulate();
}

/*!
A scroll area with vertical bar and adjustment of width
See: https://forum.qt.io/topic/13374/solved-qscrollarea-vertical-scroll-only
*/
class VerticalScrollArea : public QScrollArea
{
public:
VerticalScrollArea()
{
setWidgetResizable(true);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}

virtual bool eventFilter(QObject *o, QEvent *e)
{
if (o && o == widget() && e->type() == QEvent::Resize)
setMinimumWidth(widget()->minimumSizeHint().width() + verticalScrollBar()->width());
return QScrollArea::eventFilter(o, e);
}
};

/*!
Creates all the controls and set their layout.
*/
Expand Down Expand Up @@ -1253,6 +1238,17 @@ void SimulationDialog::performSimulation()
}
}

/*!
* \brief SimulationDialog::saveDialogGeometry
*/
void SimulationDialog::saveDialogGeometry()
{
/* save the window geometry. */
if (mpMainWindow->getOptionsDialog()->getGeneralSettingsPage()->getPreserveUserCustomizations()) {
Utilities::getApplicationSettings()->setValue("SimulationDialog/geometry", saveGeometry());
}
}

void SimulationDialog::reSimulate(SimulationOptions simulationOptions)
{
createAndShowSimulationOutputWidget(simulationOptions);
Expand Down Expand Up @@ -1515,6 +1511,7 @@ void SimulationDialog::simulate()
performSimulation();
}
}
saveDialogGeometry();
accept();
}
}
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEditGUI/Simulation/SimulationDialog.h
Expand Up @@ -195,6 +195,7 @@ class SimulationDialog : public QDialog
void saveExperimentAnnotation();
void saveSimulationFlagsAnnotation();
void performSimulation();
void saveDialogGeometry();
public:
void reSimulate(SimulationOptions simulationOptions);
void showAlgorithmicDebugger(SimulationOptions simulationOptions);
Expand Down
6 changes: 3 additions & 3 deletions OMEdit/OMEditGUI/Util/Utilities.cpp
Expand Up @@ -225,8 +225,9 @@ Label::Label(const QString &text, QWidget *parent, Qt::WindowFlags flags)

QSize Label::minimumSizeHint() const
{
if (pixmap() != NULL || mElideMode == Qt::ElideNone)
if (pixmap() != NULL || mElideMode == Qt::ElideNone) {
return QLabel::minimumSizeHint();
}
const QFontMetrics &fm = fontMetrics();
QSize size(fm.width("..."), fm.height()+5);
return size;
Expand All @@ -250,8 +251,7 @@ void Label::setText(const QString &text)

void Label::resizeEvent(QResizeEvent *event)
{
if (mElideMode != Qt::ElideNone)
{
if (mElideMode != Qt::ElideNone) {
QFontMetrics fm(fontMetrics());
QString str = fm.elidedText(mText, mElideMode, event->size().width());
QLabel::setText(str);
Expand Down
26 changes: 26 additions & 0 deletions OMEdit/OMEditGUI/Util/Utilities.h
Expand Up @@ -52,6 +52,8 @@
#include <QGroupBox>
#include <QListWidget>
#include <QListWidgetItem>
#include <QScrollArea>
#include <QScrollBar>

#ifdef WIN32
#include <windows.h>
Expand Down Expand Up @@ -376,6 +378,30 @@ private slots:
void pickColor();
};

/*!
* \brief The VerticalScrollArea class
* A scroll area with vertical bar and adjustment of width
* See: https://forum.qt.io/topic/13374/solved-qscrollarea-vertical-scroll-only
*/
class VerticalScrollArea : public QScrollArea
{
public:
VerticalScrollArea()
{
setWidgetResizable(true);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}

virtual bool eventFilter(QObject *o, QEvent *e)
{
if (o && o == widget() && e->type() == QEvent::Resize) {
setMinimumWidth(widget()->minimumSizeHint().width() + verticalScrollBar()->width());
}
return QScrollArea::eventFilter(o, e);
}
};

namespace Utilities {

enum LineEndingMode {
Expand Down

0 comments on commit 755ceb7

Please sign in to comment.