forked from DiamondLightSource/pymalcolm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
1,064 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#!/bin/sh | ||
# sip | ||
SIP_VER=4.13.3 | ||
SIP_DIR=sip-${SIP_VER} | ||
SIP_TAR=${SIP_DIR}.tar.gz | ||
# pyqt | ||
PYQT_VER=4.9.4 | ||
PYQT_DIR=PyQt-x11-gpl-${PYQT_VER} | ||
PYQT_TAR=${PYQT_DIR}.tar.gz | ||
SITE_PACKAGES=${VIRTUAL_ENV}/lib/python${TRAVIS_PYTHON_VERSION}/site-packages | ||
set -ex | ||
if [ ! -e ${SITE_PACKAGES}/PyQt4 ]; then | ||
# Install sip | ||
wget http://sourceforge.net/projects/pyqt/files/sip/${SIP_DIR}/${SIP_TAR} | ||
tar -xzf ${SIP_TAR} | ||
cd ${SIP_DIR} | ||
python ./configure.py \ | ||
--bindir=$(pwd)/prefix/bin \ | ||
--sipdir=$(pwd)/prefix/share/sip \ | ||
--incdir=$(pwd)/prefix/include \ | ||
--destdir=${SITE_PACKAGES} | ||
make -j 2 | ||
make install | ||
cd .. | ||
# Install pyqt | ||
export PATH=$PATH:$(pwd)/${SIP_DIR}/prefix/bin | ||
wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-${PYQT_VER}/${PYQT_TAR} | ||
tar -xzf ${PYQT_TAR} | ||
rm ${PYQT_TAR} | ||
cd ${PYQT_DIR} | ||
mkdir prefix | ||
python ./configure.py \ | ||
--confirm-license \ | ||
--bindir=$(pwd)/prefix/bin \ | ||
--destdir=${SITE_PACKAGES} | ||
make -j 2 | ||
make install | ||
cd .. | ||
fi |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from malcolm.core.response import Error, Return | ||
from malcolm.gui.baseitem import BaseItem | ||
|
||
|
||
class AttributeItem(BaseItem): | ||
|
||
def get_value(self): | ||
return str(self.ref.value) | ||
|
||
# def get_writeable(self): | ||
#return self.ref.meta.writeable | ||
|
||
# def set_value(self, value): | ||
# self._state = self.RUNNING | ||
# request = Request.Put(None, None, self.endpoint, value) | ||
# return request | ||
|
||
def handle_response(self, response): | ||
if isinstance(response, Error): | ||
self._state = self.ERROR | ||
elif isinstance(response, Return): | ||
self._state = self.IDLE | ||
else: | ||
raise TypeError(type(response)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
from PyQt4.Qt import QStyle, QApplication | ||
|
||
|
||
class BaseItem(object): | ||
IDLE = "Idle" | ||
RUNNING = "Running" | ||
ERROR = "Error" | ||
CHANGED = "Changed" | ||
icons = { | ||
IDLE: QStyle.SP_FileDialogInfoView, | ||
RUNNING: QStyle.SP_BrowserReload, | ||
ERROR: QStyle.SP_MessageBoxCritical, | ||
CHANGED: QStyle.SP_FileDialogStart, | ||
} | ||
# map endpoint -> BlockItem | ||
items = {} | ||
|
||
def __init__(self, endpoint, ref): | ||
# The Block or Method or Attribute or AttributeMeta ref | ||
self.ref = ref | ||
# parent BlockItem | ||
self.parent_item = None | ||
# any BlockItem children | ||
self.children = [] | ||
# endpoint list for this node | ||
self.endpoint = tuple(endpoint) | ||
# add to items | ||
self.items[self.endpoint] = self | ||
# current state | ||
self._state = self.IDLE | ||
|
||
def get_icon(self): | ||
icon = self.icons[self.get_state()] | ||
return QApplication.style().standardIcon(icon) | ||
|
||
def get_label(self): | ||
return self.endpoint[-1] | ||
|
||
def get_value(self): | ||
return None | ||
|
||
def get_writeable(self): | ||
return False | ||
|
||
def get_state(self): | ||
return self._state | ||
|
||
def parent_row(self): | ||
if self.parent_item: | ||
assert self in self.parent_item.children, \ | ||
"%s is not in %s" % (self, self.parent_item.children) | ||
return self.parent_item.children.index(self) | ||
return 0 | ||
|
||
def add_child(self, item): | ||
item.parent_item = self | ||
self.children.append(item) | ||
self.items[item.endpoint] = item | ||
|
||
def remove_child(self, item): | ||
self.children.remove(item) | ||
self.items.pop(item.endpoint) | ||
|
||
def ref_children(self): | ||
return 0 | ||
|
||
def create_children(self): | ||
return | ||
|
||
def set_value(self, value): | ||
raise NotImplementedError() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from PyQt4.Qt import QTreeView, QSize | ||
|
||
from malcolm.gui.blockmodel import BlockModel | ||
from malcolm.gui.delegate import Delegate | ||
|
||
|
||
class BlockGui(QTreeView): | ||
|
||
def __init__(self, process, block_name): | ||
QTreeView.__init__(self) | ||
model = BlockModel(process, block_name) | ||
self.setModel(model) | ||
self.setColumnWidth(0, 160) | ||
self.setColumnWidth(1, 180) | ||
self.setColumnWidth(2, 25) | ||
self.resize(QSize(370, 800)) | ||
self.setItemDelegateForColumn(1, Delegate()) | ||
self.setEditTriggers(self.AllEditTriggers) | ||
self.show() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from malcolm.gui.baseitem import BaseItem | ||
from malcolm.gui.methoditem import MethodItem | ||
from malcolm.gui.attributeitem import AttributeItem | ||
|
||
|
||
class BlockItem(BaseItem): | ||
|
||
def _get_group_name(self, attr): | ||
tags = getattr(attr, "tags", []) | ||
groups = [x for x in tags if x.startswith("group:")] | ||
if groups: | ||
group_name = groups[0][len("group:"):] | ||
return group_name | ||
|
||
def ref_children(self): | ||
"""Number of child objects our ref has""" | ||
nchildren = 0 | ||
for attr in self.ref.attributes.values(): | ||
# check for group, otherwise put it in place | ||
if self._get_group_name(attr) is None: | ||
nchildren += 1 | ||
nchildren += len(self.ref.methods) | ||
return nchildren | ||
|
||
def create_children(self): | ||
for name, attr in self.ref.attributes.items(): | ||
item = AttributeItem(self.endpoint + (name,), attr) | ||
group_name = self._get_group_name(attr) | ||
if group_name is None: | ||
parent_item = self | ||
else: | ||
parent_endpoint = self.endpoint + (group_name,) | ||
parent_item = self.items[parent_endpoint] | ||
parent_item.add_child(item) | ||
item.create_children() | ||
for name, method in self.ref.methods.items(): | ||
item = MethodItem(self.endpoint + (name,), method) | ||
self.add_child(item) | ||
item.create_children() |
Oops, something went wrong.