85 default: |
86 default: |
86 break; |
87 break; |
87 } |
88 } |
88 } |
89 } |
89 ); |
90 ); |
|
91 connect( |
|
92 this->ui.exportSettingsButton, |
|
93 &QAbstractButton::clicked, |
|
94 [&] |
|
95 { |
|
96 const QString defaultName = QStringLiteral(CMAKE_PROJECT_NAME ".conf"); |
|
97 QString filename = QFileDialog::getSaveFileName(this, "", defaultName, "*.conf"); |
|
98 if (not filename.isEmpty()) |
|
99 { |
|
100 QSettings settings; |
|
101 QSettings exportSettings{filename, QSettings::IniFormat}; |
|
102 for (const QString& key : settings.allKeys()) |
|
103 { |
|
104 exportSettings.setValue(key, settings.value(key)); |
|
105 } |
|
106 exportSettings.sync(); |
|
107 } |
|
108 } |
|
109 ); |
|
110 connect( |
|
111 this->ui.importSettingsButton, |
|
112 &QAbstractButton::clicked, |
|
113 [&] |
|
114 { |
|
115 QString filename = QFileDialog::getOpenFileName(this, "", "", "*.ini"); |
|
116 if (not filename.isEmpty()) |
|
117 { |
|
118 QSettings settings; |
|
119 const QSettings importSettings{filename}; |
|
120 settings.clear(); |
|
121 for (const QString& key : importSettings.allKeys()) |
|
122 { |
|
123 settings.setValue(key, importSettings.value(key)); |
|
124 } |
|
125 settings.sync(); |
|
126 this->loadSettings(); |
|
127 } |
|
128 } |
|
129 ); |
90 for (auto* widget : this->findChildren<QAbstractButton*>()) { |
130 for (auto* widget : this->findChildren<QAbstractButton*>()) { |
91 connect(widget, &QAbstractButton::clicked, this, &SettingsEditor::saveSettings); |
131 connect(widget, &QAbstractButton::clicked, this, &SettingsEditor::saveSettings); |
92 } |
132 } |
93 for (auto* widget : this->findChildren<QSpinBox*>()) { |
133 for (auto* widget : this->findChildren<QSpinBox*>()) { |
94 connect(widget, qOverload<int>(&QSpinBox::valueChanged), this, &SettingsEditor::saveSettings); |
134 connect(widget, qOverload<int>(&QSpinBox::valueChanged), this, &SettingsEditor::saveSettings); |
106 delete &this->ui; |
146 delete &this->ui; |
107 } |
147 } |
108 |
148 |
109 void SettingsEditor::saveSettings() |
149 void SettingsEditor::saveSettings() |
110 { |
150 { |
111 setSetting<Setting::MainColor>(this->ui.mainColorButton->color()); |
151 if (not disableSettingsAutoSave) |
112 setSetting<Setting::BackgroundColor>(this->ui.backgroundColorButton->color()); |
152 { |
113 setSetting<Setting::SelectedColor>(this->ui.selectedColorButton->color()); |
153 setSetting<Setting::MainColor>(this->ui.mainColorButton->color()); |
114 setSetting<Setting::LineThickness>(static_cast<GLfloat>(this->ui.lineThickness->value())); |
154 setSetting<Setting::BackgroundColor>(this->ui.backgroundColorButton->color()); |
115 setSetting<Setting::LineAntiAliasing>(this->ui.lineAntiAliasing->isChecked()); |
155 setSetting<Setting::SelectedColor>(this->ui.selectedColorButton->color()); |
116 setSetting<Setting::LogOpenGLDebugMessages>(this->ui.logOpenGLDebugMessages->isChecked()); |
156 setSetting<Setting::LineThickness>(static_cast<GLfloat>(this->ui.lineThickness->value())); |
117 setSetting<Setting::CodeEditorUseSystemFont>(this->ui.codeEditorSystemFont->isChecked()); |
157 setSetting<Setting::LineAntiAliasing>(this->ui.lineAntiAliasing->isChecked()); |
118 setSetting<Setting::CodeEditorFontFamily>(this->ui.codeEditorFontFamily->currentText()); |
158 setSetting<Setting::LogOpenGLDebugMessages>(this->ui.logOpenGLDebugMessages->isChecked()); |
119 setSetting<Setting::CodeEditorFontSize>(this->ui.codeEditorFontSize->value()); |
159 setSetting<Setting::CodeEditorUseSystemFont>(this->ui.codeEditorSystemFont->isChecked()); |
120 const int viewMode = this->ui.viewModeButtonGroup->checkedId(); |
160 setSetting<Setting::CodeEditorFontFamily>(this->ui.codeEditorFontFamily->currentText()); |
121 if (viewMode != -1) { |
161 setSetting<Setting::CodeEditorFontSize>(this->ui.codeEditorFontSize->value()); |
122 setSetting<Setting::ViewMode>(static_cast<QMdiArea::ViewMode>(viewMode)); |
162 const int viewMode = this->ui.viewModeButtonGroup->checkedId(); |
|
163 if (viewMode != -1) { |
|
164 setSetting<Setting::ViewMode>(static_cast<QMdiArea::ViewMode>(viewMode)); |
|
165 } |
|
166 const QVariant toolButtonStyle = this->ui.toolButtonStyle->currentData(); |
|
167 if (toolButtonStyle.isValid()) { |
|
168 setSetting<Setting::ToolButtonStyle>( |
|
169 static_cast<Qt::ToolButtonStyle>(toolButtonStyle.toInt())); |
|
170 } |
|
171 this->librariesEditor.saveSettings(); |
|
172 Q_EMIT this->settingsChanged(); |
123 } |
173 } |
124 const QVariant toolButtonStyle = this->ui.toolButtonStyle->currentData(); |
|
125 if (toolButtonStyle.isValid()) { |
|
126 setSetting<Setting::ToolButtonStyle>( |
|
127 static_cast<Qt::ToolButtonStyle>(toolButtonStyle.toInt())); |
|
128 } |
|
129 this->librariesEditor.saveSettings(); |
|
130 Q_EMIT this->settingsChanged(); |
|
131 } |
174 } |
132 |
175 |
133 void SettingsEditor::loadSettings() |
176 void SettingsEditor::loadSettings() |
134 { |
177 { |
|
178 this->disableSettingsAutoSave = true; |
135 this->libraries.restoreFromSettings(); |
179 this->libraries.restoreFromSettings(); |
136 this->ui.mainColorButton->setColor(setting<Setting::MainColor>()); |
180 this->ui.mainColorButton->setColor(setting<Setting::MainColor>()); |
137 this->ui.backgroundColorButton->setColor(setting<Setting::BackgroundColor>()); |
181 this->ui.backgroundColorButton->setColor(setting<Setting::BackgroundColor>()); |
138 this->ui.selectedColorButton->setColor(setting<Setting::SelectedColor>()); |
182 this->ui.selectedColorButton->setColor(setting<Setting::SelectedColor>()); |
139 this->ui.lineThickness->setValue(double_cast(setting<Setting::LineThickness>())); |
183 this->ui.lineThickness->setValue(double_cast(setting<Setting::LineThickness>())); |