Skip to content
Snippets Groups Projects
Commit 21203507 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

remember positions

parent 1df7f3fe
No related branches found
No related tags found
1 merge request!2085Add splitters to sample view (#810)
Pipeline #118571 passed
......@@ -26,6 +26,7 @@ const char S_JOB_SELECTOR_PANEL[] = "JobSelectorPanel";
const char S_FIT_ACTIVITY_PANEL[] = "FitActivityPanel";
const char S_FIT_SESSION_WIDGET[] = "FitSessionWidget";
const char S_JOB_PROPERTIES_WIDGET[] = "JobPropertiesWidget";
const char S_SAMPLE_3DVIEW_WIDGET[] = "Sample3DviewWidget";
// Settings keys
const char S_WINDOW_SIZE[] = "size";
......@@ -37,6 +38,7 @@ const char S_JOB_SELECTOR_SPLITTER_SIZES[] = "splitter_sizes";
const char S_FIT_ACTIVITY_PANEL_SIZE[] = "size";
const char S_FIT_SESSION_WIDGET_CURRENT_TAB[] = "current_tab";
const char S_JOB_PROPERTIES_WIDGET_CURRENT_TAB[] = "current_tab";
const char S_SAMPLE_3DVIEW_WIDGET_SIZE[] = "size";
const int MAX_RECENT_PROJECTS = 10;
......@@ -48,6 +50,8 @@ const unsigned int JOB_MESSAGE_PANEL_HEIGHT = 400;
const unsigned int JOB_SELECTOR_PANEL_WIDTH = 231;
const unsigned int RUN_FIT_CONTROL_WIDGET_HEIGHT = 50;
const unsigned int ITEM_SELECTOR_WIDGET_WIDTH = 96;
const unsigned int SAMPLE_3DVIEW_WIDGET_WIDTH = 500;
const unsigned int SAMPLE_3DVIEW_WIDGET_HEIGHT = 400;
// Widget names
......
......@@ -18,6 +18,7 @@
#include "GUI/Model/Sample/LayerItem.h"
#include "GUI/Model/Sample/ParticleLayoutItem.h"
#include "GUI/Model/Sample/SampleItem.h"
#include "GUI/Support/Tool/mainwindow_constants.h"
#include "GUI/View/SampleDesigner/SampleEditor.h"
#include "GUI/View/SampleDesigner/SampleListing.h"
#include "GUI/View/SampleDesigner/ScriptPanel.h"
......@@ -31,6 +32,7 @@
#include <QDockWidget>
#include <QMenu>
#include <QMessageBox>
#include <QSettings>
#include <QSplitter>
#include <QToolButton>
#include <QWidgetAction>
......@@ -77,6 +79,18 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document)
auto* scriptPanel = new ScriptPanel(this);
hSplitter->addWidget(scriptPanel);
applySplitterPos();
// unfix RealspacePanel size only on manual resize
connect(hSplitter, &QSplitter::splitterMoved, [this, hSplitter] {
m_realspacePanel->setMinimumWidth(1); // somehow with min width >0 it behaves better
m_realspacePanel->setMaximumWidth(QWIDGETSIZE_MAX);
});
connect(vSplitter, &QSplitter::splitterMoved, [this, hSplitter] {
m_realspacePanel->setMinimumHeight(0);
m_realspacePanel->setMaximumHeight(QWIDGETSIZE_MAX);
});
//... Finish
toolbar->addAction(m_listing->newSampleAction());
......@@ -119,6 +133,33 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document)
Qt::UniqueConnection);
}
SampleView::~SampleView()
{
saveSplitterPos();
}
void SampleView::applySplitterPos()
{
QSettings settings;
if (settings.childGroups().contains(GUI::Constants::S_SAMPLE_3DVIEW_WIDGET)) {
settings.beginGroup(GUI::Constants::S_SAMPLE_3DVIEW_WIDGET);
m_realspacePanel->setFixedSize(
settings.value(GUI::Constants::S_SAMPLE_3DVIEW_WIDGET_SIZE).toSize());
settings.endGroup();
} else
m_realspacePanel->setFixedSize(GUI::Constants::SAMPLE_3DVIEW_WIDGET_WIDTH,
GUI::Constants::SAMPLE_3DVIEW_WIDGET_HEIGHT);
}
void SampleView::saveSplitterPos()
{
QSettings settings;
settings.beginGroup(GUI::Constants::S_SAMPLE_3DVIEW_WIDGET);
settings.setValue(GUI::Constants::S_SAMPLE_3DVIEW_WIDGET_SIZE, m_realspacePanel->size());
settings.endGroup();
settings.sync();
}
void SampleView::updateSingleSampleMode()
{
// m_docks->setDockVisible(SAMPLE_LIST, !m_document->singleSampleMode());
......
......@@ -27,6 +27,7 @@ class SampleView : public QWidget {
Q_OBJECT
public:
SampleView(QWidget* parent, ProjectDocument* document);
~SampleView();
void fillViewMenu(QMenu* menu);
......@@ -44,6 +45,9 @@ private:
void onSingleSampleModeChanged(bool newState);
void applySplitterPos();
void saveSplitterPos();
ProjectDocument* m_document = nullptr;
RealspacePanel* m_realspacePanel = nullptr;
SampleListing* m_listing = nullptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment