__main__.py 3.97 KB
Newer Older
1
2
3
4
5
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

6
7
8
9
10
11
12
from exampleLoaderTemplate import Ui_Form
import os, sys
from collections import OrderedDict

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

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
71
        self.resize(1000,500)
72
        self.show()
Luke Campagnola's avatar
Luke Campagnola committed
73
        self.ui.splitter.setSizes([250,750])
74
75
76
77
78
79
        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):
80
        for key, val in examples.items():
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
            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
100
101
102
103
        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)
104
105
106
107
108
109
110
        
            
    def showFile(self):
        fn = self.currentFile()
        if fn is None:
            self.ui.codeView.clear()
            return
Luke Campagnola's avatar
Luke Campagnola committed
111
112
        if os.path.isdir(fn):
            fn = os.path.join(fn, '__main__.py')
113
114
115
116
117
118
119
        text = open(fn).read()
        self.ui.codeView.setPlainText(text)

def run():
    app = QtGui.QApplication([])
    loader = ExampleLoader()
    
Luke Campagnola's avatar
Luke Campagnola committed
120
    app.exec_()
121
122

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