- remade the splash screen to show multiple messages on app initialization

- added a new splash image
- added a control in Preferences -> General -> GUI Settings -> Splash Screen that control if the splash screen is shown at startup
This commit is contained in:
Marius Stanciu
2019-09-13 01:24:54 +03:00
committed by Marius
parent 1a8784f5ab
commit 7ad03f9f0a
5 changed files with 73 additions and 12 deletions

View File

@@ -60,17 +60,17 @@ if __name__ == '__main__':
# Create and display the splash screen # Create and display the splash screen
# from here: https://eli.thegreenplace.net/2009/05/09/creating-splash-screens-in-pyqt # from here: https://eli.thegreenplace.net/2009/05/09/creating-splash-screens-in-pyqt
splash_pix = QtGui.QPixmap('share/flatcam_icon256.png') # splash_pix = QtGui.QPixmap('share/splash.png')
splash = QtWidgets.QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint) # splash = QtWidgets.QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint)
# splash.setMask(splash_pix.mask()) # # splash.setMask(splash_pix.mask())
splash.show() # splash.show()
app.processEvents() # app.processEvents()
splash.showMessage("FlatCAM is initializing ...", # splash.showMessage("FlatCAM is initializing ...",
alignment=Qt.AlignBottom | Qt.AlignLeft, # alignment=Qt.AlignBottom | Qt.AlignLeft,
color=QtGui.QColor("gray")) # color=QtGui.QColor("gray"))
fc = App() fc = App()
splash.finish(fc.ui) # splash.finish(fc.ui)
fc.ui.show() fc.ui.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

View File

@@ -337,6 +337,29 @@ class App(QtCore.QObject):
# ############################################################################# # #############################################################################
self.pool = Pool() self.pool = Pool()
# ##########################################################################
# ################## Setting the Splash Screen #############################
# ##########################################################################
settings = QSettings("Open Source", "FlatCAM")
if settings.contains("splash_screen"):
show_splash = settings.value("splash_screen")
else:
settings.setValue('splash_screen', 1)
# This will write the setting to the platform specific storage.
del settings
show_splash = 1
if show_splash:
splash_pix = QtGui.QPixmap('share/splash.png')
splash = QtWidgets.QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint)
# splash.setMask(splash_pix.mask())
splash.show()
splash.showMessage(_("FlatCAM is initializing ..."),
alignment=Qt.AlignBottom | Qt.AlignLeft,
color=QtGui.QColor("gray"))
# ############################################################################# # #############################################################################
# ##################### Initialize GUI ######################################## # ##################### Initialize GUI ########################################
# ############################################################################# # #############################################################################
@@ -1465,15 +1488,25 @@ class App(QtCore.QObject):
# ############################################### # ###############################################
# ############# SETUP Plot Area ################# # ############# SETUP Plot Area #################
# ############################################### # ###############################################
if show_splash:
splash.showMessage(_("FlatCAM is initializing ...\n"
"Canvas initialization started."),
alignment=Qt.AlignBottom | Qt.AlignLeft,
color=QtGui.QColor("gray"))
start_plot_time = time.time() # debug start_plot_time = time.time() # debug
self.plotcanvas = None self.plotcanvas = None
self.app_cursor = None self.app_cursor = None
self.hover_shapes = None self.hover_shapes = None
self.on_plotcanvas_setup() self.on_plotcanvas_setup()
end_plot_time = time.time() end_plot_time = time.time()
self.log.debug("Finished Canvas initialization in %s seconds." % (str(end_plot_time - start_plot_time))) used_time = end_plot_time - start_plot_time
self.log.debug("Finished Canvas initialization in %s seconds." % str(used_time))
if show_splash:
splash.showMessage('%s: %ssec' % (_("FlatCAM is initializing ...\n"
"Canvas initialization started.\n"
"Canvas initialization finished in"), '%.2f' % used_time),
alignment=Qt.AlignBottom | Qt.AlignLeft,
color=QtGui.QColor("gray"))
self.ui.splitter.setStretchFactor(1, 2) self.ui.splitter.setStretchFactor(1, 2)
# to use for tools like Measurement tool who depends on the event sources who are changed inside the Editors # to use for tools like Measurement tool who depends on the event sources who are changed inside the Editors
@@ -1810,6 +1843,9 @@ class App(QtCore.QObject):
self.ui.fa_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect( self.ui.fa_defaults_form.fa_gerber_group.grb_list_btn.clicked.connect(
lambda: self.on_register_files(obj_type='gerber')) lambda: self.on_register_files(obj_type='gerber'))
# splash screen button signal
self.ui.general_defaults_form.general_gui_set_group.splash_cb.stateChanged.connect(self.on_splash_changed)
# connect the abort_all_tasks related slots to the related signals # connect the abort_all_tasks related slots to the related signals
self.proc_container.idle_flag.connect(self.app_is_idle) self.proc_container.idle_flag.connect(self.app_is_idle)
@@ -5356,6 +5392,13 @@ class App(QtCore.QObject):
self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.set_value(new_val_sel) self.ui.cncjob_defaults_form.cncjob_gen_group.annotation_fontcolor_entry.set_value(new_val_sel)
self.defaults['global_proj_item_dis_color'] = new_val_sel self.defaults['global_proj_item_dis_color'] = new_val_sel
def on_splash_changed(self, state):
settings = QSettings("Open Source", "FlatCAM")
settings.setValue('splash_screen', 1) if state else settings.setValue('splash_screen', 0)
# This will write the setting to the platform specific storage.
del settings
def on_notebook_tab_rmb_click(self, checked): def on_notebook_tab_rmb_click(self, checked):
self.ui.notebook.set_detachable(val=checked) self.ui.notebook.set_detachable(val=checked)
self.defaults["global_tabs_detachable"] = checked self.defaults["global_tabs_detachable"] = checked

View File

@@ -17,6 +17,9 @@ CAD program, and create G-Code for Isolation routing.
- now, Excellon and Gerber edited objects will have the source_code updated and ready to be saved - now, Excellon and Gerber edited objects will have the source_code updated and ready to be saved
- the edited Gerber (or Excellon) object now is kept in the app after editing and the edited object is a new object - the edited Gerber (or Excellon) object now is kept in the app after editing and the edited object is a new object
- added a message to the splash screen - added a message to the splash screen
- remade the splash screen to show multiple messages on app initialization
- added a new splash image
- added a control in Preferences -> General -> GUI Settings -> Splash Screen that control if the splash screen is shown at startup
11.09.2019 11.09.2019

View File

@@ -3947,6 +3947,7 @@ class GeneralGUISetGroupUI(OptionsGroupUI):
else: else:
self.notebook_font_size_spinner.set_value(12) self.notebook_font_size_spinner.set_value(12)
# Axis Font Size
self.axis_font_size_label = QtWidgets.QLabel('%s:' % _('Axis Font Size')) self.axis_font_size_label = QtWidgets.QLabel('%s:' % _('Axis Font Size'))
self.axis_font_size_label.setToolTip( self.axis_font_size_label.setToolTip(
_("This sets the font size for canvas axis.") _("This sets the font size for canvas axis.")
@@ -3965,6 +3966,18 @@ class GeneralGUISetGroupUI(OptionsGroupUI):
# Just to add empty rows # Just to add empty rows
self.spacelabel = QtWidgets.QLabel('') self.spacelabel = QtWidgets.QLabel('')
# Splash Screen
self.splash_label = QtWidgets.QLabel('%s:' % _('Splash Screen'))
self.splash_label.setToolTip(
_("Enable display of the splash screen at application startup.")
)
self.splash_cb = FCCheckBox()
settings = QSettings("Open Source", "FlatCAM")
if settings.value("splash_screen"):
self.splash_cb.set_value(True)
else:
self.splash_cb.set_value(False)
# Add (label - input field) pair to the QFormLayout # Add (label - input field) pair to the QFormLayout
self.form_box.addRow(self.spacelabel, self.spacelabel) self.form_box.addRow(self.spacelabel, self.spacelabel)
@@ -3977,6 +3990,8 @@ class GeneralGUISetGroupUI(OptionsGroupUI):
self.form_box.addRow(QtWidgets.QLabel('')) self.form_box.addRow(QtWidgets.QLabel(''))
self.form_box.addRow(self.notebook_font_size_label, self.notebook_font_size_spinner) self.form_box.addRow(self.notebook_font_size_label, self.notebook_font_size_spinner)
self.form_box.addRow(self.axis_font_size_label, self.axis_font_size_spinner) self.form_box.addRow(self.axis_font_size_label, self.axis_font_size_spinner)
self.form_box.addRow(QtWidgets.QLabel(''))
self.form_box.addRow(self.splash_label, self.splash_cb)
# Add the QFormLayout that holds the Application general defaults # Add the QFormLayout that holds the Application general defaults
# to the main layout of this TAB # to the main layout of this TAB

BIN
share/splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB