- in Preferences, added a control in the General -> GUI Settings to control the font size for the entire application; require an app restart
This commit is contained in:
@@ -12,6 +12,7 @@ CHANGELOG for FlatCAM Evo beta
|
|||||||
- updated the FCButton and FCLabel custom widgets
|
- updated the FCButton and FCLabel custom widgets
|
||||||
- Paint Plugin: fixed issues caused by the latest changes in the Shapely module
|
- Paint Plugin: fixed issues caused by the latest changes in the Shapely module
|
||||||
- NCC Plugin: some changes in the method used by the Tcl Command
|
- NCC Plugin: some changes in the method used by the Tcl Command
|
||||||
|
- in Preferences, added a control in the General -> GUI Settings to control the font size for the entire application; require an app restart
|
||||||
|
|
||||||
31.05.2023
|
31.05.2023
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ from PyQt6 import QtWidgets, QtCore, QtGui
|
|||||||
from PyQt6.QtCore import QSettings
|
from PyQt6.QtCore import QSettings
|
||||||
|
|
||||||
from appGUI.GUIElements import RadioSet, FCCheckBox, FCComboBox, FCSliderWithSpinner, FCColorEntry, FCLabel, \
|
from appGUI.GUIElements import RadioSet, FCCheckBox, FCComboBox, FCSliderWithSpinner, FCColorEntry, FCLabel, \
|
||||||
GLay, FCFrame, FCComboBox2
|
GLay, FCFrame, FCComboBox2, FCButton, FCSpinner
|
||||||
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
|
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
|
||||||
|
from appTranslation import restart_program
|
||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
import appTranslation as fcTranslate
|
import appTranslation as fcTranslate
|
||||||
@@ -159,6 +160,24 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
|
|||||||
grid0.addWidget(self.ui_lay_lbl, 14, 0)
|
grid0.addWidget(self.ui_lay_lbl, 14, 0)
|
||||||
grid0.addWidget(self.gui_lay_combo, 14, 1, 1, 2)
|
grid0.addWidget(self.gui_lay_combo, 14, 1, 1, 2)
|
||||||
|
|
||||||
|
# Font Size
|
||||||
|
self.font_size_lbl = FCLabel('%s:' % _("Font Size"))
|
||||||
|
self.font_size_lbl.setToolTip(
|
||||||
|
_("Setting the Font Size for the entire application.")
|
||||||
|
)
|
||||||
|
self.app_font_size_entry = FCSpinner()
|
||||||
|
self.app_font_size_entry.set_range(9, 18)
|
||||||
|
|
||||||
|
grid0.addWidget(self.font_size_lbl, 16, 0)
|
||||||
|
grid0.addWidget(self.app_font_size_entry, 16, 1)
|
||||||
|
|
||||||
|
# Apply UI parameters
|
||||||
|
self.apply_app_font_size_btn = FCButton(_("Apply and Restart"), bold=True)
|
||||||
|
self.apply_app_font_size_btn.setToolTip(
|
||||||
|
_("Setting the Font Size for the entire application.")
|
||||||
|
)
|
||||||
|
grid0.addWidget(self.apply_app_font_size_btn, 18, 0, 1, 2)
|
||||||
|
|
||||||
# #############################################################################################################
|
# #############################################################################################################
|
||||||
# Grid1 Frame
|
# Grid1 Frame
|
||||||
# #############################################################################################################
|
# #############################################################################################################
|
||||||
@@ -391,6 +410,24 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
|
|||||||
|
|
||||||
self.layout_combo.activated.connect(self.app.on_layout)
|
self.layout_combo.activated.connect(self.app.on_layout)
|
||||||
|
|
||||||
|
self.apply_app_font_size_btn.clicked.connect(
|
||||||
|
lambda: self.handle_font_size(self.app, self.app_font_size_entry.get_value()))
|
||||||
|
|
||||||
|
# Set UI
|
||||||
|
qsettings = QSettings("Open Source", "FlatCAM_EVO")
|
||||||
|
if qsettings.contains("font_size"):
|
||||||
|
font_size = int(qsettings.value("font_size", type=str)) # noqa
|
||||||
|
self.app_font_size_entry.set_value(font_size)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def handle_font_size(app, val):
|
||||||
|
settings = QSettings("Open Source", "FlatCAM_EVO")
|
||||||
|
settings.setValue('font_size', str(val))
|
||||||
|
# This will write the setting to the platform specific storage.
|
||||||
|
del settings
|
||||||
|
|
||||||
|
restart_program(app=app)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def handle_style(style):
|
def handle_style(style):
|
||||||
# set current style
|
# set current style
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
# MIT Licence #
|
# MIT Licence #
|
||||||
# ##########################################################
|
# ##########################################################
|
||||||
|
|
||||||
import os, ctypes
|
import os
|
||||||
|
import ctypes
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -152,8 +153,7 @@ def apply_language(domain, lang=None):
|
|||||||
# This will write the setting to the platform specific storage.
|
# This will write the setting to the platform specific storage.
|
||||||
del settings
|
del settings
|
||||||
else:
|
else:
|
||||||
# TODO if lang is None we make a string from it?
|
name = str(lang) # we make it a string: "None"
|
||||||
name = str(lang)
|
|
||||||
|
|
||||||
for lang_code, lang_usable in load_languages().items():
|
for lang_code, lang_usable in load_languages().items():
|
||||||
if lang_usable == name:
|
if lang_usable == name:
|
||||||
@@ -239,10 +239,10 @@ def restart_program(app, ask=None):
|
|||||||
try:
|
try:
|
||||||
python = sys.executable
|
python = sys.executable
|
||||||
os.execl(python, python, *sys.argv)
|
os.execl(python, python, *sys.argv)
|
||||||
except Exception as err:
|
except Exception:
|
||||||
# app_run_as_admin = isAdmin()
|
# app_run_as_admin = isAdmin()
|
||||||
msgbox = FCMessageBox(parent=app.ui)
|
msgbox = FCMessageBox(parent=app.ui)
|
||||||
title = _("The language will be applied at the next application start.")
|
title = _("The setting will be applied at the next application start.")
|
||||||
txt = _("The user does not have admin rights or UAC issues.")
|
txt = _("The user does not have admin rights or UAC issues.")
|
||||||
msgbox.setWindowTitle('%s ...' % _("Quit")) # taskbar still shows it
|
msgbox.setWindowTitle('%s ...' % _("Quit")) # taskbar still shows it
|
||||||
msgbox.setWindowIcon(QtGui.QIcon(resource_loc + '/app128.png'))
|
msgbox.setWindowIcon(QtGui.QIcon(resource_loc + '/app128.png'))
|
||||||
@@ -256,7 +256,7 @@ def restart_program(app, ask=None):
|
|||||||
msgbox.exec()
|
msgbox.exec()
|
||||||
|
|
||||||
|
|
||||||
# TODO Due of some circular imports issues which I currently can't fix I readd this class here
|
# TODO Due of some circular imports issues which I currently can't fix I re-add this class here
|
||||||
# (mainly is located in appGUI.GUIElements) - required for a consistent look
|
# (mainly is located in appGUI.GUIElements) - required for a consistent look
|
||||||
class FCMessageBox(QtWidgets.QMessageBox):
|
class FCMessageBox(QtWidgets.QMessageBox):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -167,6 +167,12 @@ if __name__ == '__main__':
|
|||||||
else:
|
else:
|
||||||
app.setStyle('windowsvista')
|
app.setStyle('windowsvista')
|
||||||
|
|
||||||
|
if settings.contains("font_size"):
|
||||||
|
font_size = int(settings.value("font_size", type=str)) # noqa
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(font_size)
|
||||||
|
app.setFont(font)
|
||||||
|
|
||||||
fc = App(qapp=app)
|
fc = App(qapp=app)
|
||||||
|
|
||||||
# interrupt the Qt loop such that Python events have a chance to be responsive
|
# interrupt the Qt loop such that Python events have a chance to be responsive
|
||||||
|
|||||||
Reference in New Issue
Block a user