From 31b217571cd683d5f4b9d3a769f2929ae0f1c814 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 19 Feb 2011 08:36:24 +0000 Subject: [PATCH] Print Dialog updates --- openlp/core/ui/printserviceorderdialog.py | 237 +++++++++++---------- openlp/core/ui/printserviceorderform.py | 90 ++++---- resources/images/general_print.png | Bin 0 -> 880 bytes resources/images/general_zoom_in.png | Bin 716 -> 1191 bytes resources/images/general_zoom_original.png | Bin 0 -> 1182 bytes resources/images/general_zoom_out.png | Bin 662 -> 1173 bytes resources/images/openlp-2.qrc | 4 + resources/images/system_configure.png | Bin 0 -> 1101 bytes resources/images/system_edit_copy.png | Bin 0 -> 515 bytes 9 files changed, 178 insertions(+), 153 deletions(-) create mode 100644 resources/images/general_print.png create mode 100644 resources/images/general_zoom_original.png create mode 100644 resources/images/system_configure.png create mode 100644 resources/images/system_edit_copy.png diff --git a/openlp/core/ui/printserviceorderdialog.py b/openlp/core/ui/printserviceorderdialog.py index c8b47b3e3..ea3df1dba 100644 --- a/openlp/core/ui/printserviceorderdialog.py +++ b/openlp/core/ui/printserviceorderdialog.py @@ -30,121 +30,136 @@ from openlp.core.lib import build_icon, translate, SpellTextEdit from openlp.core.lib.ui import UiStrings class Ui_PrintServiceOrderDialog(object): - def setupUi(self, printServiceOrderDialog): - printServiceOrderDialog.setObjectName(u'printServiceOrderDialog') - self.verticalLayout = QtGui.QGridLayout(printServiceOrderDialog) - self.verticalLayout.setObjectName(u'verticalLayout') - self.dialogLayout = QtGui.QGridLayout(printServiceOrderDialog) - self.dialogLayout.setObjectName(u'dialogLayout') - self.perviewLayout = QtGui.QVBoxLayout() - self.perviewLayout.setObjectName(u'perviewLayout') - self.previewLabel = QtGui.QLabel(printServiceOrderDialog) - self.previewLabel.setSizePolicy( - QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) - self.previewLabel.setObjectName(u'previewLabel') - self.perviewLayout.addWidget(self.previewLabel) - self.previewWidget = QtGui.QPrintPreviewWidget( - self.printer, self, QtCore.Qt.Widget) - self.previewWidget.setEnabled(True) - self.previewWidget.setSizePolicy( - QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding) - self.previewWidget.setObjectName(u'previewWidget') - # Give the previewWidget a fixed size, to prevent resizing when clicking - # the zoom buttons. - self.previewWidget.setFixedWidth(350) - self.perviewLayout.addWidget(self.previewWidget) - self.dialogLayout.addLayout(self.perviewLayout, 0, 0, 1, 1) - self.settingsLayout = QtGui.QVBoxLayout() - self.settingsLayout.setObjectName(u'settingsLayout') - self.serviceTitleLayout = QtGui.QGridLayout() - self.serviceTitleLayout.setObjectName(u'serviceTitleLayout') - self.serviceTitleLineEdit = QtGui.QLineEdit(printServiceOrderDialog) - self.serviceTitleLineEdit.setSizePolicy( - QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) - self.serviceTitleLineEdit.setObjectName(u'serviceTitleLineEdit') - self.serviceTitleLayout.addWidget(self.serviceTitleLineEdit, 1, 1, 1, 1) - self.serviceTitleLabel = QtGui.QLabel(printServiceOrderDialog) - self.serviceTitleLabel.setSizePolicy( - QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) - self.serviceTitleLabel.setObjectName(u'serviceTitleLabel') - self.serviceTitleLayout.addWidget(self.serviceTitleLabel, 1, 0, 1, 1) - self.settingsLayout.addLayout(self.serviceTitleLayout) - self.printSlideTextCheckBox = QtGui.QCheckBox(printServiceOrderDialog) - self.printSlideTextCheckBox.setObjectName(u'printSlideTextCheckBox') - self.settingsLayout.addWidget(self.printSlideTextCheckBox) - self.printNotesCheckBox = QtGui.QCheckBox(printServiceOrderDialog) - self.printNotesCheckBox.setObjectName(u'printNotesCheckBox') - self.settingsLayout.addWidget(self.printNotesCheckBox) - self.printMetaDataCheckBox = QtGui.QCheckBox(printServiceOrderDialog) - self.printMetaDataCheckBox.setObjectName(u'printMetaDataCheckBox') - self.settingsLayout.addWidget(self.printMetaDataCheckBox) - spacerItem = QtGui.QSpacerItem(20, 40, - QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.settingsLayout.addItem(spacerItem) - self.customNotesLabel = QtGui.QLabel(self) - self.customNotesLabel.setObjectName(u'customNotesLabel') - self.settingsLayout.addWidget(self.customNotesLabel) - self.customNoteEdit = SpellTextEdit(self) - self.customNoteEdit.setObjectName(u'customNoteEdit') - self.settingsLayout.addWidget(self.customNoteEdit) - self.dialogLayout.addLayout(self.settingsLayout, 0, 3, 1, 1) - self.buttonLayout = QtGui.QHBoxLayout() - self.buttonLayout.setObjectName(u'buttonLayout') - spacerItem = QtGui.QSpacerItem(40, 20, - QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.buttonLayout.addItem(spacerItem) - self.copyHtmlButton = QtGui.QPushButton(printServiceOrderDialog) - self.copyHtmlButton.setObjectName(u'copyHtmlButton') - self.buttonLayout.addWidget(self.copyHtmlButton) - self.copyTextButton = QtGui.QPushButton(printServiceOrderDialog) - self.copyTextButton.setObjectName(u'copyTextButton') - self.buttonLayout.addWidget(self.copyTextButton) - self.printButton = QtGui.QPushButton(printServiceOrderDialog) - self.printButton.setObjectName(u'printButton') - self.buttonLayout.addWidget(self.printButton) - self.cancelButton = QtGui.QPushButton(printServiceOrderDialog) - self.cancelButton.setObjectName(u'cancelButton') - self.buttonLayout.addWidget(self.cancelButton) - self.dialogLayout.addLayout(self.buttonLayout, 2, 2, 1, 1) - self.zoomButtonLayout = QtGui.QHBoxLayout() - self.zoomButtonLayout.setObjectName(u'zoomButtonLayout') - spacerItem = QtGui.QSpacerItem(40, 20, - QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.zoomButtonLayout.addItem(spacerItem) - self.zoomOutButton = QtGui.QToolButton(printServiceOrderDialog) - self.zoomOutButton.setIcon( - build_icon(u':/general/general_zoom_out.png')) - self.zoomOutButton.setObjectName(u'zoomOutButton') - self.zoomButtonLayout.addWidget(self.zoomOutButton) - self.zoomInButton = QtGui.QToolButton(printServiceOrderDialog) - self.zoomInButton.setIcon(build_icon(u':/general/general_zoom_in.png')) + def setupUi(self, printServiceDialog): + printServiceDialog.setObjectName(u'printServiceDialog') + printServiceDialog.resize(664, 594) + self.mainLayout = QtGui.QVBoxLayout(printServiceDialog) + self.mainLayout.setSpacing(0) + self.mainLayout.setMargin(0) + self.mainLayout.setObjectName(u'mainLayout') + self.toolbar = QtGui.QToolBar(printServiceDialog) + self.toolbar.setIconSize(QtCore.QSize(22, 22)) + self.toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) + self.toolbar.addAction( + QtGui.QIcon(build_icon(u':/general/general_print.png')), 'Print') + self.optionsButton = QtGui.QToolButton(self.toolbar) + self.optionsButton.setText(u'Options') + self.optionsButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) + self.optionsButton.setIcon(QtGui.QIcon( + build_icon(u':/system/system_configure.png'))) + self.optionsButton.setCheckable(True) + self.toolbar.addWidget(self.optionsButton) + self.toolbar.addAction( + QtGui.QIcon(build_icon(u':/system/system_close.png')), + 'Close') + self.toolbar.addSeparator() + self.toolbar.addAction( + QtGui.QIcon(build_icon(u':/system/system_edit_copy.png')), + 'Copy') + self.toolbar.addAction( + QtGui.QIcon(build_icon(u':/system/system_edit_copy.png')), + 'Copy as HTML') + self.toolbar.addSeparator() + self.zoomInButton = QtGui.QToolButton(self.toolbar) + self.zoomInButton.setIcon(QtGui.QIcon( + build_icon(u':/general/general_zoom_in.png'))) + self.zoomInButton.setToolTip(u'Zoom In') self.zoomInButton.setObjectName(u'zoomInButton') - self.zoomButtonLayout.addWidget(self.zoomInButton) - self.dialogLayout.addLayout(self.zoomButtonLayout, 1, 0, 1, 1) - self.retranslateUi(printServiceOrderDialog) - QtCore.QMetaObject.connectSlotsByName(printServiceOrderDialog) + self.zoomInButton.setIconSize(QtCore.QSize(22, 22)) + self.toolbar.addWidget(self.zoomInButton) + self.zoomOutButton = QtGui.QToolButton(self.toolbar) + self.zoomOutButton.setIcon(QtGui.QIcon( + build_icon(u':/general/general_zoom_out.png'))) + self.zoomOutButton.setToolTip(u'Zoom Out') + self.zoomOutButton.setObjectName(u'zoomOutButton') + self.zoomOutButton.setIconSize(QtCore.QSize(22, 22)) + self.toolbar.addWidget(self.zoomOutButton) + self.zoomOriginalButton = QtGui.QToolButton(self.toolbar) + self.zoomOriginalButton.setIcon(QtGui.QIcon( + build_icon(u':/general/general_zoom_original.png'))) + self.zoomOriginalButton.setToolTip(u'Zoom Original') + self.zoomOriginalButton.setObjectName(u'zoomOriginalButton') + self.zoomOriginalButton.setIconSize(QtCore.QSize(22, 22)) + self.toolbar.addWidget(self.zoomOriginalButton) + self.zoomComboBox = QtGui.QComboBox(printServiceDialog) + self.zoomComboBox.setObjectName((u'zoomComboBox')) + self.zoomComboBox.addItem(u'Fit Page') + self.zoomComboBox.addItem(u'Fit Width') + self.zoomComboBox.addItem(u'100%') + self.zoomComboBox.addItem(u'75%') + self.zoomComboBox.addItem(u'50%') + self.zoomComboBox.addItem(u'25%') + self.toolbar.addWidget(self.zoomComboBox) + self.mainLayout.addWidget(self.toolbar) + self.scrollArea = QtGui.QScrollArea(printServiceDialog) + self.scrollArea.setWidgetResizable(True) + self.scrollArea.setObjectName(u'scrollArea') + self.scrollAreaWidgetContents = QtGui.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 227, 473)) + self.scrollAreaWidgetContents.setObjectName(u'scrollAreaWidgetContents') + self.scrollArea.setWidget(self.scrollAreaWidgetContents) + self.mainLayout.addWidget(self.scrollArea) + self.optionsWidget = QtGui.QWidget(printServiceDialog) + self.optionsWidget.hide() + self.optionsWidget.resize(400, 300) + self.optionsWidget.setAutoFillBackground(True) + self.optionsLayout = QtGui.QVBoxLayout(self.optionsWidget) + self.optionsLayout.setContentsMargins(8, 8, 8, 8) + self.titleLabel = QtGui.QLabel(self.optionsWidget) + self.titleLabel.setObjectName((u'titleLabel')) + self.titleLabel.setText(u'Title:') + self.optionsLayout.addWidget(self.titleLabel) + self.titleLineEdit = QtGui.QLineEdit(self.optionsWidget) + self.titleLineEdit.setObjectName(u'titleLineEdit') + self.optionsLayout.addWidget(self.titleLineEdit) + self.footerLabel = QtGui.QLabel(self.optionsWidget) + self.footerLabel.setObjectName(u'footerLabel') + self.footerLabel.setText(u'Custom Footer Text:') + self.optionsLayout.addWidget(self.footerLabel) + self.footerTextEdit = QtGui.QTextEdit(self.optionsWidget) + self.footerTextEdit.setObjectName(u'footerTextEdit') + self.optionsLayout.addWidget(self.footerTextEdit) + self.optionsGroupBox = QtGui.QGroupBox(u'Other Options') + self.groupLayout = QtGui.QVBoxLayout() + self.slideTextCheckBox = QtGui.QCheckBox() + self.groupLayout.addWidget(self.slideTextCheckBox) + self.notesCheckBox = QtGui.QCheckBox('Include service item notes') + self.groupLayout.addWidget(self.notesCheckBox) + self.metaDataCheckBox = QtGui.QCheckBox() + self.groupLayout.addWidget(self.metaDataCheckBox) + self.groupLayout.addStretch(1) + self.optionsGroupBox.setLayout(self.groupLayout) + self.optionsLayout.addWidget(self.optionsGroupBox) - def retranslateUi(self, printServiceOrderDialog): - printServiceOrderDialog.setWindowTitle( + self.retranslateUi(printServiceDialog) + QtCore.QMetaObject.connectSlotsByName(printServiceDialog) + QtCore.QObject.connect(self.optionsButton, + QtCore.SIGNAL(u'toggled(bool)'), self.toggleOptions) + + self.retranslateUi(printServiceDialog) + QtCore.QMetaObject.connectSlotsByName(printServiceDialog) + + def retranslateUi(self, printServiceDialog): + printServiceDialog.setWindowTitle( translate('OpenLP.PrintServiceOrderForm', 'Print Service Order')) - self.previewLabel.setText( - translate('OpenLP.PrintServiceOrderForm', 'Preview:')) - self.printSlideTextCheckBox.setText(translate( +# self.previewLabel.setText( +# translate('OpenLP.PrintServiceOrderForm', 'Preview:')) + self.slideTextCheckBox.setText(translate( 'OpenLP.PrintServiceOrderForm', 'Include slide text if available')) - self.printNotesCheckBox.setText(translate( + self.notesCheckBox.setText(translate( 'OpenLP.PrintServiceOrderForm', 'Include service item notes')) - self.printMetaDataCheckBox.setText( + self.metaDataCheckBox.setText( translate('OpenLP.PrintServiceOrderForm', 'Include play length of media items')) - self.serviceTitleLabel.setText(translate( - 'OpenLP.PrintServiceOrderForm', 'Title:')) - self.serviceTitleLineEdit.setText(translate('OpenLP.ServiceManager', - 'Service Order Sheet')) - self.copyTextButton.setText(translate('OpenLP.ServiceManager', - 'Copy to Clipboard as Text')) - self.copyHtmlButton.setText(translate('OpenLP.ServiceManager', - 'Copy to Clipboard as Html')) - self.printButton.setText(translate('OpenLP.ServiceManager', 'Print')) - self.cancelButton.setText(translate('OpenLP.ServiceManager', 'Cancel')) - self.customNotesLabel.setText( - translate('OpenLP.ServiceManager', 'Custom Service Notes:')) +# self.serviceTitleLabel.setText(translate( +# 'OpenLP.PrintServiceOrderForm', 'Title:')) +# self.serviceTitleLineEdit.setText(translate('OpenLP.ServiceManager', +# 'Service Order Sheet')) +# self.copyTextButton.setText(translate('OpenLP.ServiceManager', +# 'Copy to Clipboard as Text')) +# self.copyHtmlButton.setText(translate('OpenLP.ServiceManager', +# 'Copy to Clipboard as Html')) +# self.printButton.setText(translate('OpenLP.ServiceManager', 'Print')) +# self.cancelButton.setText(translate('OpenLP.ServiceManager', 'Cancel')) +# self.customNotesLabel.setText( +# translate('OpenLP.ServiceManager', 'Custom Service Notes:')) diff --git a/openlp/core/ui/printserviceorderform.py b/openlp/core/ui/printserviceorderform.py index 48cd606d0..2bce1e837 100644 --- a/openlp/core/ui/printserviceorderform.py +++ b/openlp/core/ui/printserviceorderform.py @@ -47,40 +47,50 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): # Load the settings for the dialog. settings = QtCore.QSettings() settings.beginGroup(u'advanced') - self.printSlideTextCheckBox.setChecked(settings.value( + self.slideTextCheckBox.setChecked(settings.value( u'print slide text', QtCore.QVariant(False)).toBool()) - self.printMetaDataCheckBox.setChecked(settings.value( + self.metaDataCheckBox.setChecked(settings.value( u'print file meta data', QtCore.QVariant(False)).toBool()) - self.printNotesCheckBox.setChecked(settings.value( + self.notesCheckBox.setChecked(settings.value( u'print notes', QtCore.QVariant(False)).toBool()) settings.endGroup() # Signals - QtCore.QObject.connect(self.printButton, - QtCore.SIGNAL(u'clicked()'), self.printServiceOrder) - QtCore.QObject.connect(self.zoomOutButton, - QtCore.SIGNAL(u'clicked()'), self.zoomOut) - QtCore.QObject.connect(self.zoomInButton, - QtCore.SIGNAL(u'clicked()'), self.zoomIn) - QtCore.QObject.connect(self.previewWidget, - QtCore.SIGNAL(u'paintRequested(QPrinter *)'), self.paintRequested) - QtCore.QObject.connect(self.serviceTitleLineEdit, - QtCore.SIGNAL(u'textChanged(const QString)'), - self.updatePreviewText) - QtCore.QObject.connect(self.printSlideTextCheckBox, - QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) - QtCore.QObject.connect(self.printNotesCheckBox, - QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) - QtCore.QObject.connect(self.printMetaDataCheckBox, - QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) - QtCore.QObject.connect(self.customNoteEdit, - QtCore.SIGNAL(u'textChanged()'), self.updatePreviewText) - QtCore.QObject.connect(self.cancelButton, - QtCore.SIGNAL(u'clicked()'), self.reject) - QtCore.QObject.connect(self.copyTextButton, - QtCore.SIGNAL(u'clicked()'), self.copyText) - QtCore.QObject.connect(self.copyHtmlButton, - QtCore.SIGNAL(u'clicked()'), self.copyHtmlText) - self.updatePreviewText() +# QtCore.QObject.connect(self.printButton, +# QtCore.SIGNAL(u'clicked()'), self.printServiceOrder) +# QtCore.QObject.connect(self.zoomOutButton, +# QtCore.SIGNAL(u'clicked()'), self.zoomOut) +# QtCore.QObject.connect(self.zoomInButton, +# QtCore.SIGNAL(u'clicked()'), self.zoomIn) +# QtCore.QObject.connect(self.previewWidget, +# QtCore.SIGNAL(u'paintRequested(QPrinter *)'), self.paintRequested) +# QtCore.QObject.connect(self.serviceTitleLineEdit, +# QtCore.SIGNAL(u'textChanged(const QString)'), +# self.updatePreviewText) +# QtCore.QObject.connect(self.slideTextCheckBox, +# QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) +# QtCore.QObject.connect(self.notesCheckBox, +# QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) +# QtCore.QObject.connect(self.metaDataCheckBox, +# QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) +# QtCore.QObject.connect(self.customNoteEdit, +# QtCore.SIGNAL(u'textChanged()'), self.updatePreviewText) +# QtCore.QObject.connect(self.cancelButton, +# QtCore.SIGNAL(u'clicked()'), self.reject) +# QtCore.QObject.connect(self.copyTextButton, +# QtCore.SIGNAL(u'clicked()'), self.copyText) +# QtCore.QObject.connect(self.copyHtmlButton, +# QtCore.SIGNAL(u'clicked()'), self.copyHtmlText) +# self.updatePreviewText() + + def toggleOptions(self, checked): + self.optionsWidget.setVisible(checked) + if checked: + left = self.optionsButton.pos().x() + top = self.toolbar.height() + self.optionsWidget.move(left, top) + self.titleLineEdit.setFocus() + else: + self.saveOptions() def updatePreviewText(self): """ @@ -95,7 +105,7 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): text += u'

%s

' % (item.icon, item.get_display_title()) # Add slide text of the service item. - if self.printSlideTextCheckBox.isChecked(): + if self.slideTextCheckBox.isChecked(): if item.is_text(): # Add the text of the service item. verse = None @@ -120,13 +130,13 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): # add footer text += u'

%s

' % item.foot_text # Add service items' notes. - if self.printNotesCheckBox.isChecked(): + if self.notesCheckBox.isChecked(): if item.notes: text += u'

%s

%s' % (translate( 'OpenLP.ServiceManager', 'Notes:'), item.notes.replace(u'\n', u'
')) # Add play length of media files. - if item.is_media() and self.printMetaDataCheckBox.isChecked(): + if item.is_media() and self.metaDataCheckBox.isChecked(): text += u'

%s %s

' % (translate( 'OpenLP.ServiceManager', u'Playing time:'), unicode(datetime.timedelta(seconds=item.media_length))) @@ -167,7 +177,6 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): return # Print the document. self.document.print_(self.printer) - self.accept() def zoomIn(self): """ @@ -190,7 +199,7 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): else: self.copyTextButton.setText(UiStrings.CopyToText) - def accept(self): + def saveOptions(self): """ Save the settings and close the dialog. """ @@ -198,17 +207,14 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): settings = QtCore.QSettings() settings.beginGroup(u'advanced') settings.setValue(u'print slide text', - QtCore.QVariant(self.printSlideTextCheckBox.isChecked())) + QtCore.QVariant(self.slideTextCheckBox.isChecked())) settings.setValue(u'print file meta data', - QtCore.QVariant(self.printMetaDataCheckBox.isChecked())) + QtCore.QVariant(self.metaDataCheckBox.isChecked())) settings.setValue(u'print notes', - QtCore.QVariant(self.printNotesCheckBox.isChecked())) + QtCore.QVariant(self.notesCheckBox.isChecked())) settings.endGroup() + + def close(self): # Close the dialog. return QtGui.QDialog.accept(self) - def reject(self): - """ - Close the dialog, do not print the service and do not save the settings. - """ - return QtGui.QDialog.reject(self) diff --git a/resources/images/general_print.png b/resources/images/general_print.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb1c6741b62ad70bdaf4fd75d2a535d93d6d03d GIT binary patch literal 880 zcmV-$1CRWPP)-)OT5&Bd)01nK7JB8bqz-B}zf9U63KHEki(1pi_*xiLTH^n0(~c)j8uv@d*IIQhv03tcxPJZvice5)F3M!lMp}vot>R17K_;3-9@2r z#EQfUKYTvR4hNV!Ij@+xoYULeYcDDbo~8&+c|4w0wWU%Cp->1jGas0E<*ZYLGi*sN z?L$XL2P>yV?9-T$8haHVdio5u_V)JB-`|giC>o8Tr>6(Dwlm-3MzF0-w(5f|ZcF^a zLo_utg}%N%*b*k2?Q??Zk@#DHEjBG24m+)&uiUb8&J_lk+SbP0o*Ffs8SD=RC==kqO})9D|Z#^GVX8l-sOBasLn7Ib$%mdjx^mgkhg z_rmtF)sNB9q_tQsm$NPtMW*{7L@J$80|SF)1t&h;b!2t*jg&qm?I@oPRS67$DId}dwiC$+izl!n*DbuVd@mGLZP?+=%wwwy}kcD4|^~n6wUOLd|yuP z_nTkNJ>PS{{{;g6hF-5nMn=ADEw8BPqe!X=K@q&b7uM2D`iECv8MwtTjQp>Ihlhu& z+uI$V$CBBzQ}@D1n9j$q2wNprH&&tc4W(f%-_}-28^jkRHUfomi42 zTCc+l8CgNheaEL9M$LB>6jm7j!g~ei2=Mwx@4uZCWIVx&n$$|N!l0!nRADmEmnpi( z>2&(17Bi(`H)2MS7ctlX2}6-W#1{nN#ULOtlm`e9C0PMtE>AgYsH#{jb{BecMS~|M zCPqpLhH+^5HZGdhv%E<1iUORj%5OS7maim4k@KR0b7@XnM#oy)P4a=6ncqHvUa9Cg zW*{1kmhSZ&9YC|l!R3sS6tpV7*4g;bWN%)jSxHCJ8KY^7KJiiw-({{c;PANRSeE@U z7!1nA3IhCo-y*Ew=4pHF^Ihe-cD=_JEd_Ld&ojbR`HI`DiUQ9LB$=jC0JYBD>FA|UDXMX zev8F&dvbDevqw|l_laxILGjy^0Byg$)sGz&X$ z&1$u}w^J!I$8i+grvC2k?npM9oyWiv5Rb<>nx?O{KwuM_U~w>;&DINFq5uY-kVGO; z2!%qUcDubstJSu8z1}|pfxsp3Utuztu=gMykH-ige*p#7_HGjoqu~Gm002ovPDHLk FV1mKNG^+pr literal 716 zcmV;-0yF)IP)Ng=!FrWDrcisge!>7saN{P=~6mrfK`jpT_3T{q8vx zw5HJFgEze8!}mQNhlub$W%zSQr_&BW5bh&l1QGoJP)5XpuIn?2M55Xc;0_aHv)OB! zrey>{d}FfM-&ti(rCHnY)^@fcOzYhMfLJsdUFr+u^LYm$WM$Cmnmnrp)&;_e@}S|$ zZcAJ3G3@SrEBjis@=(|Hk%@_kzmo6(0E(hKaJW40O>Tdq(?zFQBH^2lKRz)_B;4tu z)8q;??TRZW%kuQm1UvwMD2icbw0~j|B>5X{_%N zDW!n{?>U=nBA4QGpJUbm9!(PI-F?1#z1e2mquawTs|UudE~UZafU?2fP&Vtv&eJ=? zZ!Jcm+{>(u&crSk8wYIXN3GZ4+Kuy+(sJJwD5VA5uljXF^?R+S@3u77Y%_lEm&R|_ zdt8_44s2~-q?8u=0+mW-=0kD$g3Q%DA_uI000qB)Ha*V9f?FXa=9GF~}r@0000;TV)u>-}ij=!1Jmawsr2{K2SAHZazfV327*FsC%b9(6MIp_6UaABO*Y4Df) z^X9$zz0aHHdBFb#1b?EtyIXI!mp0I}`XE7)Whm^cSSK?LhK?tPeoGs#_9(@CviVKFFW z96oaRI7kCVQKWr?g}8EO=1NSd@P`!&FDxt=t$DNgn-~K?T$aZG=H_VSYJ?<%n*1E! zdIC=>D9WBrOaK6B0C7ZRXyUkvN)ogpL1pHy`6UebBTA48hQKBQK|)CoBrWUo8V2J@ zK}MOjVtI5tMlB(UJWoLkAcDjMH33sJ36n`G7jOvy&;*vEa7=&{E=q!kW$8%;%d)<- z;@;lgF$%EkGa78C$fYPGAxJ({gkvbA-YXU~2(Xw0uDyt+mYBb()yyzGpqUV(F)0wRKOUK@7%t;eW%V-dY!GU)WH z!^5|acXoD8rd<$ui`bc&nH%<^oC7Dya_cMrSYbjmu@P>Up4%+8r{YIm)-tvJ2P3>| z{GQ5I{G7JDyu7)jq~!j<2uflpTaB$Av>IWak$9Ptl7Lkz>*G#ZU~f@Pl%hr?KP z^`W}5vQm8@5V*atupp%or(sJjA9v)YGZaM~^?JNm#eoWERb{1(=lSbXQ&R#C{v)AK z2ux2;|6sLRm(6DLG572&{;bWmSC&_+)#`o-wt=>`wiEJ{^du4qwZq{6k|f=QV4IMe wS?hE$)NDWn- z27;nU@0I{@dVh9QG|{V}Z*H~0i~|so3_yGgpshuKq)nhDw?O&D55KS+bVoMCxneg( zdDDq803Zt>u2WXa4#to&w}XI)7>H;mgft5^f`W1iL7o!;$(oXs-NIu8sT$B}CpN0H z;3*|Ew5U)T1nA_Yb00a)glHu(*@StJs-J+Os#BXXqL()WMpF^C&rX_lB0?nX#J#<} zLlh8%=PlTNB&8?;X{i(h5>7zgWP%(;!5s|;ViEvFQ&hslak+)rI5s>oGMH8@%gNQ5 z*_oaupUEwSm-D4h9>s$Zt=pn?5l< z{-`ck@oL>6cjeTQB=I!OA&SsM6%ZRqjfruxO`M5&npvTx#F@+9>`;}buQW+Z8ZGa?y5e|wqE^ZZ?h!-0!}@M0p7z-nvj8vTBsJr;}o zFgrV|r4grRS8g2lSeE4}iaNfyu!vP1sS4IqR~IXaa&v5KOvS-}Bp#20@$vDW3knLB zT`t$_;i)P7aB*>|A+Kc^rXPYmpuN5Qw9%3tQ52a#AOJK?`w4A)+M!H6p5T&Nou2ls*m+1{3V;?A$gCqhPTp zuWeUcZyoNLdZ*c#Z8nZ0rqRCxAQ6wpcgF(da@i|M(!sRDfB&i$J{)cO^`#a%Vf9Cx z^R-wk_SYmb0C+r}hq9u+gLAQcc22%gz~&EkrX-ZeJYNTp{s&ML5}u?#gq$ryid( zwmb=_$*#8NTT4BAa&P4g06_!@0Ej@}oBcE4v^~!lt4#tbp00kKtKQbvX1_-S4uE74 z3K1XxUghLxfH77X1w;U-*XtYa_xBduLTg455F(CiL zkjZ3p##rLjvuz*g2bQ4P^=Ni;ZeHyMr`Si=i>F&5P1B||O)E)~6c`4C;a5(l(_X_c z)&blCuneFEpi-??w>jsfY&NSEi^b3ReEx=Mnm_)WiRePgeneral_new.png general_zoom_out.png general_zoom_in.png + general_zoom_original.png + general_print.png general_open.png general_save.png general_email.png @@ -114,6 +116,8 @@ system_exit.png settings_plugin_list.png system_settings.png + system_configure.png + system_edit_copy.png system_configure_shortcuts.png diff --git a/resources/images/system_configure.png b/resources/images/system_configure.png new file mode 100644 index 0000000000000000000000000000000000000000..45b8fae8b8666fbf77bb3f906a6ea7b1ddb620f9 GIT binary patch literal 1101 zcmV-T1hV^yP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02{9W02{9XUK)`c00007bV*G`2iXAx z12Qe)4)6T{00YfQL_t(|+MSbYOp|96$IsjLZ7HMDl|)KuRd9<5th6H|V}`kQqcbDR zT*5G0HZLI{F58gxqBdEC#2ZoEvH_ctm{K$`CIp)Z*aA^hKFon8SQ#1}pk&sr7wAft zweRKG!Gy#QGqyd+KY4P_Kfm|9=R6MusRw1XTJ$E9sWCG%vz+5OaWwk(gHR}V-r;bb zy*hd=0qH=Sn-A3bp7;_R$C5}SLT2Y?$<136r0+s6Z?S#bjvi6U)ORb5>o2(n{|N*G zB>r!lEX9^cYwJ<2tn7{ZG)@12mN!vCNR=*oDQio1woJ-#958GGD2jqXxBJZa_=FwH z0TjF96{Nrw%3qehH8V2@gb-jD23Y)nN~xU2+LIM%I$&v0QBm3S^zXp342lJoVPV_$ zZIx@+t)-tenypRQ!eps$Z>o5$s;bHs42CFah7?pP72pCPBU4(44 zyW!Bn!s6j%JEjZMs=e-;Nu0*UL7&V{qK@ z-l_I@JdmTv!8xu0WuB7n?ELw+_V)IR*x60A&Z2^-B@}}q@Vu~C&969n9Fto<{)lMS zXoya)BSxc<3=R(Pdz$w2qNNZeeBolAJ=^wLHWw5YoOO2hSQL0s(HGV>!^ht^=00000NkvXXu0mjfA3OQ4 literal 0 HcmV?d00001 diff --git a/resources/images/system_edit_copy.png b/resources/images/system_edit_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..d34cdcd32f09d66b88ae0133c6379e7d7be5afcc GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6%*9TgAsieWw;%dH0CG7CJR*yM zqGce=SbMeU3{X(A#5JNMI6tkVJh3R1p}f3YFEcN@I61K(RWH9NefB#WDWIas0X`wF z|Ns97G9iG4g;`KgP)tlrRaFHdqNb*%p`ig}3kwVH+__`Vp52EIA3Ad6@X=#O)~#E& ze*O9l8#Zj*xN*~_O_wfRx_tTa_3PJf+_-V~-o2;Ko;`p5{N>A+@87@w^5x6duV23b z!FMqD0R}(8;1>w|{{8#UpFe;9{{8pwAJ9GFA|gP~FbJ0f`2{lwOQ@(D7@GU|rlvMe z{`B?duis_ima0JM!=5gVAr-e``y4khDe|~jujPKuwCn4?@J)AW?(W(o;_7L4S=385 zqQz#GIM23&->X;{)@;1FpK}(Y*?Z?kgH^LP7PB$2sic*7CH4JJm{z?lZFS~1?)9h2 z9=?}&a!J2a|L-BUpEp;Z)L-NBz4)VWuVU!cUXv%=pUf0XxU}biMMqYQ#@w7GcePvF z1GY>Rllx_Ecdm@{!?#yIDp@iX?wEe#=*lg9f7yJR4D!XESD&4D`2E$N;qxRaPQ1MS iDMVM4h`MnzV%zfAl3T#hTKbLh*2~7ZZD)ig{ literal 0 HcmV?d00001