__main__.py 4.15 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 12 13 14 15 16
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
17
    ('ImageView', 'ImageView.py'),
18
    ('ParameterTree', 'parametertree.py'),
19 20 21
    ('Crosshair / Mouse interaction', 'crosshair.py'),
    ('Video speed test', 'VideoSpeedTest.py'),
    ('Plot speed test', 'PlotSpeedTest.py'),
Luke Campagnola's avatar
Luke Campagnola committed
22
    ('Data Slicing', 'DataSlicing.py'),
23
    ('Plot Customization', 'customPlot.py'),
Luke Campagnola's avatar
Luke Campagnola committed
24
    ('Dock widgets', 'dockarea.py'),
25
    ('Console', 'ConsoleWidget.py'),
26
    ('GraphicsItems', OrderedDict([
Luke Campagnola's avatar
Luke Campagnola committed
27
        ('Scatter Plot', 'ScatterPlot.py'),
Luke Campagnola's avatar
Luke Campagnola committed
28
        #('PlotItem', 'PlotItem.py'),
29
        ('IsocurveItem', 'isocurve.py'),
30 31
        ('ImageItem - video', 'ImageItem.py'),
        ('ImageItem - draw', 'Draw.py'),
Luke Campagnola's avatar
Luke Campagnola committed
32
        ('Region-of-Interest', 'ROIExamples.py'),
33
        ('GraphicsLayout', 'GraphicsLayout.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 39 40 41
        ('ViewBox', 'ViewBox.py'),
    ])),
    ('3D Graphics', OrderedDict([
        ('Volumetric', 'GLVolumeItem.py'),
        ('Isosurface', 'GLMeshItem.py'),
42 43 44
    ])),
    ('Widgets', OrderedDict([
        ('PlotWidget', 'PlotWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
45
        ('SpinBox', 'SpinBox.py'),
46
        ('ConsoleWidget', 'ConsoleWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
47 48
        ('TreeWidget', 'TreeWidget.py'),
        ('DataTreeWidget', 'DataTreeWidget.py'),
49
        ('GradientWidget', 'GradientWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
50
        #('TableWidget', '../widgets/TableWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
51
        ('ColorButton', 'ColorButton.py'),
Luke Campagnola's avatar
Luke Campagnola committed
52 53
        #('CheckTable', '../widgets/CheckTable.py'),
        #('VerticalLabel', '../widgets/VerticalLabel.py'),
54
        ('JoystickButton', 'JoystickButton.py'),
55
    ])),
56
    
57 58
    ('GraphicsScene', 'GraphicsScene.py'),
    ('Flowcharts', 'Flowchart.py'),
Luke Campagnola's avatar
Luke Campagnola committed
59 60
    #('Canvas', '../canvas'),
    #('MultiPlotWidget', 'MultiPlotWidget.py'),
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
])

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

def run():
    app = QtGui.QApplication([])
    loader = ExampleLoader()
    
Luke Campagnola's avatar
Luke Campagnola committed
126
    app.exec_()
127 128

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