pyqtgraph/examples/__main__.py
Luke Campagnola 2a2f19b2d5 bugfixes
2012-03-23 03:21:04 -04:00

108 lines
3.4 KiB
Python

import sys, os
## make sure this pyqtgraph is importable before any others
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
from pyqtgraph.Qt import QtCore, QtGui
from exampleLoaderTemplate import Ui_Form
import os, sys
from collections import OrderedDict
examples = OrderedDict([
('Command-line usage', 'CLIexample.py'),
('Basic Plotting', 'Plotting.py'),
('GraphicsItems', OrderedDict([
#('PlotItem', 'PlotItem.py'),
('ImageItem - video', 'ImageItem.py'),
('ImageItem - draw', 'Draw.py'),
('Region-of-Interest', 'ROItypes.py'),
('GraphicsLayout', 'GraphicsLayout.py'),
('Scatter Plot', 'ScatterPlot.py'),
('Text Item', 'text.py'),
('ViewBox', 'ViewBox.py'),
('Linked Views', 'linkedViews.py'),
('Arrow', 'Arrow.py'),
])),
('Widgets', OrderedDict([
('PlotWidget', 'PlotWidget.py'),
#('SpinBox', '../widgets/SpinBox.py'),
('TreeWidget', '../widgets/TreeWidget.py'),
('DataTreeWidget', '../widgets/DataTreeWidget.py'),
('GradientWidget', '../widgets/GradientWidget.py'),
#('TableWidget', '../widgets/TableWidget.py'),
('ColorButton', '../widgets/ColorButton.py'),
#('CheckTable', '../widgets/CheckTable.py'),
#('VerticalLabel', '../widgets/VerticalLabel.py'),
('JoystickButton', '../widgets/JoystickButton.py'),
])),
('ImageView', 'ImageView.py'),
('GraphicsScene', 'GraphicsScene.py'),
('Flowcharts', 'Flowchart.py'),
('ParameterTree', '../parametertree'),
#('Canvas', '../canvas'),
#('MultiPlotWidget', 'MultiPlotWidget.py'),
])
path = os.path.abspath(os.path.dirname(__file__))
class ExampleLoader(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_Form()
self.cw = QtGui.QWidget()
self.setCentralWidget(self.cw)
self.ui.setupUi(self.cw)
global examples
self.populateTree(self.ui.exampleTree.invisibleRootItem(), examples)
self.ui.exampleTree.expandAll()
self.resize(900,500)
self.show()
self.ui.splitter.setSizes([150,750])
self.ui.loadBtn.clicked.connect(self.loadFile)
self.ui.exampleTree.currentItemChanged.connect(self.showFile)
self.ui.exampleTree.itemDoubleClicked.connect(self.loadFile)
def populateTree(self, root, examples):
for key, val in examples.iteritems():
item = QtGui.QTreeWidgetItem([key])
if isinstance(val, basestring):
item.file = val
else:
self.populateTree(item, val)
root.addChild(item)
def currentFile(self):
item = self.ui.exampleTree.currentItem()
if hasattr(item, 'file'):
global path
return os.path.join(path, item.file)
return None
def loadFile(self):
fn = self.currentFile()
if fn is None:
return
os.spawnl(os.P_NOWAIT, sys.executable, sys.executable, fn)
def showFile(self):
fn = self.currentFile()
if fn is None:
self.ui.codeView.clear()
return
text = open(fn).read()
self.ui.codeView.setPlainText(text)
def run():
app = QtGui.QApplication([])
loader = ExampleLoader()
if sys.flags.interactive != 1:
app.exec_()
if __name__ == '__main__':
run()