39 from classes
import info, ui_util, settings, qt_types, updates
40 from classes.app
import get_app
41 from classes.language
import get_all_languages
42 from classes.logger
import log
52 ui_path = os.path.join(info.PATH,
'windows',
'ui',
'preferences.ui')
57 QDialog.__init__(self)
81 if "setting" in item
and "value" in item:
82 self.
params[item[
"setting"]] = item
91 category = item.get(
"category")
92 setting_type = item.get(
"type")
93 sort_category = item.get(
"sort")
99 if not setting_type ==
"hidden":
105 scroll_area = QScrollArea(self)
106 scroll_area.setWidgetResizable(
True)
107 scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
108 scroll_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
111 layout = QVBoxLayout()
112 tabWidget = QWidget(self)
113 tabWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
114 tabWidget.setLayout(layout)
115 scroll_area.setWidget(tabWidget)
118 self.tabCategories.addTab(scroll_area, _(category))
122 item[
"title_tr"] = _(item.get(
"title"))
128 for category
in self.category_tabs.keys():
133 if self.category_sort.get(category):
135 params.sort(key=operator.itemgetter(
"title_tr"))
143 label.setText(_(param[
"title"]))
144 label.setToolTip(_(param[
"title"]))
146 if param[
"type"] ==
"spinner":
148 widget = QDoubleSpinBox()
149 widget.setMinimum(float(param[
"min"]))
150 widget.setMaximum(float(param[
"max"]))
151 widget.setValue(float(param[
"value"]))
152 widget.setSingleStep(1.0)
153 widget.setToolTip(param[
"title"])
156 if param[
"type"] ==
"spinner-int":
159 widget.setMinimum(int(param[
"min"]))
160 widget.setMaximum(int(param[
"max"]))
161 widget.setValue(int(param[
"value"]))
162 widget.setSingleStep(1.0)
163 widget.setToolTip(param[
"title"])
166 elif param[
"type"] ==
"text":
169 widget.setText(_(param[
"value"]))
172 elif param[
"type"] ==
"bool":
175 if param[
"value"] ==
True:
176 widget.setCheckState(Qt.Checked)
178 widget.setCheckState(Qt.Unchecked)
179 widget.stateChanged.connect(functools.partial(self.
bool_value_changed, widget, param))
181 elif param[
"type"] ==
"dropdown":
187 value_list = param[
"values"]
189 if param[
"setting"] ==
"default-profile":
192 for profile_folder
in [info.USER_PROFILES_PATH, info.PROFILES_PATH]:
193 for file
in os.listdir(profile_folder):
195 profile_path = os.path.join(profile_folder, file)
196 profile = openshot.Profile(profile_path)
197 value_list.append({
"name":profile.info.description,
"value":profile.info.description})
199 value_list.sort(key=operator.itemgetter(
"name"))
202 if param[
"setting"] ==
"default-language":
208 lang_name =
"%s (%s)" % (language, locale)
209 value_list.append({
"name":lang_name,
"value":locale})
211 value_list.sort(key=operator.itemgetter(
"name"))
213 value_list.insert(0, {
"name":_(
"Default"),
"value":
"Default"})
218 for value_item
in value_list:
219 k = value_item[
"name"]
220 v = value_item[
"value"]
222 widget.addItem(_(k), v)
225 if v == param[
"value"]:
226 widget.setCurrentIndex(box_index)
227 box_index = box_index + 1
233 if (widget
and label):
235 label.setMinimumWidth(180);
236 label.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
237 widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
240 layout_hbox = QHBoxLayout()
241 layout_hbox.addWidget(label)
242 layout_hbox.addWidget(widget)
245 tabWidget.layout().addLayout(layout_hbox)
248 tabWidget.layout().addWidget(label)
251 tabWidget.layout().addStretch()
256 if "restart" in param
and param[
"restart"]:
261 if state == Qt.Checked:
262 self.s.set(param[
"setting"],
True)
264 self.s.set(param[
"setting"],
False)
267 if param[
"setting"] ==
"debug-mode":
269 log.info(
"Setting debug-mode to %s" % (state == Qt.Checked))
270 debug_enabled = (state == Qt.Checked)
273 openshot.ZmqLogger.Instance().Enable(debug_enabled)
275 elif param[
"setting"] ==
"enable-auto-save":
277 if (state == Qt.Checked):
279 get_app().window.auto_save_timer.start()
282 get_app().window.auto_save_timer.stop()
284 elif param[
"setting"] ==
"hardware_decode":
285 if (state == Qt.Checked):
287 os.environ[
'OS2_DECODE_HW'] =
"1"
290 os.environ[
'OS2_DECODE_HW'] =
"0"
297 self.s.set(param[
"setting"], value)
300 if param[
"setting"] ==
"autosave-interval":
302 get_app().window.auto_save_timer.setInterval(value * 1000 * 60)
305 if param[
"setting"]
in [
"cache-limit-mb",
"cache-scale",
"cache-quality"]:
306 get_app().window.InitCacheSettings()
315 value = widget.toPlainText()
320 if param.get(
"category") ==
"Keyboard":
321 previous_value = value
322 value = QKeySequence(value).toString()
323 log.info(
"Parsing keyboard mapping via QKeySequence from %s to %s" % (previous_value, value))
326 self.s.set(param[
"setting"], value)
334 value = widget.itemData(index)
335 self.s.set(param[
"setting"], value)
339 if param[
"setting"]
in [
"cache-mode",
"cache-image-format"]:
340 get_app().window.InitCacheSettings()
356 msg.setWindowTitle(_(
"Restart Required"))
357 msg.setText(_(
"Please restart OpenShot for all preferences to take effect."))
361 super(Preferences, self).
reject()
def track_metric_screen
Track a GUI screen being shown.
def get_app
Returns the current QApplication instance of OpenShot.
def dropdown_index_changed
def check_for_restart
Check if the app needs to restart.
def load_ui
Load a Qt *.ui file, and also load an XML parsed version.
def spinner_value_changed
def closeEvent
Signal for closing Preferences window.
def init_ui
Initialize all child widgets and action of a window or dialog.
def get_all_languages
Get all language names and countries packaged with OpenShot.
def get_settings
Get the current QApplication's settings instance.