Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PICARD-1201: Add -N/--no-restore option to not restore persisted sizes and positions #851

Merged
merged 2 commits into from Feb 28, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions picard/tagger.py
Expand Up @@ -101,6 +101,7 @@ class Tagger(QtWidgets.QApplication):
__instance = None

_debug = False
_no_restore = False

def __init__(self, picard_args, unparsed_args, localedir, autoupdate):

Expand All @@ -120,6 +121,7 @@ def __init__(self, picard_args, unparsed_args, localedir, autoupdate):

self._cmdline_files = picard_args.FILE
self._autoupdate = autoupdate
self._no_restore = picard_args.no_restore

self.debug(
picard_args.debug
Expand Down Expand Up @@ -772,6 +774,8 @@ def process_picard_args():
help="location of the configuration file")
parser.add_argument("-d", "--debug", action='store_true',
help="enable debug-level logging")
parser.add_argument("-N", "--no-restore", action='store_true',
help="do not restore positions and/or sizes")
parser.add_argument('-v', '--version', action='store_true',
help="display version information and exit")
parser.add_argument("-V", "--long-version", action='store_true',
Expand Down
3 changes: 3 additions & 0 deletions picard/ui/cdlookup.py
Expand Up @@ -27,6 +27,7 @@
label_info_from_node,
release_dates_and_countries_from_node,
)
from picard.util import restore_method


class CDLookupDialog(PicardDialog):
Expand Down Expand Up @@ -94,12 +95,14 @@ def reject(self):
self.save_state()
QtWidgets.QDialog.reject(self)

@restore_method
def restore_state(self):
size = config.persist[self.dialog_window_size]
if size:
self.resize(size)
log.debug("restore_state: %s" % self.dialog_window_size)

@restore_method
def restore_header_state(self):
header = self.ui.release_list.header()
state = config.persist[self.dialog_header_state]
Expand Down
4 changes: 3 additions & 1 deletion picard/ui/itemviews.py
Expand Up @@ -26,7 +26,7 @@
from picard.cluster import Cluster, ClusterList, UnclusteredFiles
from picard.file import File
from picard.track import Track, NonAlbumTrack
from picard.util import encode_filename, icontheme
from picard.util import encode_filename, icontheme, restore_method
from picard.plugin import ExtensionPoint
from picard.ui.ratingwidget import RatingWidget
from picard.ui.collectionmenu import CollectionMenu
Expand Down Expand Up @@ -129,6 +129,7 @@ def save_state(self):
for view in self.views:
view.save_state()

@restore_method
def restore_state(self):
self.restoreState(config.persist["splitter_state"])

Expand Down Expand Up @@ -408,6 +409,7 @@ def _add_other_versions():
menu.exec_(event.globalPos())
event.accept()

@restore_method
def restore_state(self):
sizes = config.persist[self.view_sizes.name]
header = self.header()
Expand Down
2 changes: 2 additions & 0 deletions picard/ui/logview.py
Expand Up @@ -26,6 +26,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets
from picard import config, log
from picard.ui import PicardDialog
from picard.util import restore_method


class LogViewDialog(PicardDialog):
Expand All @@ -49,6 +50,7 @@ def saveWindowState(self, position, size):
config.persist[position] = pos
config.persist[size] = self.size()

@restore_method
def restoreWindowState(self, position, size):
pos = config.persist[position]
if pos.x() > 0 and pos.y() > 0:
Expand Down
3 changes: 2 additions & 1 deletion picard/ui/mainwindow.py
Expand Up @@ -46,7 +46,7 @@
ButtonLineEdit,
MultiDirsSelectDialog
)
from picard.util import icontheme, webbrowser2, throttle, thread
from picard.util import icontheme, webbrowser2, throttle, thread, restore_method
from picard.util.cdrom import discid, get_cdrom_drives
from picard.plugin import ExtensionPoint

Expand Down Expand Up @@ -202,6 +202,7 @@ def saveWindowState(self):
self.panel.save_state()
self.metadata_box.save_state()

@restore_method
def restoreWindowState(self):
self.restoreState(config.persist["window_state"])
pos = config.persist["window_position"]
Expand Down
3 changes: 2 additions & 1 deletion picard/ui/metadatabox.py
Expand Up @@ -26,7 +26,7 @@
from picard.cluster import Cluster
from picard.track import Track
from picard.file import File
from picard.util import format_time, throttle, thread, uniqify
from picard.util import format_time, throttle, thread, uniqify, restore_method
from picard.util.tags import display_tag_name
from picard.ui.edittagdialog import EditTagDialog
from picard.metadata import MULTI_VALUED_JOINER
Expand Down Expand Up @@ -553,6 +553,7 @@ def set_item_value(self, item, tags, name):
font.setItalic(italic)
item.setFont(font)

@restore_method
def restore_state(self):
state = config.persist["metadatabox_header_state"]
header = self.horizontalHeader()
Expand Down
3 changes: 2 additions & 1 deletion picard/ui/options/dialog.py
Expand Up @@ -19,7 +19,7 @@

from PyQt5 import QtCore, QtWidgets
from picard import config
from picard.util import webbrowser2
from picard.util import webbrowser2, restore_method
from picard.ui import PicardDialog, HashableTreeWidgetItem
from picard.ui.util import StandardButton
from picard.ui.options import (
Expand Down Expand Up @@ -157,6 +157,7 @@ def saveWindowState(self):
config.persist["options_size"] = self.size()
config.persist["options_splitter"] = self.ui.splitter.saveState()

@restore_method
def restoreWindowState(self):
pos = config.persist["options_position"]
if pos.x() > 0 and pos.y() > 0:
Expand Down
9 changes: 7 additions & 2 deletions picard/ui/options/scripting.py
Expand Up @@ -24,6 +24,7 @@
from picard.ui import HashableListWidgetItem
from picard.ui.options import OptionsPage, OptionsCheckError, register_options_page
from picard.ui.ui_options_script import Ui_ScriptingOptionsPage
from picard.util import restore_method


DEFAULT_NUMBERED_SCRIPT_NAME = N_("My script %d")
Expand Down Expand Up @@ -402,8 +403,7 @@ def load(self):
if last_selected_script:
last_selected_script.setSelected(True)

# Preserve previous splitter position
self.ui.splitter.restoreState(config.persist["scripting_splitter"])
self.restore_state()

args = {
"picard-doc-scripting-url": PICARD_URLS['doc_scripting'],
Expand All @@ -412,6 +412,11 @@ def load(self):
' Documentation in your browser</a>') % args
self.ui.scripting_doc_link.setText(text)

@restore_method
def restore_state(self):
# Preserve previous splitter position
self.ui.splitter.restoreState(config.persist["scripting_splitter"])

def save(self):
config.setting["enable_tagger_scripts"] = self.ui.enable_tagger_scripts.isChecked()
config.setting["list_of_scripts"] = self.list_of_scripts
Expand Down
4 changes: 3 additions & 1 deletion picard/ui/searchdialog/__init__.py
Expand Up @@ -24,7 +24,7 @@
from picard import config, log
from picard.ui import PicardDialog
from picard.ui.util import StandardButton, ButtonLineEdit
from picard.util import icontheme, throttle
from picard.util import icontheme, throttle, restore_method


class ResultTable(QtWidgets.QTableWidget):
Expand Down Expand Up @@ -347,6 +347,7 @@ def reject(self):
self.save_state()
QtWidgets.QDialog.reject(self)

@restore_method
def restore_state(self):
size = config.persist[self.dialog_window_size]
if size:
Expand All @@ -355,6 +356,7 @@ def restore_state(self):
self.search_box.restore_checkbox_state()
log.debug("restore_state: %s" % self.dialog_window_size)

@restore_method
def restore_table_header_state(self):
header = self.table.horizontalHeader()
state = config.persist[self.dialog_header_state]
Expand Down
2 changes: 2 additions & 0 deletions picard/ui/tagsfromfilenames.py
Expand Up @@ -24,6 +24,7 @@
from picard.ui.util import StandardButton
from picard.ui import PicardDialog
from picard.ui.ui_tagsfromfilenames import Ui_TagsFromFileNamesDialog
from picard.util import restore_method
from picard.util.tags import display_tag_name


Expand Down Expand Up @@ -143,6 +144,7 @@ def saveWindowState(self):
config.persist["tags_from_filenames_position"] = pos
config.persist["tags_from_filenames_size"] = self.size()

@restore_method
def restoreWindowState(self):
pos = config.persist["tags_from_filenames_position"]
if pos.x() > 0 and pos.y() > 0:
Expand Down
5 changes: 5 additions & 0 deletions picard/util/__init__.py
Expand Up @@ -489,5 +489,10 @@ def load_json(data):
def parse_json(reply):
return load_json(reply.readAll())

def restore_method(func):
def func_wrapper(*args, **kwargs):
if not QtCore.QObject.tagger._no_restore:
return func(*args, **kwargs)
return func_wrapper

builtins.__dict__['string_'] = convert_to_string