Skip to content

Commit

Permalink
browser: add root dir option, load only one file on restore
Browse files Browse the repository at this point in the history
jordens committed Apr 20, 2016
1 parent 40b47b8 commit 3d393e4
Showing 2 changed files with 17 additions and 12 deletions.
13 changes: 9 additions & 4 deletions artiq/browser/files.py
Original file line number Diff line number Diff line change
@@ -57,7 +57,8 @@ def filterAcceptsRow(self, row, parent):


class FilesDock(QtWidgets.QDockWidget):
def __init__(self, datasets, main_window, root=""):
def __init__(self, datasets, main_window, root="",
select_file=None):
QtWidgets.QDockWidget.__init__(self, "Files")
self.setObjectName("Files")
self.setFeatures(self.DockWidgetMovable | self.DockWidgetFloatable)
@@ -67,6 +68,7 @@ def __init__(self, datasets, main_window, root=""):

self.datasets = datasets
self.main_window = main_window
self.override_restore_file = select_file

self.model = QtWidgets.QFileSystemModel()
self.model.setFilter(QtCore.QDir.Drives | QtCore.QDir.NoDotAndDotDot |
@@ -180,9 +182,12 @@ def restore_state(self, state):
dir = state.get("dir")
if dir:
self.select_dir(dir)
file = state.get("file")
if file:
self.select_file(file)
if self.override_restore_file:
self.select_file(os.path.normpath(self.override_restore_file))
else:
file = state.get("file")
if file:
self.select_file(file)
header = state.get("header")
if header:
self.rt.header().restoreState(QtCore.QByteArray(header))
16 changes: 8 additions & 8 deletions artiq/frontend/artiq_browser.py
Original file line number Diff line number Diff line change
@@ -21,10 +21,12 @@ def get_argparser():
default_db_file = os.path.expanduser("~/.artiq_browser.pyon")

parser = argparse.ArgumentParser(description="ARTIQ Browser")
parser.add_argument(
"--db-file", default=default_db_file,
help="database file for local browser settings "
"(default: %(default)s)")
parser.add_argument("--db-file", default=default_db_file,
help="database file for local browser settings "
"(default: %(default)s)")
parser.add_argument("--root", default="",
help="root path for directory tree "
"(default %(default)s)")
parser.add_argument("PATH", nargs="?", help="browse path or file")
verbosity_args(parser)
return parser
@@ -90,7 +92,8 @@ def main():
status_bar = QtWidgets.QStatusBar()
main_window.setStatusBar(status_bar)

d_files = files.FilesDock(datasets_sub, main_window)
d_files = files.FilesDock(datasets_sub, main_window, args.root,
args.PATH)

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

Everything else in ARTIQ uses lower case, which is why I had changed it.

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

That's bad then. Values are upper case, option names are lower case.

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

In the namespace? That's not PEP8-compliant, and argparse will happily use upper-case in the help message and lower-case in the namespace if you give it a lower-case argument name.

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

Nope. The help message does not upper case it automatically.

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

Sometimes it does, e.g. --db-file DB_FILE and db_file in the namespace...

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

But not for positional arguments. metavar could be used but is more typing.

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

The Python examples do not upper-case positional arguments in help messages either, e.g. https://docs.python.org/3.5/library/argparse.html#metavar

This comment has been minimized.

Copy link
@jordens

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

So it's 2 to 1 for lowercase.

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

Nonsense. It is a) consistent to have the value upper-case in the help message and b) uppercase value placeholder is what the main example in Python has.

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

The right thing to do seems to use uppercase positional arguments in code or use metavar.

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 20, 2016

Member

Then metavar.

This comment has been minimized.

Copy link
@jordens

jordens Apr 20, 2016

Author Member

Do you mind handling the other tools?

This comment has been minimized.

Copy link
@sbourdeauducq

sbourdeauducq Apr 22, 2016

Member

Done.

smgr.register(d_files)

d_applets = applets.AppletsDock(main_window, datasets_sub)
@@ -124,9 +127,6 @@ def main():
# run
main_window.show()

if args.PATH:
d_files.select_file(os.path.normpath(args.PATH))

loop.run_until_complete(main_window.exit_request.wait())

if __name__ == "__main__":

0 comments on commit 3d393e4

Please sign in to comment.