__main__.py 4.05 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
    ('Console', 'ConsoleWidget.py'),
22
    ('GraphicsItems', OrderedDict([
Luke Campagnola's avatar
Luke Campagnola committed
23
        ('Scatter Plot', 'ScatterPlot.py'),
Luke Campagnola's avatar
Luke Campagnola committed
24
        #('PlotItem', 'PlotItem.py'),
25
        ('IsocurveItem', 'isocurve.py'),
26 27
        ('ImageItem - video', 'ImageItem.py'),
        ('ImageItem - draw', 'Draw.py'),
Luke Campagnola's avatar
Luke Campagnola committed
28
        ('Region-of-Interest', 'ROIExamples.py'),
29
        ('GraphicsLayout', 'GraphicsLayout.py'),
Luke Campagnola's avatar
Luke Campagnola committed
30
        ('Text Item', 'text.py'),
31
        ('Linked Views', 'linkedViews.py'),
32
        ('Arrow', 'Arrow.py'),
Luke Campagnola's avatar
Luke Campagnola committed
33 34 35 36 37
        ('ViewBox', 'ViewBox.py'),
    ])),
    ('3D Graphics', OrderedDict([
        ('Volumetric', 'GLVolumeItem.py'),
        ('Isosurface', 'GLMeshItem.py'),
38 39 40
    ])),
    ('Widgets', OrderedDict([
        ('PlotWidget', 'PlotWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
41
        ('SpinBox', 'SpinBox.py'),
42
        ('ConsoleWidget', 'ConsoleWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
43 44
        ('TreeWidget', 'TreeWidget.py'),
        ('DataTreeWidget', 'DataTreeWidget.py'),
45
        ('GradientWidget', 'GradientWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
46
        #('TableWidget', '../widgets/TableWidget.py'),
Luke Campagnola's avatar
Luke Campagnola committed
47
        ('ColorButton', 'ColorButton.py'),
Luke Campagnola's avatar
Luke Campagnola committed
48 49
        #('CheckTable', '../widgets/CheckTable.py'),
        #('VerticalLabel', '../widgets/VerticalLabel.py'),
50
        ('JoystickButton', 'JoystickButton.py'),
51
    ])),
52
    
53 54
    ('GraphicsScene', 'GraphicsScene.py'),
    ('Flowcharts', 'Flowchart.py'),
Luke Campagnola's avatar
Luke Campagnola committed
55 56
    #('Canvas', '../canvas'),
    #('MultiPlotWidget', 'MultiPlotWidget.py'),
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
])

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

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

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