From 5c845fcfb2b1fd30946b7c813b1c4c295101ac34 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 24 Oct 2020 01:22:43 +0300 Subject: [PATCH] - added a new GUI element, an InputDialog made out of FCSliderWithSpinner named FCInputDialogSlider - replaced the InputDialog in the Opacity pop menu for the objects in the Project Tab with a FCInputDialogSlider --- CHANGELOG.md | 5 ++++ appGUI/GUIElements.py | 58 +++++++++++++++++++++++++++++++++++++++++++ app_Main.py | 11 +++++--- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6b85ed9..795c5b17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta ================================================= +24.10.2020 + +- added a new GUI element, an InputDialog made out of FCSliderWithSpinner named FCInputDialogSlider +- replaced the InputDialog in the Opacity pop menu for the objects in the Project Tab with a FCInputDialogSlider + 23.10.2020 - updated Copper Thieving Tool to work with the updated program diff --git a/appGUI/GUIElements.py b/appGUI/GUIElements.py index 92c66e01..7ad8cdae 100644 --- a/appGUI/GUIElements.py +++ b/appGUI/GUIElements.py @@ -1687,6 +1687,64 @@ class FCInputDialog(QtWidgets.QInputDialog): pass +class FCInputDialogSlider(QtWidgets.QDialog): + + def __init__(self, parent=None, title=None, text=None, min=None, max=None, step=1, init_val=None): + super().__init__(parent) + + self.val = 0.0 + + self.init_value = init_val if init_val else 0.0 + + self.setWindowTitle(title) if title else self.setWindowTitle('title') + self.text = text if text else 'text' + + self.min = min if min else 0 + self.max = max if max else 255 + self.step = step if step else 1 + + self.lbl = FCLabel(self.text) + + self.wdg = FCSliderWithSpinner(min=self.min, max=self.max, step=self.step) + self.wdg.set_value(self.init_value) + + QBtn = QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel + + self.buttonBox = QtWidgets.QDialogButtonBox(QBtn) + self.buttonBox.accepted.connect(self.accept) + self.buttonBox.rejected.connect(self.reject) + + self.layout = QtWidgets.QVBoxLayout() + self.layout.addWidget(self.lbl) + self.layout.addWidget(self.wdg) + self.layout.addWidget(self.buttonBox) + self.setLayout(self.layout) + + def set_title(self, txt): + self.setWindowTitle(txt) + + def set_text(self, txt): + self.lbl.set_value(txt) + + def set_min(self, val): + self.wdg.spinner.setMinimum(val) + + def set_max(self, val): + self.wdg.spinner.setMaximum(val) + + def set_range(self, min, max): + self.wdg.spinner.set_range(min, max) + + def set_step(self, val): + self.wdg.spinner.set_step(val) + + def get_results(self): + if self.exec_() == QtWidgets.QDialog.Accepted: + return self.wdg.get_value(), True + else: + return None, False + + class FCButton(QtWidgets.QPushButton): def __init__(self, text=None, checkable=None, click_callback=None, parent=None): super(FCButton, self).__init__(text, parent) diff --git a/app_Main.py b/app_Main.py index 1e5077d0..4bc24847 100644 --- a/app_Main.py +++ b/app_Main.py @@ -73,7 +73,7 @@ from camlib import to_dict, dict2obj, ET, ParseError, Geometry, CNCjob from appGUI.PlotCanvas import * from appGUI.PlotCanvasLegacy import * from appGUI.MainGUI import * -from appGUI.GUIElements import FCFileSaveDialog, message_dialog, FlatCAMSystemTray +from appGUI.GUIElements import FCFileSaveDialog, message_dialog, FlatCAMSystemTray, FCInputDialogSlider # FlatCAM Pre-processors from appPreProcessor import load_preprocessors @@ -10198,11 +10198,14 @@ class App(QtCore.QObject): return if act_name == _("Opacity"): - alpha_level, ok_button = QtWidgets.QInputDialog.getInt( - self.ui, _("Set alpha level ..."), '%s:' % _("Value"), min=0, max=255, step=1, value=191) + # alpha_level, ok_button = QtWidgets.QInputDialog.getInt( + # self.ui, _("Set alpha level ..."), '%s:' % _("Value"), min=0, max=255, step=1, value=191) + + alpha_dialog = FCInputDialogSlider( + self.ui, _("Set alpha level ..."), '%s:' % _("Value"), min=0, max=255, step=1, init_val=191) + alpha_level, ok_button = alpha_dialog.get_results() if ok_button: - alpha_str = str(hex(alpha_level)[2:]) if alpha_level != 0 else '00' for sel_obj in sel_obj_list: sel_obj.fill_color = sel_obj.fill_color[:-2] + alpha_str