__main__.py 4.94 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
        self.ui.loadBtn.clicked.connect(self.loadFile)
        self.ui.exampleTree.currentItemChanged.connect(self.showFile)
        self.ui.exampleTree.itemDoubleClicked.connect(self.loadFile)
90
91
        self.ui.pyqtCheck.toggled.connect(self.pyqtToggled)
        self.ui.pysideCheck.toggled.connect(self.pysideToggled)
92

93
94
95
96
97
98
99
100
    def pyqtToggled(self, b):
        if b:
            self.ui.pysideCheck.setChecked(False)
        
    def pysideToggled(self, b):
        if b:
            self.ui.pyqtCheck.setChecked(False)
        
101
102

    def populateTree(self, root, examples):
103
        for key, val in examples.items():
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
            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()
121
122
123
124
125
126
        extra = []
        if self.ui.pyqtCheck.isChecked():
            extra.append('pyqt')
        elif self.ui.pysideCheck.isChecked():
            extra.append('pyside')

127
128
        if fn is None:
            return
129
        if sys.platform.startswith('win'):
130
            os.spawnl(os.P_NOWAIT, sys.executable, sys.executable, '"' + fn + '"', *extra)
131
        else:
132
133

            os.spawnl(os.P_NOWAIT, sys.executable, sys.executable, fn, *extra)
134
135
136
137
138
139
140
        
            
    def showFile(self):
        fn = self.currentFile()
        if fn is None:
            self.ui.codeView.clear()
            return
Luke Campagnola's avatar
Luke Campagnola committed
141
142
        if os.path.isdir(fn):
            fn = os.path.join(fn, '__main__.py')
143
144
145
146
147
148
149
        text = open(fn).read()
        self.ui.codeView.setPlainText(text)

def run():
    app = QtGui.QApplication([])
    loader = ExampleLoader()
    
Luke Campagnola's avatar
Luke Campagnola committed
150
    app.exec_()
151
152

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