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: 0b10f72c2bb9
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: 5b1165f413cb
Choose a head ref
  • 4 commits
  • 6 files changed
  • 1 contributor

Commits on Jul 23, 2015

  1. Copy the full SHA
    aa2acb9 View commit details
  2. Copy the full SHA
    3a06e22 View commit details
  3. Copy the full SHA
    1a4028c View commit details
  4. gui: log autoscroll

    sbourdeauducq committed Jul 23, 2015
    Copy the full SHA
    5b1165f View commit details
Showing with 30 additions and 6 deletions.
  1. +1 −1 artiq/frontend/artiq_master.py
  2. +18 −1 artiq/gui/log.py
  3. +2 −0 artiq/gui/parameters.py
  4. +2 −0 artiq/gui/results.py
  5. +2 −0 artiq/gui/schedule.py
  6. +5 −4 artiq/master/repository.py
2 changes: 1 addition & 1 deletion artiq/frontend/artiq_master.py
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@ def main():
scheduler.start()
atexit.register(lambda: loop.run_until_complete(scheduler.stop()))

repository = Repository()
repository = Repository(log.log)
repository.scan_async()

server_control = Server({
19 changes: 18 additions & 1 deletion artiq/gui/log.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import asyncio

from quamash import QtGui
from quamash import QtGui, QtCore
from pyqtgraph import dockarea

from artiq.protocols.sync_struct import Subscriber
@@ -23,7 +23,14 @@ def __init__(self):

self.log = QtGui.QTableView()
self.log.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
self.log.horizontalHeader().setResizeMode(
QtGui.QHeaderView.ResizeToContents)
self.log.setHorizontalScrollMode(
QtGui.QAbstractItemView.ScrollPerPixel)
self.log.setShowGrid(False)
self.log.setTextElideMode(QtCore.Qt.ElideNone)
self.addWidget(self.log)
self.scroll_at_bottom = False

@asyncio.coroutine
def sub_connect(self, host, port):
@@ -34,7 +41,17 @@ def sub_connect(self, host, port):
def sub_close(self):
yield from self.subscriber.close()

def rows_inserted_before(self):
scrollbar = self.log.verticalScrollBar()
self.scroll_at_bottom = scrollbar.value() == scrollbar.maximum()

def rows_inserted_after(self):
if self.scroll_at_bottom:
self.log.scrollToBottom()

def init_log_model(self, init):
table_model = _LogModel(self.log, init)
self.log.setModel(table_model)
table_model.rowsAboutToBeInserted.connect(self.rows_inserted_before)
table_model.rowsInserted.connect(self.rows_inserted_after)
return table_model
2 changes: 2 additions & 0 deletions artiq/gui/parameters.py
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@ def __init__(self):

self.table = QtGui.QTableView()
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table.horizontalHeader().setResizeMode(
QtGui.QHeaderView.ResizeToContents)
grid.addWidget(self.table, 1, 0)

def search_parameters(self):
2 changes: 2 additions & 0 deletions artiq/gui/results.py
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@ def __init__(self, dialog_parent, dock_area):

self.table = QtGui.QTableView()
self.table.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
self.table.horizontalHeader().setResizeMode(
QtGui.QHeaderView.ResizeToContents)
grid.addWidget(self.table, 0, 0)

add_display_box = QtGui.QGroupBox("Add display")
2 changes: 2 additions & 0 deletions artiq/gui/schedule.py
Original file line number Diff line number Diff line change
@@ -54,6 +54,8 @@ def __init__(self, schedule_ctl):
self.table = QtGui.QTableView()
self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
self.table.horizontalHeader().setResizeMode(
QtGui.QHeaderView.ResizeToContents)
self.addWidget(self.table)

self.table.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
9 changes: 5 additions & 4 deletions artiq/master/repository.py
Original file line number Diff line number Diff line change
@@ -10,13 +10,13 @@


@asyncio.coroutine
def _scan_experiments():
def _scan_experiments(log):
r = dict()
for f in os.listdir("repository"):
if f.endswith(".py"):
try:
full_name = os.path.join("repository", f)
worker = Worker()
worker = Worker({"log": lambda message: log("scan", message)})
try:
description = yield from worker.examine(full_name)
finally:
@@ -52,16 +52,17 @@ def _sync_explist(target, source):


class Repository:
def __init__(self):
def __init__(self, log_fn):
self.explist = Notifier(dict())
self._scanning = False
self.log_fn = log_fn

@asyncio.coroutine
def scan(self):
if self._scanning:
return
self._scanning = True
new_explist = yield from _scan_experiments()
new_explist = yield from _scan_experiments(self.log_fn)
_sync_explist(self.explist, new_explist)
self._scanning = False