--- a/eric7/QScintilla/MiniEditor.py Fri Dec 31 17:19:19 2021 +0100 +++ b/eric7/QScintilla/MiniEditor.py Fri Dec 31 17:22:45 2021 +0100 @@ -14,10 +14,12 @@ import editorconfig from PyQt6.QtCore import ( - pyqtSignal, Qt, QSignalMapper, QPoint, QTimer, QFileInfo, QSize, + pyqtSignal, pyqtSlot, Qt, QSignalMapper, QPoint, QTimer, QFileInfo, QSize, QCoreApplication ) -from PyQt6.QtGui import QKeySequence, QPalette, QFont, QPixmap, QActionGroup +from PyQt6.QtGui import ( + QKeySequence, QPalette, QFont, QPixmap, QActionGroup, QAction +) from PyQt6.QtWidgets import ( QWidget, QWhatsThis, QDialog, QInputDialog, QApplication, QMenu, QVBoxLayout, QHBoxLayout, QLabel @@ -306,10 +308,7 @@ self.__createToolBars() self.__createStatusBar() - self.__setTextDisplay() - self.__setMargins() - self.__setEolMode() - + self.__loadConfiguration() self.__readSettings() # clear QScintilla defined keyboard commands @@ -561,16 +560,18 @@ self.helpActions = [] self.searchActions = [] self.viewActions = [] + self.configActions = [] self.__createFileActions() self.__createEditActions() self.__createHelpActions() self.__createSearchActions() self.__createViewActions() + self.__createConfigActions() # read the keyboard shortcuts and make them identical to the main # eric shortcuts - for act in self.helpActions: + for act in self.helpActions + self.configActions: self.__readShortcut(act, "General") for act in self.editActions: self.__readShortcut(act, "Edit") @@ -2439,6 +2440,26 @@ self.whatsThisAct.triggered.connect(self.__whatsThis) self.helpActions.append(self.whatsThisAct) + def __createConfigActions(self): + """ + Private method to create the Settings actions. + """ + self.prefAct = EricAction( + self.tr('Preferences'), + UI.PixmapCache.getIcon("configure"), + self.tr('&Preferences...'), + 0, 0, self, 'hexEditor_settings_preferences') + self.prefAct.setStatusTip(self.tr( + 'Set the prefered configuration')) + self.prefAct.setWhatsThis(self.tr( + """<b>Preferences</b>""" + """<p>Set the configuration items of the application""" + """ with your prefered values.</p>""" + )) + self.prefAct.triggered.connect(self.__showPreferences) + self.prefAct.setMenuRole(QAction.MenuRole.PreferencesRole) + self.configActions.append(self.prefAct) + def __createMenus(self): """ Private method to create the menus of the menu bar. @@ -2464,14 +2485,16 @@ self.editMenu.addAction(self.pasteAct) self.editMenu.addAction(self.deleteAct) self.editMenu.addSeparator() - self.editMenu.addAction(self.searchAct) - self.editMenu.addAction(self.searchNextAct) - self.editMenu.addAction(self.searchPrevAct) - self.editMenu.addAction(self.searchClearMarkersAct) - self.editMenu.addAction(self.replaceAct) - self.editMenu.addAction(self.replaceAndSearchAct) - self.editMenu.addAction(self.replaceSelectionAct) - self.editMenu.addAction(self.replaceAllAct) + + self.searchMenu = self.menuBar().addMenu(self.tr("&Search")) + self.searchMenu.addAction(self.searchAct) + self.searchMenu.addAction(self.searchNextAct) + self.searchMenu.addAction(self.searchPrevAct) + self.searchMenu.addAction(self.searchClearMarkersAct) + self.searchMenu.addAction(self.replaceAct) + self.searchMenu.addAction(self.replaceAndSearchAct) + self.searchMenu.addAction(self.replaceSelectionAct) + self.searchMenu.addAction(self.replaceAllAct) self.viewMenu = self.menuBar().addMenu(self.tr("&View")) self.viewMenu.addAction(self.zoomInAct) @@ -2479,6 +2502,9 @@ self.viewMenu.addAction(self.zoomResetAct) self.viewMenu.addAction(self.zoomToAct) + self.settingsMenu = self.menuBar().addMenu(self.tr("Se&ttings")) + self.settingsMenu.addAction(self.prefAct) + self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu(self.tr("&Help")) @@ -2516,7 +2542,7 @@ edittb.addAction(self.pasteAct) edittb.addAction(self.deleteAct) - findtb = self.addToolBar(self.tr("Find")) + findtb = self.addToolBar(self.tr("Search")) findtb.setIconSize(UI.Config.ToolBarIconSize) findtb.addAction(self.searchAct) findtb.addAction(self.searchNextAct) @@ -2530,6 +2556,10 @@ viewtb.addAction(self.zoomResetAct) viewtb.addAction(self.zoomToAct) + settingstb = self.addToolBar(self.tr("Settings")) + settingstb.setIconSize(UI.Config.ToolBarIconSize) + settingstb.addAction(self.prefAct) + helptb = self.addToolBar(self.tr("Help")) helptb.setIconSize(UI.Config.ToolBarIconSize) helptb.addAction(self.whatsThisAct) @@ -2584,6 +2614,45 @@ self.__statusBar.showMessage(self.tr("Ready")) + def __showPreferences(self): + """ + Private slot to set the preferences. + """ + from Preferences.ConfigurationDialog import ( + ConfigurationDialog, ConfigurationMode + ) + dlg = ConfigurationDialog( + None, 'Configuration', True, fromEric=True, + displayMode=ConfigurationMode.EDITORMODE) + dlg.preferencesChanged.connect(self.__preferencesChanged) + dlg.show() + dlg.showConfigurationPageByName("interfacePage") + dlg.exec() + QCoreApplication.processEvents() + if dlg.result() == QDialog.DialogCode.Accepted: + dlg.setPreferences() + Preferences.syncPreferences() + self.__preferencesChanged() + + @pyqtSlot() + def __preferencesChanged(self): + """ + Private slot to handle a configuration change. + """ + self.__loadConfiguration() + + self.__markOccurrencesTimer.setInterval( + Preferences.getEditor("MarkOccurrencesTimeout")) + + @pyqtSlot() + def __loadConfiguration(self): + """ + Private slot to load the configuration. + """ + self.__setTextDisplay() + self.__setMargins() + self.__setEolMode() + def __readSettings(self): """ Private method to read the settings remembered last time.