__main__.py 4.43 KB
Newer Older
1 2 3
import sys, os
## make sure this pyqtgraph is importable before any others
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
4
from pyqtgraph.Qt import QtCore, QtGui, USE_PYSIDE
5

6 7 8 9 10
if USE_PYSIDE:
    from exampleLoaderTemplate_pyside import Ui_Form
else:
    from exampleLoaderTemplate_pyqt import Ui_Form
    
11
import os, sys
12
from pyqtgraph.pgcollections import OrderedDict
13 14 15 16

examples = OrderedDict([
    ('Command-line usage', 'CLIexample.py'),
    ('Basic Plotting', 'Plotting.py'),
Luke Campagnola's avatar
Luke Campagnola committed
17
    ('ImageView', 'ImageView.py'),
18
    ('ParameterTree', 'parametertree.py'),
19
    ('Crosshair / Mouse interaction', 'crosshair.py'),
Luke Campagnola's avatar
Luke Campagnola committed
20
    ('Data Slicing', 'DataSlicing.py'),
21
    ('Plot Customization', 'customPlot.py'),
Luke Campagnola's avatar
Luke Campagnola committed
22
    ('Dock widgets', 'dockarea.py'),
23
    ('Console', 'ConsoleWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
24
    ('Histograms', 'histogram.py'),
25
    ('GraphicsItems', OrderedDict([
Luke Campagnola's avatar
Luke Campagnola committed
26
        ('Scatter Plot', 'ScatterPlot.py'),
Luke Campagnola's avatar
Luke Campagnola committed
27
        #('PlotItem', 'PlotItem.py'),
28
        ('IsocurveItem', 'isocurve.py'),
29 30
        ('ImageItem - video', 'ImageItem.py'),
        ('ImageItem - draw', 'Draw.py'),
Luke Campagnola's avatar
Luke Campagnola committed
31
        ('Region-of-Interest', 'ROIExamples.py'),
32
        ('GraphicsLayout', 'GraphicsLayout.py'),
33
        ('LegendItem', 'Legend.py'),
Luke Campagnola's avatar
Luke Campagnola committed
34
        ('Text Item', 'text.py'),
35
        ('Linked Views', 'linkedViews.py'),
36
        ('Arrow', 'Arrow.py'),
Luke Campagnola's avatar
Luke Campagnola committed
37 38
        ('ViewBox', 'ViewBox.py'),
    ])),
Luke Campagnola's avatar
Luke Campagnola committed
39 40 41 42 43
    ('Benchmarks', OrderedDict([
        ('Video speed test', 'VideoSpeedTest.py'),
        ('Line Plot update', 'PlotSpeedTest.py'),
        ('Scatter Plot update', 'ScatterPlotSpeedTest.py'),
    ])),
Luke Campagnola's avatar
Luke Campagnola committed
44 45 46
    ('3D Graphics', OrderedDict([
        ('Volumetric', 'GLVolumeItem.py'),
        ('Isosurface', 'GLMeshItem.py'),
47 48
        ('Image', 'GLImageItem.py'),
        ('Scatter Plot', 'GLScatterPlotItem.py'),
49 50 51
    ])),
    ('Widgets', OrderedDict([
        ('PlotWidget', 'PlotWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
52
        ('SpinBox', 'SpinBox.py'),
53
        ('ConsoleWidget', 'ConsoleWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
54 55
        ('TreeWidget', 'TreeWidget.py'),
        ('DataTreeWidget', 'DataTreeWidget.py'),
56
        ('GradientWidget', 'GradientWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
57
        #('TableWidget', '../widgets/TableWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
58
        ('ColorButton', 'ColorButton.py'),
Luke Campagnola's avatar
Luke Campagnola committed
59 60
        #('CheckTable', '../widgets/CheckTable.py'),
        #('VerticalLabel', '../widgets/VerticalLabel.py'),
61
        ('JoystickButton', 'JoystickButton.py'),
62
    ])),
63
    
64 65
    ('GraphicsScene', 'GraphicsScene.py'),
    ('Flowcharts', 'Flowchart.py'),
Luke Campagnola's avatar
Luke Campagnola committed
66 67
    #('Canvas', '../canvas'),
    #('MultiPlotWidget', 'MultiPlotWidget.py'),
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
])

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()
        
Luke Campagnola's avatar
Luke Campagnola committed
84
        self.resize(1000,500)
85
        self.show()
Luke Campagnola's avatar
Luke Campagnola committed
86
        self.ui.splitter.setSizes([250,750])
87 88 89 90 91 92
        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):
93
        for key, val in examples.items():
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
            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
113 114 115 116
        if sys.platform.startswith('win'):
            os.spawnl(os.P_NOWAIT, sys.executable, sys.executable, '"' + fn + '"')
        else:
            os.spawnl(os.P_NOWAIT, sys.executable, sys.executable, fn)
117 118 119 120 121 122 123
        
            
    def showFile(self):
        fn = self.currentFile()
        if fn is None:
            self.ui.codeView.clear()
            return
Luke Campagnola's avatar
Luke Campagnola committed
124 125
        if os.path.isdir(fn):
            fn = os.path.join(fn, '__main__.py')
126 127 128 129 130 131 132
        text = open(fn).read()
        self.ui.codeView.setPlainText(text)

def run():
    app = QtGui.QApplication([])
    loader = ExampleLoader()
    
Luke Campagnola's avatar
Luke Campagnola committed
133
    app.exec_()
134 135

if __name__ == '__main__':
136
    run()