Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: m-labs/artiq
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: fc524961b2d5
Choose a base ref
...
head repository: m-labs/artiq
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1f152bceb26c
Choose a head ref
  • 2 commits
  • 4 files changed
  • 1 contributor

Commits on Apr 5, 2016

  1. Copy the full SHA
    1814f12 View commit details
  2. Copy the full SHA
    1f152bc View commit details
Showing with 70 additions and 13 deletions.
  1. +57 −0 artiq/browser/datasets.py
  2. +3 −2 artiq/{gui → browser}/results.py
  3. +5 −5 artiq/frontend/artiq_browser.py
  4. +5 −6 artiq/gui/datasets.py
57 changes: 57 additions & 0 deletions artiq/browser/datasets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from PyQt5 import QtCore, QtWidgets

from artiq.tools import short_format
from artiq.gui.tools import LayoutWidget
from artiq.gui.models import DictSyncTreeSepModel

# reduced read-only version of artiq.gui.datasets


class Model(DictSyncTreeSepModel):
def __init__(self, init):
DictSyncTreeSepModel.__init__(self, ".", ["Dataset", "Value"], init)

def convert(self, k, v, column):
return short_format(v[1])


class DatasetsDock(QtWidgets.QDockWidget):
def __init__(self, datasets_sub):
QtWidgets.QDockWidget.__init__(self, "Datasets")
self.setObjectName("Datasets")
self.setFeatures(QtWidgets.QDockWidget.DockWidgetMovable |
QtWidgets.QDockWidget.DockWidgetFloatable)

grid = LayoutWidget()
self.setWidget(grid)

self.search = QtWidgets.QLineEdit()
self.search.setPlaceholderText("search...")
self.search.editingFinished.connect(self._search_datasets)
grid.addWidget(self.search, 0, 0)

self.table = QtWidgets.QTreeView()
self.table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.table.setSelectionMode(
QtWidgets.QAbstractItemView.SingleSelection)
grid.addWidget(self.table, 1, 0)

self.table_model = Model(dict())
datasets_sub.add_setmodel_callback(self.set_model)

def _search_datasets(self):
if hasattr(self, "table_model_filter"):
self.table_model_filter.setFilterFixedString(
self.search.displayText())

def set_model(self, model):
self.table_model = model
self.table_model_filter = QtCore.QSortFilterProxyModel()
self.table_model_filter.setSourceModel(self.table_model)
self.table.setModel(self.table_model_filter)

def save_state(self):
return bytes(self.table.header().saveState())

def restore_state(self, state):
self.table.header().restoreState(QtCore.QByteArray(state))
5 changes: 3 additions & 2 deletions artiq/gui/results.py → artiq/browser/results.py
Original file line number Diff line number Diff line change
@@ -54,8 +54,9 @@ def selection_changed(self, selected, deselected):
try:
with h5py.File(path, "r") as f:
rd = {}
for k in f: #["datasets"]:
rd[k] = False, f[k].value
group = f["datasets"]
for k in group:
rd[k] = True, group[k].value
self.datasets.init(rd)
except:
pass
10 changes: 5 additions & 5 deletions artiq/frontend/artiq_browser.py
Original file line number Diff line number Diff line change
@@ -10,11 +10,12 @@

from artiq import __artiq_dir__ as artiq_dir
from artiq.tools import verbosity_args, init_logger, atexit_register_coroutine
from artiq.gui import state, results, datasets, applets, models
from artiq.gui import state, applets, models
from artiq.browser import datasets, results


def get_argparser():
parser = argparse.ArgumentParser(description="ARTIQ results browser")
parser = argparse.ArgumentParser(description="ARTIQ Browser")
parser.add_argument(
"--db-file", default="artiq_browser.pyon",
help="database file for local browser settings")
@@ -29,7 +30,7 @@ def __init__(self):

icon = QtGui.QIcon(os.path.join(artiq_dir, "gui", "logo.svg"))
self.setWindowIcon(icon)
self.setWindowTitle("ARTIQ - Browser")
self.setWindowTitle("ARTIQ Browser")

qfm = QtGui.QFontMetrics(self.font())
self.resize(140*qfm.averageCharWidth(), 38*qfm.lineSpacing())
@@ -94,8 +95,7 @@ def main():
atexit_register_coroutine(d_applets.stop)
smgr.register(d_applets)

d_datasets = datasets.DatasetsDock(datasets_sub,
None) # TODO: datsets_ctl.delete()
d_datasets = datasets.DatasetsDock(datasets_sub)
smgr.register(d_datasets)

main_window.setCentralWidget(d_results)
11 changes: 5 additions & 6 deletions artiq/gui/datasets.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import asyncio
from collections import OrderedDict
from functools import partial
import logging

from PyQt5 import QtCore, QtWidgets
@@ -16,16 +14,16 @@
class Model(DictSyncTreeSepModel):
def __init__(self, init):
DictSyncTreeSepModel.__init__(self, ".",
["Dataset", "Persistent", "Value"],
init)
["Dataset", "Persistent", "Value"],
init)

def convert(self, k, v, column):
if column == 1:
return "Y" if v[0] else "N"
elif column == 2:
return short_format(v[1])
else:
raise ValueError
raise ValueError


class DatasetsDock(QtWidgets.QDockWidget):
@@ -46,7 +44,8 @@ def __init__(self, datasets_sub, dataset_ctl):

self.table = QtWidgets.QTreeView()
self.table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.table.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.table.setSelectionMode(
QtWidgets.QAbstractItemView.SingleSelection)
grid.addWidget(self.table, 1, 0)

self.table.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)