[taurus] 01/03: Imported Upstream version 3.3.1+dfsg
Frédéric-Emmanuel Picca
picca at moszumanska.debian.org
Mon Oct 27 11:48:00 UTC 2014
This is an automated email from the git hooks/post-receive script.
picca pushed a commit to branch master
in repository taurus.
commit 76c2be24900558c010699eb05bbb19d620f7bfa3
Author: Picca Frédéric-Emmanuel <picca at debian.org>
Date: Mon Oct 27 10:56:56 2014 +0100
Imported Upstream version 3.3.1+dfsg
---
PKG-INFO | 2 +-
doc/man/tau2taurus.1 | 6 +-
doc/man/taurusconfigbrowser.1 | 6 +-
doc/man/tauruscurve.1 | 6 +-
doc/man/taurusdemo.1 | 4 +-
doc/man/taurusdesigner.1 | 6 +-
doc/man/taurusdevicepanel.1 | 6 +-
doc/man/taurusdoc.1 | 6 +-
doc/man/taurusform.1 | 6 +-
doc/man/taurusgui.1 | 6 +-
doc/man/taurusimage.1 | 6 +-
doc/man/tauruspanel.1 | 6 +-
doc/man/taurusplot.1 | 6 +-
doc/man/taurusremotelogmonitor.1 | 4 +-
doc/man/taurustrend.1 | 6 +-
doc/man/taurustrend1d.1 | 6 +-
doc/man/taurustrend2d.1 | 6 +-
doc/man/{taurusdemo.1 => taurusui.1} | 12 +-
doc/man/taurusuic4.1 | 16 +-
doc/source/devel/api/taurus/qt/qtgui/graphic.rst | 8 +
.../qt/qtgui/graphic/_TaurusRoundRectItem.rst | 14 ++
.../qt/qtgui/graphic/_TaurusRoundRectStateItem.rst | 14 ++
doc/source/devel/api/taurus/qt/qtgui/taurusgui.rst | 8 +
.../qt/qtgui/taurusgui/_DynamicPlotManager.rst | 14 ++
.../api/taurus/qt/qtgui/taurusgui/_MacroBroker.rst | 14 ++
doc/source/devel/api/taurus_AllClasses.rst | 8 +
lib/taurus/core/release.py | 2 +-
lib/taurus/core/util/codecs.py | 172 +++++++++++++++++----
lib/taurus/core/util/test/test_codecs.py | 94 +++++++++++
lib/taurus/external/qt/__init__.py | 12 ++
.../qt/qtdesigner/taurusplugin/taurusplugin.py | 41 ++++-
lib/taurus/qt/qtgui/button/taurusbutton.py | 1 +
lib/taurus/qt/qtgui/button/test/res/Timeout | 2 +-
lib/taurus/qt/qtgui/compact/abstractswitcher.py | 6 +-
lib/taurus/qt/qtgui/compact/basicswitcher.py | 4 +-
lib/taurus/qt/qtgui/extra_guiqwt/image.py | 68 +++++---
lib/taurus/qt/qtgui/graphic/jdraw/jdraw.py | 7 +-
lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py | 70 ++++-----
lib/taurus/qt/qtgui/graphic/taurusgraphic.py | 53 ++++++-
lib/taurus/qt/qtgui/input/taurusspinbox.py | 1 +
.../qt/qtgui/panel/taurusconfigurationpanel.py | 2 +-
lib/taurus/qt/qtgui/panel/taurusform.py | 1 +
lib/taurus/qt/qtgui/panel/taurusvalue.py | 92 ++++++++---
lib/taurus/qt/qtgui/table/taurusvaluestable.py | 2 +-
.../taurusgui/conf/tgconf_example01/config.py | 12 +-
.../qt/qtgui/taurusgui/paneldescriptionwizard.py | 1 -
lib/taurus/qt/qtgui/taurusgui/taurusgui.py | 2 +-
scripts/taurusui | 56 +++++++
48 files changed, 707 insertions(+), 196 deletions(-)
diff --git a/PKG-INFO b/PKG-INFO
index 4905b54..f6b797c 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: taurus
-Version: 3.3.0
+Version: 3.3.1
Summary: A library designed to provide an abstraction layer over PyTango.
Home-page: http://packages.python.org/taurus
Author: Carlos Pascual-Izarra
diff --git a/doc/man/tau2taurus.1 b/doc/man/tau2taurus.1
index bfc6fef..b2617d1 100644
--- a/doc/man/tau2taurus.1
+++ b/doc/man/tau2taurus.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAU2TAURUS "1" "July 2014" "tau2taurus 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAU2TAURUS "1" "October 2014" "tau2taurus 3.3.1" "User Commands"
.SH NAME
-tau2taurus \- manual page for tau2taurus 3.3.0
+tau2taurus \- manual page for tau2taurus 3.3.1
.SH SYNOPSIS
.B tau2taurus
[\fI\,options\/\fR] \fI\,inputfile\/\fR
diff --git a/doc/man/taurusconfigbrowser.1 b/doc/man/taurusconfigbrowser.1
index b4ea065..c5c026a 100644
--- a/doc/man/taurusconfigbrowser.1
+++ b/doc/man/taurusconfigbrowser.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSCONFIGEDITOR "1" "July 2014" "taurusconfigeditor 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSCONFIGEDITOR "1" "October 2014" "taurusconfigeditor 3.3.1" "User Commands"
.SH NAME
-taurusconfigeditor \- manual page for taurusconfigeditor 3.3.0
+taurusconfigeditor \- manual page for taurusconfigeditor 3.3.1
.SH SYNOPSIS
.B taurusconfigbrowser
[\fI\,options\/\fR] [\fI\,INIFILENAME\/\fR]
diff --git a/doc/man/tauruscurve.1 b/doc/man/tauruscurve.1
index 27e5895..b8b1bdd 100644
--- a/doc/man/tauruscurve.1
+++ b/doc/man/tauruscurve.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUS "1" "July 2014" "Taurus Curve Dialog 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUS "1" "October 2014" "Taurus Curve Dialog 3.3.1" "User Commands"
.SH NAME
-Taurus \- manual page for Taurus Curve Dialog 3.3.0
+Taurus \- manual page for Taurus Curve Dialog 3.3.1
.SH SYNOPSIS
.B tauruscurve
[\fI\,options\/\fR] [\fI\,<model1> \/\fR[\fI\,<model2>\/\fR] ...]
diff --git a/doc/man/taurusdemo.1 b/doc/man/taurusdemo.1
index 1e11893..588af0d 100644
--- a/doc/man/taurusdemo.1
+++ b/doc/man/taurusdemo.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSDEMO "1" "July 2014" "taurusdemo 1.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSDEMO "1" "October 2014" "taurusdemo 1.0" "User Commands"
.SH NAME
taurusdemo \- manual page for taurusdemo 1.0
.SH SYNOPSIS
diff --git a/doc/man/taurusdesigner.1 b/doc/man/taurusdesigner.1
index a91203c..00d4942 100644
--- a/doc/man/taurusdesigner.1
+++ b/doc/man/taurusdesigner.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSDESIGNER "1" "July 2014" "taurusdesigner 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSDESIGNER "1" "October 2014" "taurusdesigner 3.3.1" "User Commands"
.SH NAME
-taurusdesigner \- manual page for taurusdesigner 3.3.0
+taurusdesigner \- manual page for taurusdesigner 3.3.1
.SH SYNOPSIS
.B taurusdesigner
[\fI\,options\/\fR] \fI\,<ui file(s)>\/\fR
diff --git a/doc/man/taurusdevicepanel.1 b/doc/man/taurusdevicepanel.1
index 2e546f4..6e36a0c 100644
--- a/doc/man/taurusdevicepanel.1
+++ b/doc/man/taurusdevicepanel.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSDEVICEPANEL "1" "July 2014" "TaurusDevicePanel 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSDEVICEPANEL "1" "October 2014" "TaurusDevicePanel 3.3.1" "User Commands"
.SH NAME
-TaurusDevicePanel \- manual page for TaurusDevicePanel 3.3.0
+TaurusDevicePanel \- manual page for TaurusDevicePanel 3.3.1
.SH SYNOPSIS
.B taurusdevicepanel
[\fI\,options\/\fR] [\fI\,devname \/\fR[\fI\,attrs\/\fR]]
diff --git a/doc/man/taurusdoc.1 b/doc/man/taurusdoc.1
index 4f9b17f..ab852d4 100644
--- a/doc/man/taurusdoc.1
+++ b/doc/man/taurusdoc.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSDOC "1" "July 2014" "taurusdoc 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSDOC "1" "October 2014" "taurusdoc 3.3.1" "User Commands"
.SH NAME
-taurusdoc \- manual page for taurusdoc 3.3.0
+taurusdoc \- manual page for taurusdoc 3.3.1
.SH SYNOPSIS
.B taurusdoc
[\fI\,options\/\fR]
diff --git a/doc/man/taurusform.1 b/doc/man/taurusform.1
index e55811d..fbd89c7 100644
--- a/doc/man/taurusform.1
+++ b/doc/man/taurusform.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSFORM "1" "July 2014" "taurusform 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSFORM "1" "October 2014" "taurusform 3.3.1" "User Commands"
.SH NAME
-taurusform \- manual page for taurusform 3.3.0
+taurusform \- manual page for taurusform 3.3.1
.SH SYNOPSIS
.B taurusform
[\fI\,options\/\fR] [\fI\,model1 \/\fR[\fI\,model2 \/\fR...]]
diff --git a/doc/man/taurusgui.1 b/doc/man/taurusgui.1
index ac81ada..3a64253 100644
--- a/doc/man/taurusgui.1
+++ b/doc/man/taurusgui.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSGUI "1" "July 2014" "taurusgui 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSGUI "1" "October 2014" "taurusgui 3.3.1" "User Commands"
.SH NAME
-taurusgui \- manual page for taurusgui 3.3.0
+taurusgui \- manual page for taurusgui 3.3.1
.SH SYNOPSIS
.B taurusgui
[\fI\,options\/\fR] \fI\,confname\/\fR
diff --git a/doc/man/taurusimage.1 b/doc/man/taurusimage.1
index 0364ae1..a5af096 100644
--- a/doc/man/taurusimage.1
+++ b/doc/man/taurusimage.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUS "1" "July 2014" "Taurus Image Dialog 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUS "1" "October 2014" "Taurus Image Dialog 3.3.1" "User Commands"
.SH NAME
-Taurus \- manual page for Taurus Image Dialog 3.3.0
+Taurus \- manual page for Taurus Image Dialog 3.3.1
.SH SYNOPSIS
.B taurusimage
[\fI\,options\/\fR] \fI\,<model>\/\fR
diff --git a/doc/man/tauruspanel.1 b/doc/man/tauruspanel.1
index 833d38b..08dcc2b 100644
--- a/doc/man/tauruspanel.1
+++ b/doc/man/tauruspanel.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSPANEL "1" "July 2014" "tauruspanel 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSPANEL "1" "October 2014" "tauruspanel 3.3.1" "User Commands"
.SH NAME
-tauruspanel \- manual page for tauruspanel 3.3.0
+tauruspanel \- manual page for tauruspanel 3.3.1
.SH SYNOPSIS
.B tauruspanel
[\fI\,options\/\fR] [\fI\,devname\/\fR]
diff --git a/doc/man/taurusplot.1 b/doc/man/taurusplot.1
index 07c8278..5e5462a 100644
--- a/doc/man/taurusplot.1
+++ b/doc/man/taurusplot.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSPLOT "1" "July 2014" "taurusplot 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSPLOT "1" "October 2014" "taurusplot 3.3.1" "User Commands"
.SH NAME
-taurusplot \- manual page for taurusplot 3.3.0
+taurusplot \- manual page for taurusplot 3.3.1
.SH SYNOPSIS
.B taurusplot
[\fI\,options\/\fR] [\fI\,<model1> \/\fR[\fI\,<model2>\/\fR] ...]
diff --git a/doc/man/taurusremotelogmonitor.1 b/doc/man/taurusremotelogmonitor.1
index fb81be9..28ede16 100644
--- a/doc/man/taurusremotelogmonitor.1
+++ b/doc/man/taurusremotelogmonitor.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUS "1" "July 2014" "Taurus remote logger 1.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUS "1" "October 2014" "Taurus remote logger 1.0" "User Commands"
.SH NAME
Taurus \- manual page for Taurus remote logger 1.0
.SH SYNOPSIS
diff --git a/doc/man/taurustrend.1 b/doc/man/taurustrend.1
index 7b8af79..7e0b1a6 100644
--- a/doc/man/taurustrend.1
+++ b/doc/man/taurustrend.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSTREND "1" "July 2014" "taurustrend 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSTREND "1" "October 2014" "taurustrend 3.3.1" "User Commands"
.SH NAME
-taurustrend \- manual page for taurustrend 3.3.0
+taurustrend \- manual page for taurustrend 3.3.1
.SH SYNOPSIS
.B taurustrend
[\fI\,options\/\fR] [\fI\,<model1> \/\fR[\fI\,<model2>\/\fR] ...]
diff --git a/doc/man/taurustrend1d.1 b/doc/man/taurustrend1d.1
index b24f25d..69c990f 100644
--- a/doc/man/taurustrend1d.1
+++ b/doc/man/taurustrend1d.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUS "1" "July 2014" "Taurus Trend 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUS "1" "October 2014" "Taurus Trend 3.3.1" "User Commands"
.SH NAME
-Taurus \- manual page for Taurus Trend 3.3.0
+Taurus \- manual page for Taurus Trend 3.3.1
.SH SYNOPSIS
.B taurustrend1d
[\fI\,options\/\fR] \fI\,<model>\/\fR
diff --git a/doc/man/taurustrend2d.1 b/doc/man/taurustrend2d.1
index 5953448..11a40bb 100644
--- a/doc/man/taurustrend2d.1
+++ b/doc/man/taurustrend2d.1
@@ -1,7 +1,7 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUS "1" "July 2014" "Taurus Trend 2D 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUS "1" "October 2014" "Taurus Trend 2D 3.3.1" "User Commands"
.SH NAME
-Taurus \- manual page for Taurus Trend 2D 3.3.0
+Taurus \- manual page for Taurus Trend 2D 3.3.1
.SH SYNOPSIS
.B taurustrend2d
[\fI\,options\/\fR] \fI\,<model>\/\fR
diff --git a/doc/man/taurusdemo.1 b/doc/man/taurusui.1
similarity index 71%
copy from doc/man/taurusdemo.1
copy to doc/man/taurusui.1
index 1e11893..29e94a2 100644
--- a/doc/man/taurusdemo.1
+++ b/doc/man/taurusui.1
@@ -1,12 +1,12 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSDEMO "1" "July 2014" "taurusdemo 1.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSUI "1" "October 2014" "taurusui 1.0" "User Commands"
.SH NAME
-taurusdemo \- manual page for taurusdemo 1.0
+taurusui \- manual page for taurusui 1.0
.SH SYNOPSIS
-.B taurusdemo
-[\fI\,options\/\fR]
+.B taurusui
+[\fI\,options\/\fR] \fI\,<ui_file1> \/\fR[\fI\,<ui_file2> \/\fR...]
.SH DESCRIPTION
-A demo application for taurus
+a taurus application that launches GUI(s) for the given .ui file(s)
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
diff --git a/doc/man/taurusuic4.1 b/doc/man/taurusuic4.1
index 1edbd29..baefc9c 100644
--- a/doc/man/taurusuic4.1
+++ b/doc/man/taurusuic4.1
@@ -1,11 +1,16 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.45.1.
-.TH TAURUSUIC4 "1" "July 2014" "taurusuic4 3.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.3.
+.TH TAURUSUIC4 "1" "October 2014" "taurusuic4 *******************************************************************************" "User Commands"
.SH NAME
-taurusuic4 \- manual page for taurusuic4 3.3.0
+taurusuic4 \- manual page for taurusuic4 *******************************************************************************
.SH SYNOPSIS
.B taurusuic4
[\fI\,options\/\fR] \fI\,<ui-file>\/\fR
.SH DESCRIPTION
+*******************************************************************************
+taurusuic4 is deprecated since SEP11 (http://sf.net/p/sardana/wiki/SEP11)
+Consider using the taurus.qt.qtgui.util.UILoadable decorator instead
+*******************************************************************************
+.PP
a taurus customized pyuic4
.SH OPTIONS
.TP
@@ -35,3 +40,8 @@ generate a PyQt v3 style wrapper
.TP
\fB\-T\fR
generate an additional taurus python file
+.PP
+taurusuic4 is deprecated since SEP11 (http://sf.net/p/sardana/wiki/SEP11)
+Consider using the taurus.qt.qtgui.util.UILoadable decorator instead
+*******************************************************************************
+taurusuic4 3.3.1
diff --git a/doc/source/devel/api/taurus/qt/qtgui/graphic.rst b/doc/source/devel/api/taurus/qt/qtgui/graphic.rst
index e1feaeb..e7339fa 100644
--- a/doc/source/devel/api/taurus/qt/qtgui/graphic.rst
+++ b/doc/source/devel/api/taurus/qt/qtgui/graphic.rst
@@ -55,6 +55,10 @@
graphic/_TaurusRectStateItem.rst
+ graphic/_TaurusRoundRectItem.rst
+
+ graphic/_TaurusRoundRectStateItem.rst
+
graphic/_TaurusSplineStateItem.rst
graphic/_TaurusTextAttributeItem.rst
@@ -95,6 +99,10 @@
* :class:`TaurusRectStateItem`
+ * :class:`TaurusRoundRectItem`
+
+ * :class:`TaurusRoundRectStateItem`
+
* :class:`TaurusSplineStateItem`
* :class:`TaurusTextAttributeItem`
diff --git a/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectItem.rst b/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectItem.rst
new file mode 100644
index 0000000..8165852
--- /dev/null
+++ b/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectItem.rst
@@ -0,0 +1,14 @@
+.. AUTO_RST4API
+.. This file was generated by auto_rst4api.py. Changes may be lost
+.. currentmodule:: taurus.qt.qtgui.graphic
+
+:class:`TaurusRoundRectItem`
+============================
+
+.. inheritance-diagram:: TaurusRoundRectItem
+ :parts: 1
+
+.. autoclass:: TaurusRoundRectItem
+ :members:
+ :undoc-members:
+ :show-inheritance:
\ No newline at end of file
diff --git a/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectStateItem.rst b/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectStateItem.rst
new file mode 100644
index 0000000..bf3e582
--- /dev/null
+++ b/doc/source/devel/api/taurus/qt/qtgui/graphic/_TaurusRoundRectStateItem.rst
@@ -0,0 +1,14 @@
+.. AUTO_RST4API
+.. This file was generated by auto_rst4api.py. Changes may be lost
+.. currentmodule:: taurus.qt.qtgui.graphic
+
+:class:`TaurusRoundRectStateItem`
+=================================
+
+.. inheritance-diagram:: TaurusRoundRectStateItem
+ :parts: 1
+
+.. autoclass:: TaurusRoundRectStateItem
+ :members:
+ :undoc-members:
+ :show-inheritance:
\ No newline at end of file
diff --git a/doc/source/devel/api/taurus/qt/qtgui/taurusgui.rst b/doc/source/devel/api/taurus/qt/qtgui/taurusgui.rst
index 4cf8cdb..4f15be4 100644
--- a/doc/source/devel/api/taurus/qt/qtgui/taurusgui.rst
+++ b/doc/source/devel/api/taurus/qt/qtgui/taurusgui.rst
@@ -31,8 +31,12 @@
taurusgui/_DockWidgetPanel.rst
+ taurusgui/_DynamicPlotManager.rst
+
taurusgui/_ExternalAppEditor.rst
+ taurusgui/_MacroBroker.rst
+
taurusgui/_PanelDescriptionWizard.rst
taurusgui/_TaurusGui.rst
@@ -45,8 +49,12 @@
* :class:`DockWidgetPanel`
+ * :class:`DynamicPlotManager`
+
* :class:`ExternalAppEditor`
+ * :class:`MacroBroker`
+
* :class:`PanelDescriptionWizard`
* :class:`TaurusGui`
diff --git a/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_DynamicPlotManager.rst b/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_DynamicPlotManager.rst
new file mode 100644
index 0000000..ecf864b
--- /dev/null
+++ b/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_DynamicPlotManager.rst
@@ -0,0 +1,14 @@
+.. AUTO_RST4API
+.. This file was generated by auto_rst4api.py. Changes may be lost
+.. currentmodule:: taurus.qt.qtgui.taurusgui
+
+:class:`DynamicPlotManager`
+===========================
+
+.. inheritance-diagram:: DynamicPlotManager
+ :parts: 1
+
+.. autoclass:: DynamicPlotManager
+ :members:
+ :undoc-members:
+ :show-inheritance:
\ No newline at end of file
diff --git a/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_MacroBroker.rst b/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_MacroBroker.rst
new file mode 100644
index 0000000..e0612ba
--- /dev/null
+++ b/doc/source/devel/api/taurus/qt/qtgui/taurusgui/_MacroBroker.rst
@@ -0,0 +1,14 @@
+.. AUTO_RST4API
+.. This file was generated by auto_rst4api.py. Changes may be lost
+.. currentmodule:: taurus.qt.qtgui.taurusgui
+
+:class:`MacroBroker`
+====================
+
+.. inheritance-diagram:: MacroBroker
+ :parts: 1
+
+.. autoclass:: MacroBroker
+ :members:
+ :undoc-members:
+ :show-inheritance:
\ No newline at end of file
diff --git a/doc/source/devel/api/taurus_AllClasses.rst b/doc/source/devel/api/taurus_AllClasses.rst
index d0c9999..2664ed2 100644
--- a/doc/source/devel/api/taurus_AllClasses.rst
+++ b/doc/source/devel/api/taurus_AllClasses.rst
@@ -108,6 +108,8 @@ All Classes for :mod:`taurus`
* :class:`~taurus.qt.qtgui.util.DropDebugger`
+ * :class:`~taurus.qt.qtgui.taurusgui.DynamicPlotManager`
+
* :class:`~taurus.qt.qtgui.model.EditorToolBar`
* :class:`~taurus.core.util.EnumException`
@@ -202,6 +204,8 @@ All Classes for :mod:`taurus`
* :class:`~taurus.core.util.LoopList`
+ * :class:`~taurus.qt.qtgui.taurusgui.MacroBroker`
+
* :class:`~taurus.qt.qtgui.panel.MacroServerMessageErrorHandler`
* :class:`~taurus.core.util.MemoryLogHandler`
@@ -576,6 +580,10 @@ All Classes for :mod:`taurus`
* :class:`~taurus.qt.qtgui.graphic.TaurusRectStateItem`
+ * :class:`~taurus.qt.qtgui.graphic.TaurusRoundRectItem`
+
+ * :class:`~taurus.qt.qtgui.graphic.TaurusRoundRectStateItem`
+
* :class:`~taurus.qt.qtgui.base.TaurusScalarAttributeControllerHelper`
* :class:`~taurus.qt.qtgui.container.TaurusScrollArea`
diff --git a/lib/taurus/core/release.py b/lib/taurus/core/release.py
index 0176434..a931d0f 100644
--- a/lib/taurus/core/release.py
+++ b/lib/taurus/core/release.py
@@ -53,7 +53,7 @@ name = 'taurus'
# bdist_deb does not accept underscores (a Debian convention).
-version_info = (3,3,0,'rc',0)
+version_info = (3,3,1,'rc',0)
version = '.'.join(map(str, version_info[:3]))
revision = str(version_info[4])
diff --git a/lib/taurus/core/util/codecs.py b/lib/taurus/core/util/codecs.py
index cef5279..4337d12 100644
--- a/lib/taurus/core/util/codecs.py
+++ b/lib/taurus/core/util/codecs.py
@@ -69,15 +69,13 @@ __all__ = ["Codec", "NullCodec", "ZIPCodec", "BZ2Codec", "JSONCodec",
__docformat__ = "restructuredtext"
import copy
-import operator
-import types
#need by VideoImageCodec
import struct
import numpy
from singleton import Singleton
-from log import Logger, DebugIt
+from log import Logger
from containers import CaselessDict
@@ -400,6 +398,7 @@ class BSONCodec(Codec):
:return: (sequence[str, obj]) a sequence of two elements where the
first item is the encoding format of the second item object"""
+ import bson
if not data[0].startswith('bson'):
return data
format = data[0].partition('_')[2]
@@ -407,7 +406,7 @@ class BSONCodec(Codec):
data = data[0], bson.BSON(data[1])
- data = decode(data[1])
+ data = self.decode(data[1])
if ensure_ascii:
data = self._transform_ascii(data)
return format, data
@@ -490,16 +489,18 @@ class VideoImageCodec(Codec):
:param data: (sequence[str, obj]) a sequence of two elements where the first item is the encoding format of the second item object
:return: (sequence[str, obj]) a sequence of two elements where the first item is the encoding format of the second item object"""
+
+ #TODO: support encoding for colour imgage modes
- format = 'VIDEO_IMAGE'
- if len(data[0]): format += '_%s' % data[0]
+ fmt = 'videoimage'
+ if len(data[0]): fmt += '_%s' % data[0]
#imgMode depends on numpy.array dtype
imgMode = self.__getModeId(str(data[1].dtype))
#frameNumber, unknown then -1
height,width = data[1].shape
header = self.__packHeader(imgMode,-1,width,height)
buffer = data[1].tostring()
- return format,header+buffer
+ return fmt, header+buffer
def decode(self, data, *args, **kwargs):
"""decodes the given data from a LImA's video_image.
@@ -507,17 +508,117 @@ class VideoImageCodec(Codec):
:param data: (sequence[str, obj]) a sequence of two elements where the first item is the encoding format of the second item object
:return: (sequence[str, obj]) a sequence of two elements where the first item is the encoding format of the second item object"""
-
- if not data[0] == 'VIDEO_IMAGE':
+
+ if data[0].startswith('VIDEO_IMAGE'):
+ self.warning(('"VIDEO_IMAGE" format name is deprecated.' +
+ 'Use "videoimage" instead'))
+ fixedformat = data[0].replace('VIDEO_IMAGE','videoimage')
+ _, _, fmt = fixedformat.partition('_')
+ elif data[0].startswith('videoimage'):
+ _, _, fmt = data[0].partition('_')
+ else:
return data
header = self.__unpackHeader(data[1][:struct.calcsize(self.VIDEO_HEADER_FORMAT)])
-
+
imgBuffer = data[1][struct.calcsize(self.VIDEO_HEADER_FORMAT):]
dtype = self.__getDtypeId(header['imageMode'])
- img1D = numpy.fromstring(imgBuffer, dtype)
- img2D = img1D.reshape(header['height'],header['width'])
+ if header['imageMode'] == 7:
+ # RGBA 4 bytes per pixel
+ rgba = numpy.fromstring(imgBuffer, dtype)
+ bbuf = rgba[0::4]
+ gbuf = rgba[1::4]
+ rbuf = rgba[2::4]
+ #abuf = rgba[3::4]
+ r = rbuf.reshape(header['height'],header['width'])
+ g = gbuf.reshape(header['height'],header['width'])
+ b = bbuf.reshape(header['height'],header['width'])
+ #a = abuf.reshape(header['height'],header['width'])
+ img2D = numpy.dstack((r,g,b))
+
+ elif header['imageMode'] == 17:
+ # YUV444 3 bytes per pixel
+ yuv = numpy.fromstring(imgBuffer, dtype)
+ y = yuv[0::3]
+ u = yuv[1::3]
+ v = yuv[2::3]
+
+ rbuff, gbuff, bbuff = self.__yuv2rgb(y,u,v)
+
+ # Shape buffers to image size
+ r = rbuff.reshape(header['height'],header['width'])
+ g = gbuff.reshape(header['height'],header['width'])
+ b = bbuff.reshape(header['height'],header['width'])
+
+ # Build the RGB image
+ img2D = numpy.dstack((r,g,b))
+
+ elif header['imageMode'] == 16:
+ # YUV422 4 bytes per 2 pixels
+ yuv = numpy.fromstring(imgBuffer, dtype)
+ u = yuv[0::4]
+ y1 = yuv[1::4]
+ v = yuv[2::4]
+ y2 = yuv[3::4]
+
+ r1, g1, b1 = self.__yuv2rgb(y1,u,v)
+ r2, g2, b2 = self.__yuv2rgb(y2,u,v)
+
+ # Create RGB buffers
+ rbuff = numpy.dstack((r1,r2)).reshape(header['height']*header['width'])
+ gbuff = numpy.dstack((g1,g2)).reshape(header['height']*header['width'])
+ bbuff = numpy.dstack((b1,b2)).reshape(header['height']*header['width'])
+
+ # Shape buffers to image size
+ r = rbuff.reshape(header['height'],header['width'])
+ g = gbuff.reshape(header['height'],header['width'])
+ b = bbuff.reshape(header['height'],header['width'])
+
+ # Build the RGB image
+ img2D = numpy.dstack((r,g,b))
+
+ elif header['imageMode'] == 15:
+ # YUV411 6 bytes per 4 pixels
+ yuv = numpy.fromstring(imgBuffer, dtype)
+ u = yuv[0::6]
+ y1 = yuv[1::6]
+ y2 = yuv[2::6]
+ v = yuv[3::6]
+ y3 = yuv[4::6]
+ y4 = yuv[5::6]
+
+ r1, g1, b1 = self.__yuv2rgb(y1,u,v)
+ r2, g2, b2 = self.__yuv2rgb(y2,u,v)
+ r3, g3, b3 = self.__yuv2rgb(y3,u,v)
+ r4, g4, b4 = self.__yuv2rgb(y4,u,v)
+
+ # Create RGB buffers
+ rbuff = numpy.dstack((r1,r2,r3,r4)).reshape(header['height']*header['width'])
+ gbuff = numpy.dstack((g1,g2,g3,g4)).reshape(header['height']*header['width'])
+ bbuff = numpy.dstack((b1,b2,b3,b4)).reshape(header['height']*header['width'])
+
+ # Shape buffers to image size
+ r = rbuff.reshape(header['height'],header['width'])
+ g = gbuff.reshape(header['height'],header['width'])
+ b = bbuff.reshape(header['height'],header['width'])
+
+ img2D = numpy.dstack((r,g,b))
+
+ else:
+ img1D = numpy.fromstring(imgBuffer, dtype)
+ img2D = img1D.reshape(header['height'],header['width'])
+
+ return fmt, img2D
+
+ def __yuv2rgb(self, y, u, v):
+ '''YUV444 to RGB888 conversion'''
+ Cr = v - 128.0
+ Cb = u - 128.0
+
+ R = y + 1.402 * Cr
+ G = y - 0.344 * Cb - 0.714 * Cr
+ B = y + 1.772 * Cb
- return '',img2D
+ return (numpy.clip(R,0,255), numpy.clip(G,0,255), numpy.clip(B,0,255))
def __unpackHeader(self,header):
h = struct.unpack(self.VIDEO_HEADER_FORMAT,header)
@@ -561,18 +662,20 @@ class VideoImageCodec(Codec):
'Y32' : 2,#Core.Y32,
'Y64' : 3,#Core.Y64,
#TODO: other modes
- #'RGB555' : Core.RGB555,
- #'RGB565' : Core.RGB565,
- #'RGB24' : Core.RGB24,
- #'RGB32' : Core.RGB32,
- #'BGR24' : Core.BGR24,
- #'BGR32' : Core.BGR32,
- #'BAYER RG8' : Core.BAYER_RG8,
- #'BAYER RG16' : Core.BAYER_RG16,
- #'I420' : Core.I420,
- #'YUV411' : Core.YUV411,
- #'YUV422' : Core.YUV422,
- #'YUV444' : Core.YUV444
+ #'RGB555' : 4,#Core.RGB555,
+ #'RGB565' : 5,#Core.RGB565,
+ #'RGB24' : 6,#Core.RGB24,
+ 'RGB32' : 7,#Core.RGB32,
+ #'BGR24' : 8,#Core.BGR24,
+ #'BGR32' : 9,#Core.BGR32,
+ #'BAYER RG8' : 10,#Core.BAYER_RG8,
+ #'BAYER RG16' : 11,#Core.BAYER_RG16,
+ #'BAYER BG8' : 12,#Core.BAYER_BG8,
+ #'BAYER BG16' : 13,#Core.BAYER_BG16,
+ #'I420' : 14,#Core.I420,
+ #'YUV411' : 15,#Core.YUV411,
+ 'YUV422' : 16,#Core.YUV422,
+ #'YUV444' : 17,#Core.YUV444
}[mode]
def __getFormatId(self,mode):
@@ -583,14 +686,16 @@ class VideoImageCodec(Codec):
#'RGB555' : Core.RGB555,
#'RGB565' : Core.RGB565,
#'RGB24' : Core.RGB24,
- #'RGB32' : Core.RGB32,
- #'BGR24' : Core.BGR24,
+ 7 : 'RGB32',#Core.RGB32,
+ #8 : 'BGR24',#Core.BGR24,
#'BGR32' : Core.BGR32,
#'BAYER RG8' : Core.BAYER_RG8,
#'BAYER RG16' : Core.BAYER_RG16,
+ #'BAYER BG8' : Core.BAYER_BG8,
+ #'BAYER BG16' : Core.BAYER_BG16,
#'I420' : Core.I420,
#'YUV411' : Core.YUV411,
- #'YUV422' : Core.YUV422,
+ 16 : 'YUV422',#Core.YUV422,
#'YUV444' : Core.YUV444
}[mode]
@@ -601,15 +706,17 @@ class VideoImageCodec(Codec):
3 : 'uint64',
#'RGB555' : Core.RGB555,
#'RGB565' : Core.RGB565,
- #'RGB24' : Core.RGB24,
- #'RGB32' : Core.RGB32,
+ #6 : 'uint8', # Core.RGB24,
+ 7 : 'uint8', # Core.RGB32,
#'BGR24' : Core.BGR24,
#'BGR32' : Core.BGR32,
#'BAYER RG8' : Core.BAYER_RG8,
#'BAYER RG16' : Core.BAYER_RG16,
+ #'BAYER BG8' : Core.BAYER_BG8,
+ #'BAYER BG16' : Core.BAYER_BG16,
#'I420' : Core.I420,
#'YUV411' : Core.YUV411,
- #'YUV422' : Core.YUV422,
+ 16 : 'uint8', # Core.YUV422,
#'YUV444' : Core.YUV444
}[mode]
@@ -716,7 +823,8 @@ class CodecFactory(Singleton, Logger):
'zip' : ZIPCodec,
'pickle' : PickleCodec,
'plot' : PlotCodec,
- 'VIDEO_IMAGE' : VideoImageCodec,
+ 'VIDEO_IMAGE' : VideoImageCodec, #deprecated
+ 'videoimage' : VideoImageCodec,
'null' : NullCodec,
'none' : NullCodec,
'' : NullCodec })
diff --git a/lib/taurus/core/util/test/test_codecs.py b/lib/taurus/core/util/test/test_codecs.py
new file mode 100644
index 0000000..e3c13a9
--- /dev/null
+++ b/lib/taurus/core/util/test/test_codecs.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+
+#############################################################################
+##
+## This file is part of Taurus, a Tango User Interface Library
+##
+## http://www.tango-controls.org/static/taurus/latest/doc/html/index.html
+##
+## Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
+##
+## Taurus is free software: you can redistribute it and/or modify
+## it under the terms of the GNU Lesser General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## Taurus is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public License
+## along with Taurus. If not, see <http://www.gnu.org/licenses/>.
+##
+#############################################################################
+
+"""Test for taurus.core.util.codecs"""
+
+#__all__ = []
+
+__docformat__ = 'restructuredtext'
+
+import copy
+from taurus.external import unittest
+from taurus.test import insertTest
+from taurus.core.util.codecs import CodecFactory
+import numpy
+
+
+ at insertTest(helper_name= 'encDec', cname='json', data=[1,2,3])
+ at insertTest(helper_name= 'encDec', cname='zip', data='foobar')
+ at insertTest(helper_name= 'encDec', cname='zip_json', data=[1,2,3])
+ at insertTest(helper_name= 'encDec', cname='videoimage',
+ data=numpy.ones((2,2), dtype='uint8'))
+ at insertTest(helper_name= 'encDec', cname='zip_null_zip_videoimage',
+ data=numpy.ones((2,2), dtype='uint8'))
+ at insertTest(helper_name= 'dec', cname='videoimage',
+ data = 'VDEO\x00\x01\x00\x07\x00\x00\x00\x00\x00\x00\x00' + \
+ '\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00 ' + \
+ '\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01' + \
+ '\x01\x01\x01\x01\x01\x01\x01\x01',
+ expected=numpy.ones((2,2,3),dtype='uint8'))
+
+class CodecTest(unittest.TestCase):
+ '''TestCase for checking codecs'''
+ def encDec(self, cname=None, data=None, expected=None):
+ '''Check that data can be encoded-decoded properly'''
+ if expected is None:
+ expected = copy.deepcopy(data)
+ _, enc = self.enc(cname=cname, data=data)
+ self.dec(cname=cname, data=enc, expected=expected)
+
+
+ def enc(self, cname=None, data=None, expected=None):
+ '''Check that data can be encoded-decoded properly'''
+ cf = CodecFactory()
+ codec = cf.getCodec(cname)
+ fmt, enc = codec.encode(('', data))
+ if expected is not None:
+ msg = ('Wrong data after encoding with %s:\n' +
+ ' -expected:%s\n -obtained:%s') % (cname, expected, enc)
+ if numpy.isscalar(expected):
+ equal = enc==expected
+ else:
+ equal = numpy.all(enc==expected)
+ self.assertTrue(equal, msg)
+ return fmt, enc
+
+ def dec(self, cname=None, data=None, expected=None):
+ '''Check that data can be encoded-decoded properly'''
+ cf = CodecFactory()
+ codec = cf.getCodec(cname)
+ fmt, dec =codec.decode((cname, data))
+ if expected is not None:
+ msg = ('Wrong data after decoding with %s:\n' +
+ ' -expected:%s\n -obtained:%s') % (cname, expected, dec)
+ if numpy.isscalar(expected):
+ equal = dec==expected
+ else:
+ equal = numpy.all(dec==expected)
+ self.assertTrue(equal, msg)
+ return fmt, dec
+
+if __name__ == '__main__':
+ pass
diff --git a/lib/taurus/external/qt/__init__.py b/lib/taurus/external/qt/__init__.py
index 721641b..4c8a229 100644
--- a/lib/taurus/external/qt/__init__.py
+++ b/lib/taurus/external/qt/__init__.py
@@ -31,6 +31,7 @@ __all__ = ["initialize", "getQtName", "getQt", "_updateQtSubModule", "requires"]
from taurus import tauruscustomsettings as __config
from taurus.core.util import log as __log
+import os
__QT = None
__QT_NAME = None
@@ -343,6 +344,17 @@ def initialize(name=None, strict=True, logging=True,
__removePyQtInputHook()
__QT_INIT = True
+
+ QT_API = os.environ.get('QT_API')
+ if QT_API is None:
+ global __QT_NAME
+ if __QT_NAME == 'PySide':
+ QT_API = 'pyside'
+ else:
+ QT_API = 'pyqt'
+
+ os.environ['QT_API'] = QT_API
+
return qt
diff --git a/lib/taurus/qt/qtdesigner/taurusplugin/taurusplugin.py b/lib/taurus/qt/qtdesigner/taurusplugin/taurusplugin.py
index e550e4c..c0402df 100644
--- a/lib/taurus/qt/qtdesigner/taurusplugin/taurusplugin.py
+++ b/lib/taurus/qt/qtdesigner/taurusplugin/taurusplugin.py
@@ -37,6 +37,8 @@
editing the widget model (same has 'Edit model...' task menu item
"""
+import inspect
+
from taurus.external.qt import Qt
from taurus.external.qt import QtDesigner
@@ -73,10 +75,32 @@ class TaurusWidgetPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin):
def _getWidgetClassName(self):
return self.getWidgetClass().__name__
+ def __getWidgetArgs(self, klass=None, designMode=True, parent=None):
+ if klass is None:
+ klass = self.getWidgetClass()
+ ctor = klass.__init__
+ aspec = inspect.getargspec(ctor)
+ if aspec.defaults is None:
+ kwspec = {}
+ else:
+ kwspec = dict(zip(aspec.args[-len(aspec.defaults):],
+ aspec.defaults))
+ args, kwargs = [], {}
+ if 'designMode' in kwspec:
+ kwargs['designMode'] = designMode
+ if 'parent' in kwspec:
+ kwargs['parent'] = parent
+ else:
+ args.append(parent)
+ return args, kwargs
+
def createWidget(self, parent):
try:
klass = self.getWidgetClass()
- w = klass(parent, designMode = True)
+ args, kwargs = self.__getWidgetArgs(klass=klass,
+ designMode=True,
+ parent=parent)
+ w = klass(*args, **kwargs)
except Exception, e:
name = self._getWidgetClassName()
print 100*"="
@@ -107,13 +131,16 @@ class TaurusWidgetPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin):
return self.getWidgetInfo('icon')
def icon(self):
- icon_name = self.getIconName()
- if icon_name is None:
+ icon = self.getWidgetInfo('icon')
+ if icon is None:
return Qt.QIcon()
- if not icon_name.startswith(":"):
- icon_name = ':/designer/%s' % icon_name
- import taurus.qt.qtgui.resource
- return taurus.qt.qtgui.resource.getIcon(icon_name)
+ elif isinstance(icon, Qt.QIcon):
+ return icon
+ else:
+ if not icon.startswith(":"):
+ icon = ':/designer/%s' % icon
+ import taurus.qt.qtgui.resource
+ return taurus.qt.qtgui.resource.getIcon(icon)
def domXml(self):
name = str(self.name())
diff --git a/lib/taurus/qt/qtgui/button/taurusbutton.py b/lib/taurus/qt/qtgui/button/taurusbutton.py
index 6f94986..b6f47fb 100644
--- a/lib/taurus/qt/qtgui/button/taurusbutton.py
+++ b/lib/taurus/qt/qtgui/button/taurusbutton.py
@@ -667,6 +667,7 @@ def main():
def demo():
+ '''Lock button'''
lock_button = TaurusLockButton()
lock_button.model = "sys/tg_test/1"
return lock_button
diff --git a/lib/taurus/qt/qtgui/button/test/res/Timeout b/lib/taurus/qt/qtgui/button/test/res/Timeout
old mode 100644
new mode 100755
index 1b81906..ac71f62
--- a/lib/taurus/qt/qtgui/button/test/res/Timeout
+++ b/lib/taurus/qt/qtgui/button/test/res/Timeout
@@ -90,7 +90,7 @@ class Timeout(PyTango.Device_4Impl):
@PyTango.DebugIt()
def TimeoutCmd(self, in_data):
- self.info_stream('TimeoutCmd', in_data)
+ self.info_stream('TimeoutCmd' + str(in_data))
self.cmd_duration = in_data
time.sleep(self.cmd_duration)
diff --git a/lib/taurus/qt/qtgui/compact/abstractswitcher.py b/lib/taurus/qt/qtgui/compact/abstractswitcher.py
index 8e49e18..8334dd6 100644
--- a/lib/taurus/qt/qtgui/compact/abstractswitcher.py
+++ b/lib/taurus/qt/qtgui/compact/abstractswitcher.py
@@ -246,7 +246,8 @@ class TaurusReadWriteSwitcher(TaurusWidget):
else:
h = policy.horizontalPolicy() & p.horizontalPolicy()
v = policy.verticalPolicy() & p.verticalPolicy()
- policy = Qt.QSizePolicy(h, v)
+ policy = Qt.QSizePolicy(Qt.QSizePolicy.Policy(h),
+ Qt.QSizePolicy.Policy(v))
if policy is not None:
self.setSizePolicy(policy)
@@ -262,7 +263,6 @@ class TaurusReadWriteSwitcher(TaurusWidget):
@classmethod
def getQtDesignerPluginInfo(cls):
- print cls
ret = TaurusWidget.getQtDesignerPluginInfo()
ret['module'] = 'taurus.qt.qtgui.compact'
ret['group'] = 'Taurus R+W'
@@ -377,4 +377,4 @@ if __name__ == "__main__":
#demo1()
#demo2()
demo3()
-
\ No newline at end of file
+
diff --git a/lib/taurus/qt/qtgui/compact/basicswitcher.py b/lib/taurus/qt/qtgui/compact/basicswitcher.py
index 567a153..a355b4d 100644
--- a/lib/taurus/qt/qtgui/compact/basicswitcher.py
+++ b/lib/taurus/qt/qtgui/compact/basicswitcher.py
@@ -49,7 +49,7 @@ class TaurusBoolRW(TaurusReadWriteSwitcher):
widget.setShowText(False)
TaurusReadWriteSwitcher.setWriteWidget(self, widget)
-def demo():
+def _demo():
'''demo of integrability in a form'''
import sys
from taurus.qt.qtgui.panel import TaurusForm
@@ -72,5 +72,5 @@ def demo():
if __name__ == "__main__":
- demo()
+ _demo()
\ No newline at end of file
diff --git a/lib/taurus/qt/qtgui/extra_guiqwt/image.py b/lib/taurus/qt/qtgui/extra_guiqwt/image.py
index 0b31263..ebffb74 100644
--- a/lib/taurus/qt/qtgui/extra_guiqwt/image.py
+++ b/lib/taurus/qt/qtgui/extra_guiqwt/image.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+ #!/usr/bin/env python
#############################################################################
##
@@ -27,14 +27,16 @@
Extension of :mod:`guiqwt.image`
"""
__all__=["TaurusImageItem","TaurusRGBImageItem","TaurusTrend2DItem",
- "TaurusTrend2DScanItem","TaurusEncodedImageItem"]
+ "TaurusTrend2DScanItem","TaurusEncodedImageItem",
+ "TaurusEncodedRGBImageItem"]
from taurus.external.qt import Qt
from taurus.qt.qtgui.base import TaurusBaseComponent
import taurus.core
from taurus.core.util.containers import ArrayBuffer
-from guiqwt.image import ImageItem, RGBImageItem, XYImageItem, INTERP_NEAREST, INTERP_LINEAR
+from guiqwt.image import ImageItem, RGBImageItem, XYImageItem
+from guiqwt.image import INTERP_NEAREST, INTERP_LINEAR
import numpy
@@ -48,8 +50,8 @@ class TaurusBaseImageItem(TaurusBaseComponent):
def getSignaller(self):
'''reimplemented from TaurusBaseComponent because TaurusImageItem is
not (and cannot be) a QObject'''
- return self._signalGen
-
+ return self._signalGen
+
def setModel(self, model):
#do the standard stuff
TaurusBaseComponent.setModel(self, model)
@@ -70,8 +72,11 @@ class TaurusBaseImageItem(TaurusBaseComponent):
except Exception, e:
self.info('Ignoring event. Reason: %s', e.message)
return
- lut_range = self.get_lut_range() #this is the range of the z axis (color scale)
- if lut_range[0] == lut_range[1]: lut_range = None #if the range was not set, make it None (autoscale z axis)
+ #this is the range of the z axis (color scale)
+ lut_range = self.get_lut_range()
+ #if the range was not set, make it None (autoscale z axis)
+ if lut_range[0] == lut_range[1]:
+ lut_range = None
self.set_data(v, lut_range=lut_range)
self.getSignaller().emit(Qt.SIGNAL('dataChanged'))
p = self.plot()
@@ -79,7 +84,7 @@ class TaurusBaseImageItem(TaurusBaseComponent):
if p is not None:
p.update_colormap_axis(self)
p.replot()
-
+
def filterData(self, data):
'''Reimplement this method if you want to pre-process
the data that will be passed to set_data.
@@ -110,21 +115,12 @@ class TaurusBaseImageItem(TaurusBaseComponent):
v = numpy.int32(v)
except OverflowError:
raise OverflowError("type %s not supported by guiqwt and cannot be casted to int32"%repr(v.dtype))
-
+
return v
-
-class TaurusImageItem(ImageItem, TaurusBaseImageItem):
- '''A ImageItem that gets its data from a taurus attribute'''
- def __init__(self, param=None):
- ImageItem.__init__(self, numpy.zeros((1,1)), param=param)
- TaurusBaseImageItem.__init__(self, self.__class__.__name__)
-class TaurusEncodedImageItem(TaurusImageItem):
- '''A ImageItem that gets its data from a DevEncoded attribute'''
- def __init__(self, param=None):
- TaurusImageItem.__init__(self,param=param)
-
+class TaurusEncodedBaseImageItem(TaurusBaseImageItem):
+ '''A ImageItem that gets its data from a taurus DevEncoded attribute'''
def setModel(self, model):
#do the standard stuff
TaurusBaseComponent.setModel(self, model)
@@ -142,9 +138,10 @@ class TaurusEncodedImageItem(TaurusImageItem):
codec = CodecFactory().getCodec(data[0])
try:
- fmt,decoded_data = codec.decode(data)[1]
- except:
- decoded_data = codec.decode(data)[1]
+ fmt, decoded_data = codec.decode(data)
+ except Exception, e:
+ self.info('Decoder error: %s', e.message)
+ raise e
try:
dtype = decoded_data.dtype
@@ -167,6 +164,20 @@ class TaurusEncodedImageItem(TaurusImageItem):
raise ValueError('Unexpected data type (%s) for DevEncoded attribute (tuple expected)'%type(data))
+class TaurusImageItem(ImageItem, TaurusBaseImageItem):
+ '''A ImageItem that gets its data from a taurus attribute'''
+ def __init__(self, param=None):
+ ImageItem.__init__(self, numpy.zeros((1,1)), param=param)
+ TaurusBaseImageItem.__init__(self, self.__class__.__name__)
+
+
+class TaurusEncodedImageItem(ImageItem, TaurusEncodedBaseImageItem):
+ '''A ImageItem that gets its data from a DevEncoded attribute'''
+ def __init__(self, param=None):
+ ImageItem.__init__(self, numpy.zeros((1,1)), param=param)
+ TaurusEncodedBaseImageItem.__init__(self, self.__class__.__name__)
+
+
class TaurusXYImageItem(XYImageItem, TaurusBaseImageItem):
'''A XYImageItem that gets its data from a taurus attribute'''
def __init__(self, param=None):
@@ -185,6 +196,17 @@ class TaurusRGBImageItem(RGBImageItem, TaurusBaseImageItem):
return RGBImageItem.set_data(self, data, **kwargs)
+class TaurusEncodedRGBImageItem(RGBImageItem, TaurusEncodedBaseImageItem):
+ '''A RGBImageItem that gets its data from a DevEncoded attribute'''
+ def __init__(self, param=None):
+ RGBImageItem.__init__(self, numpy.zeros((1,1,3)), param=param)
+ TaurusEncodedBaseImageItem.__init__(self, self.__class__.__name__)
+
+ def set_data(self, data, lut_range=None, **kwargs):
+ '''dummy reimplementation to accept the lut_range kwarg (just ignoring it)'''
+ return RGBImageItem.set_data(self, data, **kwargs)
+
+
class TaurusTrend2DItem(XYImageItem, TaurusBaseComponent):
'''A XYImageItem that is constructed by stacking 1D arrays from events from a Taurus 1D attribute'''
def __init__(self, param=None, buffersize=512, stackMode='datetime'):
diff --git a/lib/taurus/qt/qtgui/graphic/jdraw/jdraw.py b/lib/taurus/qt/qtgui/graphic/jdraw/jdraw.py
index a5e01a0..7157411 100644
--- a/lib/taurus/qt/qtgui/graphic/jdraw/jdraw.py
+++ b/lib/taurus/qt/qtgui/graphic/jdraw/jdraw.py
@@ -150,9 +150,12 @@ class TaurusJDrawGraphicsFactory(Singleton, TaurusBaseGraphicsFactory, Logger):
x1, y1, x2, y2 = params.get('summit')
width = x2 - x1
height = y2 - y1
+ cornerWidth = params.get('cornerWidth', 24)
+ nbPoints = params.get('step', 6)
#item.setPos(x1,y1)
- item.setRect(x1,y1,width,height)
-
+ item.setRect(x1, y1, width, height)
+ item.setCornerWidth(cornerWidth, nbPoints)
+
return item
def getLineObj(self,params):
diff --git a/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py b/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py
index 4972077..6f6c9d4 100644
--- a/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py
+++ b/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py
@@ -1,5 +1,5 @@
-# /nfs/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py
+# /home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_yacctab.py
# This file is automatically generated. Do not edit.
_tabversion = '3.2'
@@ -26,38 +26,38 @@ for _k, _v in _lr_goto_items.items():
del _lr_goto_items
_lr_productions = [
("S' -> jdfile","S'",1,None,None,None),
- ('jdfile -> JDFILE SYMBOL LBRACKET global element_list RBRACKET','jdfile',6,'p_jdfile','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',107),
- ('jdfile -> JDFILE LBRACKET global RBRACKET','jdfile',4,'p_jdfile_empty','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',115),
- ('global -> GLOBAL LBRACKET RBRACKET','global',3,'p_global','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',123),
- ('global -> GLOBAL LBRACKET parameter_list RBRACKET','global',4,'p_global','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',124),
- ('element_list -> element_list element','element_list',2,'p_element_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',131),
- ('element_list -> element','element_list',1,'p_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',138),
- ('element -> obj LBRACKET RBRACKET','element',3,'p_single_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',142),
- ('element -> obj LBRACKET parameter_list RBRACKET','element',4,'p_single_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',143),
- ('obj -> JDLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',191),
- ('obj -> JDRECTANGLE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',192),
- ('obj -> JDROUNDRECTANGLE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',193),
- ('obj -> JDGROUP','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',194),
- ('obj -> JDELLIPSE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',195),
- ('obj -> JDBAR','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',196),
- ('obj -> JDSWINGOBJECT','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',197),
- ('obj -> JDLABEL','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',198),
- ('obj -> JDPOLYLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',199),
- ('obj -> JDIMAGE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',200),
- ('obj -> JDAXIS','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',201),
- ('obj -> JDSLIDER','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',202),
- ('obj -> JDSPLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',203),
- ('parameter_list -> parameter_list parameter','parameter_list',2,'p_parameter_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',207),
- ('parameter_list -> parameter','parameter_list',1,'p_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',212),
- ('parameter -> SYMBOL TWOP param_value','parameter',3,'p_single_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',216),
- ('parameter -> SYMBOL TWOP LBRACKET RBRACKET','parameter',4,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',225),
- ('parameter -> SYMBOL TWOP LBRACKET parameter_list RBRACKET','parameter',5,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',226),
- ('parameter -> SYMBOL TWOP LBRACKET element_list RBRACKET','parameter',5,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',227),
- ('param_value -> value_list','param_value',1,'p_param_value_number_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',235),
- ('value_list -> value_list COMMA value','value_list',3,'p_value_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',242),
- ('value_list -> value','value_list',1,'p_value_list_value','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',246),
- ('value -> NUMBER','value',1,'p_value_number','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',250),
- ('value -> TEXT','value',1,'p_value_text','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',254),
- ('value -> true','value',1,'p_value_bool','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',258),
- ('value -> false','value',1,'p_value_bool','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',259),
+ ('jdfile -> JDFILE SYMBOL LBRACKET global element_list RBRACKET','jdfile',6,'p_jdfile','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',105),
+ ('jdfile -> JDFILE LBRACKET global RBRACKET','jdfile',4,'p_jdfile_empty','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',113),
+ ('global -> GLOBAL LBRACKET RBRACKET','global',3,'p_global','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',121),
+ ('global -> GLOBAL LBRACKET parameter_list RBRACKET','global',4,'p_global','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',122),
+ ('element_list -> element_list element','element_list',2,'p_element_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',129),
+ ('element_list -> element','element_list',1,'p_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',136),
+ ('element -> obj LBRACKET RBRACKET','element',3,'p_single_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',140),
+ ('element -> obj LBRACKET parameter_list RBRACKET','element',4,'p_single_element','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',141),
+ ('obj -> JDLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',189),
+ ('obj -> JDRECTANGLE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',190),
+ ('obj -> JDROUNDRECTANGLE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',191),
+ ('obj -> JDGROUP','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',192),
+ ('obj -> JDELLIPSE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',193),
+ ('obj -> JDBAR','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',194),
+ ('obj -> JDSWINGOBJECT','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',195),
+ ('obj -> JDLABEL','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',196),
+ ('obj -> JDPOLYLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',197),
+ ('obj -> JDIMAGE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',198),
+ ('obj -> JDAXIS','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',199),
+ ('obj -> JDSLIDER','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',200),
+ ('obj -> JDSPLINE','obj',1,'p_obj','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',201),
+ ('parameter_list -> parameter_list parameter','parameter_list',2,'p_parameter_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',205),
+ ('parameter_list -> parameter','parameter_list',1,'p_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',210),
+ ('parameter -> SYMBOL TWOP param_value','parameter',3,'p_single_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',214),
+ ('parameter -> SYMBOL TWOP LBRACKET RBRACKET','parameter',4,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',223),
+ ('parameter -> SYMBOL TWOP LBRACKET parameter_list RBRACKET','parameter',5,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',224),
+ ('parameter -> SYMBOL TWOP LBRACKET element_list RBRACKET','parameter',5,'p_complex_parameter','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',225),
+ ('param_value -> value_list','param_value',1,'p_param_value_number_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',233),
+ ('value_list -> value_list COMMA value','value_list',3,'p_value_list','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',240),
+ ('value_list -> value','value_list',1,'p_value_list_value','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',244),
+ ('value -> NUMBER','value',1,'p_value_number','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',248),
+ ('value -> TEXT','value',1,'p_value_text','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',252),
+ ('value -> true','value',1,'p_value_bool','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',256),
+ ('value -> false','value',1,'p_value_bool','/home/cpascual/src/sardana/taurus/lib/taurus/qt/qtgui/graphic/jdraw/jdraw_parser.py',257),
]
diff --git a/lib/taurus/qt/qtgui/graphic/taurusgraphic.py b/lib/taurus/qt/qtgui/graphic/taurusgraphic.py
index 203c28e..f93e07c 100644
--- a/lib/taurus/qt/qtgui/graphic/taurusgraphic.py
+++ b/lib/taurus/qt/qtgui/graphic/taurusgraphic.py
@@ -1104,7 +1104,6 @@ class TaurusRectStateItem(Qt.QGraphicsRectItem, TaurusGraphicsStateItem):
self.setBrush(self._currBgBrush)
Qt.QGraphicsRectItem.paint(self,painter,option,widget)
-
class TaurusSplineStateItem(QSpline, TaurusGraphicsStateItem):
def __init__(self, name=None, parent=None, scene=None):
@@ -1118,6 +1117,52 @@ class TaurusSplineStateItem(QSpline, TaurusGraphicsStateItem):
self.setBrush(self._currBgBrush)
QSpline.paint(self, painter, option, widget)
+class TaurusRoundRectItem(Qt.QGraphicsPathItem):
+
+ def __init__(self, name=None, parent=None, scene=None):
+ Qt.QGraphicsPathItem.__init__(self, parent, scene)
+ self.__rect = None
+ self.setCornerWidth(0, 0)
+
+ def __updatePath(self):
+ if self.__rect == None:
+ return
+ if self.__corner == None:
+ return
+
+ path = Qt.QPainterPath()
+ cornerWidth, nbPoints = self.__corner
+ if cornerWidth == 0 or nbPoints == 0:
+ path.addRect(self.__rect)
+ elif cornerWidth * 2 > self.__rect.width():
+ path.addRect(self.__rect)
+ elif cornerWidth * 2 > self.__rect.height():
+ path.addRect(self.__rect)
+ else:
+ path.addRoundedRect(self.__rect, cornerWidth, cornerWidth)
+ self.setPath(path)
+
+ def setRect(self, x, y, width, height):
+ self.__rect = Qt.QRectF(x, y, width, height)
+ self.__updatePath()
+
+ def setCornerWidth(self, width, nbPoints):
+ self.__corner = width, nbPoints
+ self.__updatePath()
+
+class TaurusRoundRectStateItem(TaurusRoundRectItem, TaurusGraphicsStateItem):
+
+ def __init__(self, name=None, parent=None, scene=None):
+ name = name or self.__class__.__name__
+ TaurusRoundRectItem.__init__(self, parent, scene)
+ self.call__init__(TaurusGraphicsStateItem, name, parent)
+
+ def paint(self, painter, option, widget):
+ if self._currBgBrush:
+ self._currBgBrush.setStyle(self.brush().style())
+ self.setBrush(self._currBgBrush)
+ TaurusRoundRectItem.paint(self, painter, option, widget)
+
class TaurusGroupItem(Qt.QGraphicsItemGroup):
def __init__(self, name = None, parent = None, scene = None):
@@ -1197,7 +1242,7 @@ class TaurusTextAttributeItem(QGraphicsTextBoxing, TaurusGraphicsAttributeItem):
TYPE_TO_GRAPHICS = {
None : { "Rectangle" : Qt.QGraphicsRectItem,
- "RoundRectangle" : Qt.QGraphicsRectItem,
+ "RoundRectangle" : TaurusRoundRectItem,
"Ellipse" : Qt.QGraphicsEllipseItem,
"Polyline" : Qt.QGraphicsPolygonItem,
"Label" : QGraphicsTextBoxing,
@@ -1208,7 +1253,7 @@ TYPE_TO_GRAPHICS = {
"Spline" : QSpline, },
TaurusDevice : { "Rectangle" : TaurusRectStateItem,
- "RoundRectangle" : TaurusRectStateItem,
+ "RoundRectangle" : TaurusRoundRectStateItem,
"Ellipse" : TaurusEllipseStateItem,
"Polyline" : TaurusPolygonStateItem,
"Label" : TaurusTextStateItem,
@@ -1219,7 +1264,7 @@ TYPE_TO_GRAPHICS = {
"Spline" : TaurusSplineStateItem, },
TaurusAttribute : { "Rectangle" : TaurusRectStateItem,
- "RoundRectangle" : TaurusRectStateItem,
+ "RoundRectangle" : TaurusRoundRectStateItem,
"Ellipse" : TaurusEllipseStateItem,
"Polyline" : TaurusPolygonStateItem,
"Label" : TaurusTextAttributeItem,
diff --git a/lib/taurus/qt/qtgui/input/taurusspinbox.py b/lib/taurus/qt/qtgui/input/taurusspinbox.py
index 54cbbd1..e7b8533 100644
--- a/lib/taurus/qt/qtgui/input/taurusspinbox.py
+++ b/lib/taurus/qt/qtgui/input/taurusspinbox.py
@@ -139,6 +139,7 @@ class TaurusValueSpinBox(Qt.QAbstractSpinBox):
def getSingleStep(self):
return self._singleStep
+ @Qt.pyqtSignature("setSingleStep(double)")
def setSingleStep(self, step):
self._singleStep = step
diff --git a/lib/taurus/qt/qtgui/panel/taurusconfigurationpanel.py b/lib/taurus/qt/qtgui/panel/taurusconfigurationpanel.py
index 5610e02..1b64e2d 100644
--- a/lib/taurus/qt/qtgui/panel/taurusconfigurationpanel.py
+++ b/lib/taurus/qt/qtgui/panel/taurusconfigurationpanel.py
@@ -60,7 +60,7 @@ class TaurusConfigurationPanel(Qt.QWidget):
w.writeValue()
def _onCancel(self):
- self._ui.close()
+ self.close()
def _onRestore(self):
widgets=getWidgetsOfType(self, TaurusConfigLineEdit)
diff --git a/lib/taurus/qt/qtgui/panel/taurusform.py b/lib/taurus/qt/qtgui/panel/taurusform.py
index 1b4379d..83ba242 100644
--- a/lib/taurus/qt/qtgui/panel/taurusform.py
+++ b/lib/taurus/qt/qtgui/panel/taurusform.py
@@ -381,6 +381,7 @@ class TaurusForm(TaurusWidget):
self.chooseModelsAction.setEnabled(modifiable)
self.showButtonsAction.setEnabled(modifiable)
self.changeLabelsAction.setEnabled(modifiable)
+ self.compactModeAction.setEnabled(modifiable)
for item in self.getItems():
try:
item.setModifiableByUser(modifiable)
diff --git a/lib/taurus/qt/qtgui/panel/taurusvalue.py b/lib/taurus/qt/qtgui/panel/taurusvalue.py
index 09510d0..84c0607 100644
--- a/lib/taurus/qt/qtgui/panel/taurusvalue.py
+++ b/lib/taurus/qt/qtgui/panel/taurusvalue.py
@@ -101,8 +101,8 @@ class DefaultLabelWidget(TaurusLabel):
see :meth:`QWidget.contextMenuEvent`"""
menu = Qt.QMenu(self)
menu.addMenu(ConfigurationMenu(self.taurusValueBuddy())) #@todo: This should be done more Taurus-ish
- if hasattr(self.taurusValueBuddy().writeWidget(), 'resetPendingOperations'):
- r_action = menu.addAction("reset write value",self.taurusValueBuddy().writeWidget().resetPendingOperations)
+ if hasattr(self.taurusValueBuddy().writeWidget(followCompact=True), 'resetPendingOperations'):
+ r_action = menu.addAction("reset write value",self.taurusValueBuddy().writeWidget(followCompact=True).resetPendingOperations)
r_action.setEnabled(self.taurusValueBuddy().hasPendingOperations())
if self.taurusValueBuddy().isModifiableByUser():
menu.addAction("Change label",self.taurusValueBuddy().onChangeLabelConfig)
@@ -152,6 +152,8 @@ class DefaultUnitsWidget(TaurusLabel):
self.setSizePolicy(Qt.QSizePolicy.Preferred,Qt.QSizePolicy.Maximum)
self.autoTrim = False
self.setBgRole(None)
+ self.setAlignment(Qt.Qt.AlignLeft)
+
def setModel(self, model):
if model is None or model=='':
return TaurusLabel.setModel(self, None)
@@ -297,21 +299,38 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
Qt.QWidget.setVisible(self, visible)
def labelWidget(self):
+ '''Returns the label widget'''
return self._labelWidget
- def readWidget(self):
+ def readWidget(self, followCompact=False):
+ '''
+ Returns the read widget. If followCompact=True, and compact mode is
+ used, it returns the switcher's readWidget instead of the switcher
+ itself.
+ '''
+ if followCompact and self.isCompact():
+ return self._readWidget.readWidget
return self._readWidget
- def writeWidget(self):
+ def writeWidget(self, followCompact=False):
+ '''
+ Returns the write widget. If followCompact=True, and compact mode is
+ used, it returns the switcher's writeWidget instead of None.
+ '''
+ if followCompact and self.isCompact():
+ return self._readWidget.writeWidget
return self._writeWidget
def unitsWidget(self):
+ '''Returns the units widget'''
return self._unitsWidget
def customWidget(self):
+ '''Returns the custom widget'''
return self._customWidget
def extraWidget(self):
+ '''Returns the extra widget'''
return self._extraWidget
def setParent(self, parent):
@@ -503,7 +522,7 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
def getDefaultCustomWidgetClass(self):
modelclass = self.getModelClass()
- if modelclass and modelclass.getTaurusElementType() != TaurusElementType.Attribute:
+ if modelclass and modelclass.getTaurusElementType() != TaurusElementType.Device:
return None
try:
key = self.getModelObj().getHWObj().info().dev_class
@@ -605,10 +624,10 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
W = self.writeWidgetClassFactory(self.writeWidgetClassID, ignoreCompact=True)
if W is None:
return R
- class Switcher(TaurusReadWriteSwitcher):
- readWClass = R
- writeWClass = W
- return Switcher
+ switcherClass = self.getSwitcherClass()
+ switcherClass.readWClass = R
+ switcherClass.writeWClass = W
+ return switcherClass
return ret
def writeWidgetClassFactory(self, classID, ignoreCompact=False):
@@ -678,6 +697,9 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
if self._readWidget is not None:
#give the new widget a reference to its buddy TaurusValue object
self._readWidget.taurusValueBuddy = weakref.ref(self)
+ if isinstance(self._readWidget, TaurusReadWriteSwitcher):
+ self._readWidget.readWidget.taurusValueBuddy = weakref.ref(self)
+ self._readWidget.writeWidget.taurusValueBuddy = weakref.ref(self)
#tweak the new widget
if self.minimumHeight() is not None:
@@ -766,30 +788,51 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
def addLabelWidgetToLayout(self):
if self._labelWidget is not None and self.parent() is not None:
- self.parent().layout().addWidget(self._labelWidget, self._row, 1)
+ alignment = getattr(self._labelWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
+ self.parent().layout().addWidget(self._labelWidget, self._row, 1, 1, 1,
+ alignment=alignment)
+
def addReadWidgetToLayout(self):
- if self._readWidget is not None and self.parent() is not None:
+ if self._readWidget is not None and self.parent() is not None:
+ alignment = getattr(self._readWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
if self._writeWidget is None:
- self.parent().layout().addWidget(self._readWidget, self._row, 2,1,2)
+ self.parent().layout().addWidget(self._readWidget, self._row,
+ 2, 1, 2, alignment=alignment)
else:
- self.parent().layout().addWidget(self._readWidget, self._row, 2)
-
+ self.parent().layout().addWidget(self._readWidget, self._row,
+ 2, 1, 1, alignment=alignment)
+
def addWriteWidgetToLayout(self):
if self._writeWidget is not None and self.parent() is not None:
- self.parent().layout().addWidget(self._writeWidget, self._row, 3)
+ alignment = getattr(self._writeWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
+ self.parent().layout().addWidget(self._writeWidget, self._row,
+ 3, 1, 1, alignment=alignment)
+
def addUnitsWidgetToLayout(self):
if self._unitsWidget is not None and self.parent() is not None:
- self.parent().layout().addWidget(self._unitsWidget, self._row, 4)
-
+ alignment = getattr(self._unitsWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
+ self.parent().layout().addWidget(self._unitsWidget, self._row,
+ 4, 1, 1, alignment=alignment)
+
def addCustomWidgetToLayout(self):
if self._customWidget is not None and self.parent() is not None:
- self.parent().layout().addWidget(self._customWidget, self._row, 1,1,-1)
+ alignment = getattr(self._customWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
+ self.parent().layout().addWidget(self._customWidget, self._row,
+ 1, 1, -1, alignment=alignment)
def addExtraWidgetToLayout(self):
if self._extraWidget is not None and self.parent() is not None:
- self.parent().layout().addWidget(self._extraWidget, self._row, 5)
+ alignment = getattr(self._extraWidget, 'layoutAlignment',
+ Qt.Qt.Alignment(0))
+ self.parent().layout().addWidget(self._extraWidget, self._row,
+ 5, 1, 1, alignment=alignment)
@Qt.pyqtSignature("parentModelChanged(const QString &)")
def parentModelChanged(self, parentmodel_name):
@@ -1007,7 +1050,7 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
self.hasPendingOperations will look at the writeWidget's operations.
If you want to ask the TaurusValue for its pending operations, call
self.writeWidget().getPendingOperations()'''
- w = self.writeWidget()
+ w = self.writeWidget(followCompact=True)
if w is None: return False
return w.hasPendingOperations()
@@ -1031,6 +1074,15 @@ class TaurusValue(Qt.QWidget, TaurusBaseWidget):
def resetLabelConfig(self):
self._labelConfig = 'label'
self.updateLabelWidget()
+
+ def getSwitcherClass(self):
+ '''Returns the TaurusValue switcher class (used in compact mode).
+ Override this method if you want to use a custom switcher in
+ TaurusValue subclasses.
+ '''
+ class TVSwitcher(TaurusReadWriteSwitcher):
+ pass
+ return TVSwitcher
@classmethod
def getQtDesignerPluginInfo(cls):
diff --git a/lib/taurus/qt/qtgui/table/taurusvaluestable.py b/lib/taurus/qt/qtgui/table/taurusvaluestable.py
index 0af423a..e3950c0 100644
--- a/lib/taurus/qt/qtgui/table/taurusvaluestable.py
+++ b/lib/taurus/qt/qtgui/table/taurusvaluestable.py
@@ -420,7 +420,7 @@ class TaurusValuesIOTableDelegate(Qt.QStyledItemDelegate):
else:
data = index.model().data(index, Qt.Qt.EditRole)
self._initialText = Qt.from_qvariant(data, str)
- editor.setText(self._initialText)
+ editor.setText(str(self._initialText))
def setModelData(self, editor, model,index):
'''
diff --git a/lib/taurus/qt/qtgui/taurusgui/conf/tgconf_example01/config.py b/lib/taurus/qt/qtgui/taurusgui/conf/tgconf_example01/config.py
index 9d58953..99ab32e 100644
--- a/lib/taurus/qt/qtgui/taurusgui/conf/tgconf_example01/config.py
+++ b/lib/taurus/qt/qtgui/taurusgui/conf/tgconf_example01/config.py
@@ -160,13 +160,13 @@ pymca = ExternalApp(['pymca'])
# Adding other widgets to the catalog of the "new panel" dialog.
# pass a tuple of (classname,screenshot)
# -classname may contain the module name.
-# -screenshot can either be a file name relative to the application dir or
-# a resource URL or None
+# -screenshot can either be a resource URL, a file name (either relative to
+# the application dir or with an absolute path) or None
#===============================================================================
-EXTRA_CATALOG_WIDGETS = [('PyQt4.Qt.QLineEdit',':/taurus.png'),
- ('PyQt4.Qt.QSpinBox','images/syn2.jpg'),
- ('PyQt4.Qt.QTextEdit','/tmp/kk.png'),
- ('PyQt4.Qt.QLabel',None)]
+EXTRA_CATALOG_WIDGETS = [('PyQt4.Qt.QLineEdit',':/taurus.png'), # a resource
+ ('PyQt4.Qt.QSpinBox','images/syn2.jpg'), # relative
+ #('PyQt4.Qt.QTextEdit','/tmp/foo.png'), # absolute
+ ('PyQt4.Qt.QLabel',None)] # none
#===============================================================================
# Define one or more embedded consoles in the GUI.
diff --git a/lib/taurus/qt/qtgui/taurusgui/paneldescriptionwizard.py b/lib/taurus/qt/qtgui/taurusgui/paneldescriptionwizard.py
index 3e09576..3129504 100644
--- a/lib/taurus/qt/qtgui/taurusgui/paneldescriptionwizard.py
+++ b/lib/taurus/qt/qtgui/taurusgui/paneldescriptionwizard.py
@@ -632,7 +632,6 @@ def main():
form.show()
paneldesc,ok = PanelDescriptionWizard.getDialog(form, extraWidgets=[('PyQt4.Qt.QLineEdit',':/taurus.png'),
- ('PyQt4.Qt.QSpinBox','/tmp/kk.png'),
('PyQt4.Qt.QTextEdit',None)])
if ok:
w = paneldesc.getWidget(sdm=Qt.qApp.SDM)
diff --git a/lib/taurus/qt/qtgui/taurusgui/taurusgui.py b/lib/taurus/qt/qtgui/taurusgui/taurusgui.py
index f1be49d..d3fefbd 100644
--- a/lib/taurus/qt/qtgui/taurusgui/taurusgui.py
+++ b/lib/taurus/qt/qtgui/taurusgui/taurusgui.py
@@ -1286,7 +1286,7 @@ class TaurusGui(TaurusMainWindow):
fname = None
- hint = "XML_CONFIG = %s" % os.path.relpath(fname, self._confDirectory)
+ hint = "XML_CONFIG = '%s'" % os.path.relpath(fname, self._confDirectory)
msg = 'Configuration written in %s' % fname
self.info(msg)
Qt.QMessageBox.information(self, "Configuration updated",
diff --git a/scripts/taurusui b/scripts/taurusui
new file mode 100755
index 0000000..8e9039a
--- /dev/null
+++ b/scripts/taurusui
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+#############################################################################
+##
+## This file is part of Taurus, a Tango User Interface Library
+##
+## http://www.tango-controls.org/static/taurus/latest/doc/html/index.html
+##
+## Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
+##
+## Taurus is free software: you can redistribute it and/or modify
+## it under the terms of the GNU Lesser General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## Taurus is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public License
+## along with Taurus. If not, see <http://www.gnu.org/licenses/>.
+##
+#############################################################################
+
+import sys
+import taurus
+
+def main():
+ taurus.setLogLevel(taurus.Warning)
+
+ from taurus.external.qt import Qt, uic
+ from taurus.core.util.argparse import get_taurus_parser
+ from taurus.qt.qtgui.application import TaurusApplication
+
+ parser = get_taurus_parser()
+ parser.set_usage("%prog [options] <ui_file1> [<ui_file2> ...]")
+ parser.set_description("a taurus application that launches GUI(s) for the "
+ "given .ui file(s)")
+ app = TaurusApplication(cmd_line_parser=parser,
+ app_name="taurusui", app_version="1.0",
+ org_domain="Taurus", org_name="Taurus community")
+
+ args = app.get_command_line_args()
+ if len(args) < 1:
+ print("Need to supply UI file name")
+ sys.exit(1)
+
+ for ui_file in args:
+ gui = uic.loadUi(ui_file)
+ gui.show()
+ sys.exit(app.exec_())
+
+
+if __name__ == "__main__":
+ main()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/taurus.git
More information about the debian-science-commits
mailing list