Add menu bar

This commit is contained in:
Bob Swift
2021-05-08 15:31:09 -06:00
parent 0668d580fa
commit 593fe8401e
4 changed files with 211 additions and 209 deletions

View File

@@ -26,6 +26,7 @@ import os.path
from PyQt5 import (
QtCore,
QtGui,
QtWidgets,
)
from PyQt5.QtGui import QPalette
@@ -45,6 +46,10 @@ from picard.script import (
ScriptParser,
get_file_naming_script_presets,
)
from picard.util import (
icontheme,
webbrowser2,
)
from picard.util.settingsoverride import SettingsOverride
from picard.ui import PicardDialog
@@ -285,33 +290,24 @@ class ScriptEditorPage(PicardDialog):
self.loading = True
self.ui = Ui_ScriptEditor()
self.ui.setupUi(self)
self.ui.example_filename_sample_files_button.setToolTip(_(self.examples.tooltip_text) % self.examples.max_samples)
self.make_menu()
self.add_tooltips()
self.ui.label.setWordWrap(False)
self.installEventFilter(self)
self.ui.file_naming_editor_new.clicked.connect(self.new_script)
self.ui.file_naming_editor_save.clicked.connect(self.save_script)
self.ui.file_naming_editor_copy.clicked.connect(self.copy_script)
self.ui.file_naming_editor_close.clicked.connect(self.close_window)
self.ui.file_naming_editor_delete.clicked.connect(self.delete_script)
self.ui.file_naming_editor_reset.clicked.connect(self.reset_script)
self.ui.script_details.clicked.connect(self.view_script_details)
self.ui.file_naming_format.setEnabled(True)
# Add scripting documentation to parent frame.
doc_widget = ScriptingDocumentationWidget(self)
doc_widget = ScriptingDocumentationWidget(self, include_link=False)
self.ui.documentation_frame_layout.addWidget(doc_widget)
self.ui.show_documentation.stateChanged.connect(self.toggle_documentation)
self.ui.file_naming_format.textChanged.connect(self.check_formats)
self.ui.file_naming_word_wrap.stateChanged.connect(self.toggle_wordwrap)
self.ui.import_script.clicked.connect(self.import_script)
self.ui.export_script.clicked.connect(self.export_script)
self.ui.example_filename_sample_files_button.clicked.connect(self.update_example_files)
self._sampled_example_files = []
self.ui.example_filename_after.itemSelectionChanged.connect(self.match_before_to_after)
@@ -328,12 +324,136 @@ class ScriptEditorPage(PicardDialog):
self.synchronize_vertical_scrollbars((self.ui.example_filename_before, self.ui.example_filename_after))
self.wordwrap = QtWidgets.QTextEdit.NoWrap
self.wordwrap = True
self.toggle_wordwrap() # Force update to display
self.sidebar = True
self.toggle_documentation() # Force update to display
self.examples_current_row = -1
self.select_script()
self.load()
self.loading = False
def make_menu(self):
"""Build the menu bar.
"""
main_menu = QtWidgets.QMenuBar()
base_font = self.ui.file_naming_editor_close.font()
main_menu.setStyleSheet(
"QMenuBar { font-family: %s; font-size: %upt; }" %
(base_font.family(), base_font.pointSize())
)
# File menu settings
file_menu = main_menu.addMenu(_('&File'))
file_menu.setToolTipsVisible(True)
self.import_action = QtWidgets.QAction(_("&Import a script file"), self)
self.import_action.setIcon(icontheme.lookup('document-open'))
self.import_action.triggered.connect(self.import_script)
file_menu.addAction(self.import_action)
self.export_action = QtWidgets.QAction(_("&Export a script file"), self)
self.export_action.setIcon(icontheme.lookup('document-save'))
self.export_action.triggered.connect(self.export_script)
file_menu.addAction(self.export_action)
self.close_action = QtWidgets.QAction(_("E&xit / Close editor"), self)
self.close_action.triggered.connect(self.close_window)
file_menu.addAction(self.close_action)
# Script menu settings
script_menu = main_menu.addMenu(_('&Script'))
script_menu.setToolTipsVisible(True)
self.details_action = QtWidgets.QAction(_("&View/Edit Script Metadata"), self)
self.details_action.triggered.connect(self.view_script_details)
script_menu.addAction(self.details_action)
self.add_action = QtWidgets.QAction(_("Add a &new script"), self)
self.add_action.setIcon(icontheme.lookup('add-item'))
self.add_action.triggered.connect(self.new_script)
script_menu.addAction(self.add_action)
self.copy_action = QtWidgets.QAction(_("&Copy the current script"), self)
self.copy_action.setIcon(icontheme.lookup('edit-copy'))
self.copy_action.triggered.connect(self.view_script_details)
script_menu.addAction(self.copy_action)
self.delete_action = QtWidgets.QAction(_("&Delete the current script"), self)
self.delete_action.setIcon(icontheme.lookup('list-remove'))
self.delete_action.triggered.connect(self.delete_script)
script_menu.addAction(self.delete_action)
self.reset_action = QtWidgets.QAction(_("&Revert the current script"), self)
self.reset_action.setIcon(icontheme.lookup('view-refresh'))
self.reset_action.triggered.connect(self.reset_script)
script_menu.addAction(self.reset_action)
self.save_action = QtWidgets.QAction(_("&Save the current script"), self)
self.save_action.setIcon(icontheme.lookup('document-save'))
self.save_action.triggered.connect(self.save_script)
script_menu.addAction(self.save_action)
# Miscellaneous menu settings
tools_menu = main_menu.addMenu(_('&Tools'))
tools_menu.setToolTipsVisible(True)
self.examples_action = QtWidgets.QAction(_("&Reload random example files"), self)
self.examples_action.setIcon(icontheme.lookup('view-refresh'))
self.examples_action.triggered.connect(self.update_example_files)
tools_menu.addAction(self.examples_action)
self.wrap_action = QtWidgets.QAction(_("&Toggle word wrap"), self)
self.wrap_action.triggered.connect(self.toggle_wordwrap)
self.wrap_action.setShortcut(QtGui.QKeySequence(_("Ctrl+W")))
tools_menu.addAction(self.wrap_action)
# Help menu settings
help_menu = main_menu.addMenu(_('&Help'))
help_menu.setToolTipsVisible(True)
self.docs_action = QtWidgets.QAction(_("&Show/hide sidebar"), self)
self.docs_action.triggered.connect(self.toggle_documentation)
self.docs_action.setShortcut(QtGui.QKeySequence(_("Ctrl+H")))
help_menu.addAction(self.docs_action)
self.docs_browse_action = QtWidgets.QAction(_("&Open in browser"), self)
self.docs_browse_action.setIcon(icontheme.lookup('lookup-musicbrainz'))
self.docs_browse_action.triggered.connect(self.docs_browser)
help_menu.addAction(self.docs_browse_action)
self.ui.layout_for_menubar.addWidget(main_menu)
def add_tooltips(self):
"""Add tooltips to the widgets.
"""
# Done here to avoid duplication and allow changes/corrections without having to recompile the UI file.
# Menu items
self.import_action.setToolTip(_("Import a file as a new script"))
self.export_action.setToolTip(_("Export the script to a file"))
self.close_action.setToolTip(_("Close the script editor"))
self.details_action.setToolTip(_("Display the details for the script"))
self.add_action.setToolTip(_("Create a new file naming script"))
self.copy_action.setToolTip(_("Save a copy of the script as a new script"))
self.delete_action.setToolTip(_("Delete the script"))
self.reset_action.setToolTip(_("Revert the script to the last saved value"))
self.save_action.setToolTip(_("Save changes to the script"))
self.examples_action.setToolTip(_(self.examples.tooltip_text) % self.examples.max_samples)
self.wrap_action.setToolTip(_("Word wrap long lines in the editor"))
self.docs_action.setToolTip(_("View the scripting documentation in a sidebar"))
self.docs_browse_action.setToolTip(_("Open the scripting documentation in your browser"))
# Buttons
self.ui.file_naming_editor_close.setToolTip(self.close_action.toolTip())
self.ui.file_naming_editor_save.setToolTip(self.save_action.toolTip())
self.ui.file_naming_editor_reset.setToolTip(self.reset_action.toolTip())
def docs_browser(self):
"""Open the scriping documentation in a browser.
"""
webbrowser2.open('doc_scripting')
@staticmethod
def synchronize_vertical_scrollbars(widgets):
"""Synchronize position of vertical scrollbars and selections for listed widgets.
@@ -425,7 +545,8 @@ class ScriptEditorPage(PicardDialog):
def toggle_documentation(self):
"""Toggle the display of the scripting documentation sidebar.
"""
self.ui.documentation_frame.setVisible(self.ui.show_documentation.isChecked())
self.sidebar = not self.sidebar
self.ui.documentation_frame.setVisible(self.sidebar)
def view_script_details(self):
"""View and edit (if not readonly) the metadata associated with the script.
@@ -566,12 +687,20 @@ class ScriptEditorPage(PicardDialog):
script_item = self.get_selected_item()
readonly = script_item['readonly']
self.ui.script_title.setReadOnly(readonly or selected < 1)
# Buttons
self.ui.file_naming_format.setReadOnly(readonly)
self.ui.file_naming_editor_save.setEnabled(save_enabled and not readonly)
self.ui.file_naming_editor_copy.setEnabled(save_enabled)
self.ui.file_naming_editor_delete.setEnabled(script_item['deletable'] and save_enabled)
self.ui.import_script.setEnabled(save_enabled)
self.ui.export_script.setEnabled(save_enabled)
self.ui.file_naming_editor_reset.setEnabled(not readonly)
# Menu items
self.save_action.setEnabled(save_enabled and not readonly)
self.reset_action.setEnabled(not readonly)
self.add_action.setEnabled(save_enabled)
self.copy_action.setEnabled(save_enabled)
self.delete_action.setEnabled(script_item['deletable'] and save_enabled)
self.import_action.setEnabled(save_enabled)
self.export_action.setEnabled(save_enabled)
@staticmethod
def synchronize_selected_example_lines(current_row, source, target):
@@ -675,7 +804,8 @@ class ScriptEditorPage(PicardDialog):
def toggle_wordwrap(self):
"""Toggles wordwrap in the script editing textbox.
"""
if self.ui.file_naming_word_wrap.isChecked():
self.wordwrap = not self.wordwrap
if self.wordwrap:
self.ui.file_naming_format.setLineWrapMode(QtWidgets.QTextEdit.WidgetWidth)
else:
self.ui.file_naming_format.setLineWrapMode(QtWidgets.QTextEdit.NoWrap)
@@ -797,13 +927,6 @@ class ScriptEditorPage(PicardDialog):
)
dialog.exec_()
def load(self):
"""Loads the file naming script from the selected combo box item.
"""
self.toggle_wordwrap()
self.toggle_documentation()
self.select_script()
def check_formats(self):
"""Checks for valid file naming script and settings, and updates the examples.
"""

View File

@@ -12,14 +12,20 @@ class Ui_ScriptEditor(object):
ScriptEditor.setObjectName("ScriptEditor")
ScriptEditor.setWindowModality(QtCore.Qt.NonModal)
ScriptEditor.setEnabled(True)
ScriptEditor.resize(858, 729)
ScriptEditor.resize(902, 729)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(ScriptEditor.sizePolicy().hasHeightForWidth())
ScriptEditor.setSizePolicy(sizePolicy)
self.verticalLayout_3 = QtWidgets.QVBoxLayout(ScriptEditor)
self.verticalLayout_3.setContentsMargins(-1, 3, -1, -1)
self.verticalLayout_3.setSpacing(1)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.layout_for_menubar = QtWidgets.QHBoxLayout()
self.layout_for_menubar.setSpacing(6)
self.layout_for_menubar.setObjectName("layout_for_menubar")
self.verticalLayout_3.addLayout(self.layout_for_menubar)
self.splitter_between_editor_and_examples = QtWidgets.QSplitter(ScriptEditor)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
@@ -41,6 +47,7 @@ class Ui_ScriptEditor(object):
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.frame_4)
self.verticalLayout_5.setContentsMargins(0, 3, 0, 0)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setContentsMargins(-1, -1, -1, 0)
@@ -127,12 +134,9 @@ class Ui_ScriptEditor(object):
self.documentation_frame_layout.setObjectName("documentation_frame_layout")
self.verticalLayout_8.addWidget(self.splitter_between_editor_and_documentation)
self.verticalLayout_5.addWidget(self.frame)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setContentsMargins(-1, 0, -1, -1)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.file_naming_word_wrap = QtWidgets.QCheckBox(self.frame_4)
self.file_naming_word_wrap.setObjectName("file_naming_word_wrap")
self.horizontalLayout_5.addWidget(self.file_naming_word_wrap)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setContentsMargins(-1, 0, -1, -1)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.renaming_error = QtWidgets.QLabel(self.frame_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@@ -142,45 +146,17 @@ class Ui_ScriptEditor(object):
self.renaming_error.setText("")
self.renaming_error.setAlignment(QtCore.Qt.AlignCenter)
self.renaming_error.setObjectName("renaming_error")
self.horizontalLayout_5.addWidget(self.renaming_error)
self.show_documentation = QtWidgets.QCheckBox(self.frame_4)
self.show_documentation.setObjectName("show_documentation")
self.horizontalLayout_5.addWidget(self.show_documentation)
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setContentsMargins(-1, 0, -1, -1)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.example_filename_sample_files_button = QtWidgets.QPushButton(self.frame_4)
self.example_filename_sample_files_button.setObjectName("example_filename_sample_files_button")
self.horizontalLayout_4.addWidget(self.example_filename_sample_files_button)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.script_details = QtWidgets.QPushButton(self.frame_4)
self.script_details.setStatusTip("")
self.script_details.setObjectName("script_details")
self.horizontalLayout_4.addWidget(self.script_details)
self.import_script = QtWidgets.QPushButton(self.frame_4)
self.import_script.setObjectName("import_script")
self.horizontalLayout_4.addWidget(self.import_script)
self.export_script = QtWidgets.QPushButton(self.frame_4)
self.export_script.setObjectName("export_script")
self.horizontalLayout_4.addWidget(self.export_script)
self.file_naming_editor_new = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_new.setObjectName("file_naming_editor_new")
self.horizontalLayout_4.addWidget(self.file_naming_editor_new)
self.file_naming_editor_copy = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_copy.setObjectName("file_naming_editor_copy")
self.horizontalLayout_4.addWidget(self.file_naming_editor_copy)
self.file_naming_editor_delete = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_delete.setObjectName("file_naming_editor_delete")
self.horizontalLayout_4.addWidget(self.file_naming_editor_delete)
self.horizontalLayout_4.addWidget(self.renaming_error)
self.file_naming_editor_reset = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_reset.setToolTip("")
self.file_naming_editor_reset.setObjectName("file_naming_editor_reset")
self.horizontalLayout_4.addWidget(self.file_naming_editor_reset)
self.file_naming_editor_save = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_save.setToolTip("")
self.file_naming_editor_save.setObjectName("file_naming_editor_save")
self.horizontalLayout_4.addWidget(self.file_naming_editor_save)
self.file_naming_editor_close = QtWidgets.QPushButton(self.frame_4)
self.file_naming_editor_close.setToolTip("")
self.file_naming_editor_close.setObjectName("file_naming_editor_close")
self.horizontalLayout_4.addWidget(self.file_naming_editor_close)
self.verticalLayout_5.addLayout(self.horizontalLayout_4)
@@ -244,29 +220,8 @@ class Ui_ScriptEditor(object):
self.label.setText(_("Select the file naming script to use:"))
self.preset_naming_scripts.setToolTip(_("Select the file naming script to load into the editor"))
self.label_2.setText(_("Title:"))
self.file_naming_word_wrap.setToolTip(_("Word wrap long lines in the editor"))
self.file_naming_word_wrap.setText(_("Word wrap script"))
self.show_documentation.setToolTip(_("Open the scripting documentation in a sidebar"))
self.show_documentation.setText(_("Show Documentation"))
self.example_filename_sample_files_button.setToolTip(_("Up to 10 items chosen at random from files selected in the main window"))
self.example_filename_sample_files_button.setText(_("Reload Examples"))
self.script_details.setToolTip(_("Display the details for the script"))
self.script_details.setText(_("Details"))
self.import_script.setToolTip(_("Import a file as a new script"))
self.import_script.setText(_("Import"))
self.export_script.setToolTip(_("Export the script to a file"))
self.export_script.setText(_("Export"))
self.file_naming_editor_new.setToolTip(_("Create a new file naming script"))
self.file_naming_editor_new.setText(_("New"))
self.file_naming_editor_copy.setToolTip(_("Save a copy of the script as a new script"))
self.file_naming_editor_copy.setText(_("Copy"))
self.file_naming_editor_delete.setToolTip(_("Delete the script"))
self.file_naming_editor_delete.setText(_("Delete"))
self.file_naming_editor_reset.setToolTip(_("Reset the script to the last saved value"))
self.file_naming_editor_reset.setText(_("Reset"))
self.file_naming_editor_save.setToolTip(_("Save changes to the script"))
self.file_naming_editor_reset.setText(_("Revert"))
self.file_naming_editor_save.setText(_("Save"))
self.file_naming_editor_close.setToolTip(_("Close the script editor"))
self.file_naming_editor_close.setText(_("Close"))
self.groupBox.setTitle(_("Files will be named like this"))
self.example_filename_before_label.setText(_("Before"))

View File

@@ -59,11 +59,12 @@ code {
class ScriptingDocumentationWidget(QtWidgets.QWidget):
"""Custom widget to display the scripting documentation.
"""
def __init__(self, parent, *args, **kwargs):
def __init__(self, parent, include_link=True, *args, **kwargs):
"""Custom widget to display the scripting documentation.
Args:
parent (QWidget): Parent screen to check layoutDirection().
parent (QWidget): Parent screen to check layoutDirection()
include_link (bool): Indicates whether the web link should be included
"""
super().__init__(*args, **kwargs)
@@ -103,7 +104,7 @@ class ScriptingDocumentationWidget(QtWidgets.QWidget):
if text_direction == 'rtl':
html = html.replace('<code>', '<code>&#8206;')
link = '<a href="' + PICARD_URLS['doc_scripting'] + '">' + N_('Open Scripting Documentation in your browser') + '</a>'
link = '<a href="' + PICARD_URLS['doc_scripting'] + '">' + _('Open Scripting Documentation in your browser') + '</a>'
self.verticalLayout = QtWidgets.QVBoxLayout(self)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
@@ -123,13 +124,14 @@ class ScriptingDocumentationWidget(QtWidgets.QWidget):
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.scripting_doc_link.sizePolicy().hasHeightForWidth())
self.scripting_doc_link.setSizePolicy(sizePolicy)
self.scripting_doc_link.setMinimumSize(QtCore.QSize(0, 20))
self.scripting_doc_link.setAlignment(QtCore.Qt.AlignCenter)
self.scripting_doc_link.setWordWrap(True)
self.scripting_doc_link.setOpenExternalLinks(True)
self.scripting_doc_link.setObjectName("docs_scripting_doc_link")
self.scripting_doc_link.setText(link)
self.scripting_doc_link.show()
self.horizontalLayout.addWidget(self.scripting_doc_link)
if include_link:
self.scripting_doc_link.setSizePolicy(sizePolicy)
self.scripting_doc_link.setMinimumSize(QtCore.QSize(0, 20))
self.scripting_doc_link.setAlignment(QtCore.Qt.AlignCenter)
self.scripting_doc_link.setWordWrap(True)
self.scripting_doc_link.setOpenExternalLinks(True)
self.scripting_doc_link.setObjectName("docs_scripting_doc_link")
self.scripting_doc_link.setText(link)
self.scripting_doc_link.show()
self.horizontalLayout.addWidget(self.scripting_doc_link)
self.verticalLayout.addLayout(self.horizontalLayout)

View File

@@ -12,7 +12,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>858</width>
<width>902</width>
<height>729</height>
</rect>
</property>
@@ -23,6 +23,19 @@
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>1</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="layout_for_menubar">
<property name="spacing">
<number>6</number>
</property>
</layout>
</item>
<item>
<widget class="QSplitter" name="splitter_between_editor_and_examples">
<property name="sizePolicy">
@@ -63,6 +76,18 @@
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="bottomMargin">
@@ -271,20 +296,10 @@
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="file_naming_word_wrap">
<property name="toolTip">
<string>Word wrap long lines in the editor</string>
</property>
<property name="text">
<string>Word wrap script</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="renaming_error">
<property name="sizePolicy">
@@ -302,112 +317,19 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="show_documentation">
<widget class="QPushButton" name="file_naming_editor_reset">
<property name="toolTip">
<string>Open the scripting documentation in a sidebar</string>
</property>
<property name="text">
<string>Show Documentation</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="example_filename_sample_files_button">
<property name="toolTip">
<string>Up to 10 items chosen at random from files selected in the main window</string>
</property>
<property name="text">
<string>Reload Examples</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="script_details">
<property name="toolTip">
<string>Display the details for the script</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="text">
<string>Details</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="import_script">
<property name="toolTip">
<string>Import a file as a new script</string>
</property>
<property name="text">
<string>Import</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="export_script">
<property name="toolTip">
<string>Export the script to a file</string>
</property>
<property name="text">
<string>Export</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="file_naming_editor_new">
<property name="toolTip">
<string>Create a new file naming script</string>
</property>
<property name="text">
<string>New</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="file_naming_editor_copy">
<property name="toolTip">
<string>Save a copy of the script as a new script</string>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="file_naming_editor_delete">
<property name="toolTip">
<string>Delete the script</string>
</property>
<property name="text">
<string>Delete</string>
<string>Revert</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="file_naming_editor_save">
<property name="toolTip">
<string>Save changes to the script</string>
<string/>
</property>
<property name="text">
<string>Save</string>
@@ -417,7 +339,7 @@
<item>
<widget class="QPushButton" name="file_naming_editor_close">
<property name="toolTip">
<string>Close the script editor</string>
<string/>
</property>
<property name="text">
<string>Close</string>