forked from M-Labs/artiq
browser: cleanup late select, align options with variables
This commit is contained in:
parent
3578ba17a3
commit
9a01d38439
@ -59,9 +59,9 @@ class DirsOnlyProxy(QtCore.QSortFilterProxyModel):
|
||||
class ZoomIconView(QtWidgets.QListView):
|
||||
zoom_step = 2**.25
|
||||
aspect = 2/3
|
||||
default_size = 15
|
||||
min_size = 2
|
||||
max_size = 200
|
||||
default_size = 25
|
||||
min_size = 10
|
||||
max_size = 1000
|
||||
|
||||
def __init__(self):
|
||||
QtWidgets.QListView.__init__(self)
|
||||
@ -75,10 +75,10 @@ class ZoomIconView(QtWidgets.QListView):
|
||||
|
||||
def wheelEvent(self, ev):
|
||||
if ev.modifiers() & QtCore.Qt.ControlModifier:
|
||||
z = self.zoom_step**(ev.angleDelta().y()/120.)
|
||||
a = self._char_width*self.min_size
|
||||
b = self._char_width*self.max_size
|
||||
w = self.iconSize().width()*z
|
||||
w = self.iconSize().width()*self.zoom_step**(
|
||||
ev.angleDelta().y()/120.)
|
||||
if a <= w <= b:
|
||||
self.setIconSize(QtCore.QSize(w, w*self.aspect))
|
||||
else:
|
||||
@ -86,8 +86,7 @@ class ZoomIconView(QtWidgets.QListView):
|
||||
|
||||
|
||||
class FilesDock(QtWidgets.QDockWidget):
|
||||
def __init__(self, datasets, main_window, root="",
|
||||
select_file=None):
|
||||
def __init__(self, datasets, main_window, browse_root="", select=None):
|
||||
QtWidgets.QDockWidget.__init__(self, "Files")
|
||||
self.setObjectName("Files")
|
||||
self.setFeatures(self.DockWidgetMovable | self.DockWidgetFloatable)
|
||||
@ -97,7 +96,6 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||
|
||||
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 |
|
||||
@ -114,7 +112,7 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||
lambda: self.rt.resizeColumnToContents(0))
|
||||
self.rt.setAnimated(False)
|
||||
self.rt.setRootIndex(rt_model.mapFromSource(
|
||||
self.model.setRootPath(root)))
|
||||
self.model.setRootPath(os.path.abspath(browse_root))))
|
||||
self.rt.setSelectionBehavior(self.rt.SelectRows)
|
||||
self.rt.setSelectionMode(self.rt.SingleSelection)
|
||||
self.rt.selectionModel().currentChanged.connect(
|
||||
@ -131,6 +129,14 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||
self.rl.activated.connect(self.open_experiment)
|
||||
self.splitter.addWidget(self.rl)
|
||||
|
||||
self.restore_selected = select is None
|
||||
if select is not None:
|
||||
f = os.path.abspath(select)
|
||||
if os.path.isdir(f):
|
||||
self.select_dir(f)
|
||||
else:
|
||||
self.select_file(f)
|
||||
|
||||
def tree_current_changed(self, current, previous):
|
||||
idx = self.rt.model().mapToSource(current)
|
||||
self.rl.setRootIndex(idx)
|
||||
@ -172,14 +178,16 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||
return
|
||||
self.rl.setRootIndex(idx)
|
||||
|
||||
# ugly, see Spyder: late indexing, late scroll
|
||||
def scroll_when_loaded(p):
|
||||
if p != path:
|
||||
return
|
||||
self.model.directoryLoaded.disconnect(scroll_when_loaded)
|
||||
QtCore.QTimer.singleShot(
|
||||
100, lambda:
|
||||
self.rt.scrollTo(self.rt.model().mapFromSource(
|
||||
self.model.index(path)), self.rt.PositionAtCenter))
|
||||
self.rt.scrollTo(
|
||||
self.rt.model().mapFromSource(self.model.index(path)),
|
||||
self.rt.PositionAtCenter))
|
||||
self.model.directoryLoaded.connect(scroll_when_loaded)
|
||||
idx = self.rt.model().mapFromSource(idx)
|
||||
self.rt.expand(idx)
|
||||
@ -203,13 +211,7 @@ class FilesDock(QtWidgets.QDockWidget):
|
||||
}
|
||||
|
||||
def restore_state(self, state):
|
||||
if self.override_restore_file:
|
||||
f = os.path.normpath(self.override_restore_file)
|
||||
if os.path.isdir(f):
|
||||
self.select_dir(f)
|
||||
else:
|
||||
self.select_file(f)
|
||||
else:
|
||||
if self.restore_selected:
|
||||
self.select_dir(state["dir"])
|
||||
self.select_file(state["file"])
|
||||
self.rt.header().restoreState(QtCore.QByteArray(state["header"]))
|
||||
|
@ -24,11 +24,11 @@ def get_argparser():
|
||||
parser.add_argument("--db-file", default=default_db_file,
|
||||
help="database file for local browser settings "
|
||||
"(default: %(default)s)")
|
||||
parser.add_argument("--root", default="",
|
||||
parser.add_argument("--browse-root", default="",
|
||||
help="root path for directory tree "
|
||||
"(default %(default)s)")
|
||||
parser.add_argument("path", metavar="PATH", nargs="?",
|
||||
help="browse path or file")
|
||||
parser.add_argument("select", metavar="SELECT", nargs="?",
|
||||
help="directory to browse or file to load")
|
||||
verbosity_args(parser)
|
||||
return parser
|
||||
|
||||
@ -86,6 +86,7 @@ def main():
|
||||
smgr = state.StateManager(args.db_file)
|
||||
|
||||
datasets_sub = models.LocalModelManager(datasets.Model)
|
||||
datasets_sub.init({})
|
||||
|
||||
# initialize main window
|
||||
main_window = MainWindow()
|
||||
@ -93,8 +94,8 @@ def main():
|
||||
status_bar = QtWidgets.QStatusBar()
|
||||
main_window.setStatusBar(status_bar)
|
||||
|
||||
d_files = files.FilesDock(datasets_sub, main_window, args.root,
|
||||
args.path)
|
||||
d_files = files.FilesDock(datasets_sub, main_window, args.browse_root,
|
||||
select=args.select)
|
||||
smgr.register(d_files)
|
||||
|
||||
d_applets = applets.AppletsDock(main_window, datasets_sub)
|
||||
|
Loading…
Reference in New Issue
Block a user