def on_set_value(self):
        row, col = self.clickcell

        dlg = gui.Dialog(None)
        box = gui.Box(dlg, 'vertical', stretch=1)
        editor = gui.PythonEditor(box)
        auto = gui.Checkbox(box, 'Auto', stretch=0)
        btnbox = gui.Box(box, 'horizontal', stretch=0)
        ok = gui.Button(btnbox, 'OK', stretch=0)
        cancel = gui.Button(btnbox, 'Cancel', stretch=0)
        cancel.connect('clicked', dlg.close)
        ok.connect('clicked', dlg.close)

        expr = self.worksheet[col].expr

        auto.state = not expr == ''
        editor.text = expr

        dlg._widget.ShowModal()

        Worksheet.record = set()
        if auto.state:
            self.worksheet[col].expr = editor.text
        else:
            self.worksheet[col].expr = ''
            if editor.text.strip() != '':
                self.worksheet[col] = self.worksheet.evaluate(editor.text)
        Worksheet.record = None

        dlg._widget.Destroy()
Exemplo n.º 2
0
    def on_add_term(self, term):
        box = gui.Box(self.box, 'vertical', expand=True, stretch=0)
        bpx = gui.Box(box, 'horizontal', expand=True, stretch=0)
        term._butt = gui.Button(bpx, term.name, toggle=True)
        term._butt.connect('toggled', lambda on: self.on_toggled(term, on),
                           True)
        term._butt.connect('double-clicked',
                           lambda: self.on_btn_doubleclicked(term), True)
        t = gui.Toolbar(bpx, expand=False, stretch=0)
        term._act = gui.Command('x',
                                '',
                                lambda checked: self.on_use(term, checked),
                                '16/down.png',
                                type='check')
        t.append(term._act)
        t.append(gui.Command('x', '', lambda: self.on_close(term),
                             'close.png'))
        t._widget.Realize()
        term._box = box
        term._tx = None

        self.create_parambox(term)
        if sum((hasattr(t, '_butt') and t._butt.state)
               for t in self.function.terms) == 0:
            self.function.terms[0]._butt.state = True
            self.graph.selected_function = self.function.terms[0]

        term._act.state = True
Exemplo n.º 3
0
    def __init__(self, func, graph, parent, **place):
        gui.Box.__init__(self, parent, 'vertical', **place)
        self.graph = graph
        self.toolbar = gui.Toolbar(self, stretch=0)

        self.scroll = gui.Scrolled(self)
        self.box = gui.Box(self.scroll, 'vertical')
        self.toolbar.append(
            gui.Command('Add term', '', self.do_add, 'function.png'))
        self.toolbar.append(
            gui.Command('Fit properties', '', self.do_configure,
                        'properties.png'))
        self.toolbar.append(gui.Command('Fit', '', self.do_fit,
                                        'manibela.png'))
        self.toolbar.append(
            gui.Command('Save parameters', '', self.do_fit, 'pencil.png'))
        self.toolbar._widget.Realize()

        self.set_function(func)
Exemplo n.º 4
0
    def __init__(self, parent, graph, **place):
        gui.Box.__init__(self, parent, 'horizontal', **place)
        self.graph = graph

        tbbox = gui.Box(self, 'horizontal', stretch=0)

        def set_graph_mode(mode):
            def _set():
                self.graph.prev_mode = self.graph.mode
                self.graph.mode = mode

                cur = {
                    'arrow': wx.CURSOR_ARROW,
                    'hand': wx.CURSOR_HAND,
                    'zoom': wx.CURSOR_MAGNIFIER,
                    'range': wx.CURSOR_SIZEWE,
                    'd-reader': wx.CURSOR_CROSS,
                    's-reader': wx.CURSOR_CROSS,
                    'draw-text': wx.CURSOR_IBEAM,
                    'draw-line': wx.CURSOR_PENCIL,
                    'none': wx.CURSOR_NONE
                }[mode]
                self.glwidget._widget.SetCursor(wx.StockCursor(cur))
                self.graph.emit('redraw')

            return _set

        graph.show()

        self.toolbar = gui.Toolbar(tbbox, orientation='vertical', stretch=1)
        self.toolbar.append(
            gui.Command('Arrow',
                        '',
                        set_graph_mode('arrow'),
                        'arrow.png',
                        type='radio'))
        self.toolbar.append(
            gui.Command('Hand',
                        '',
                        set_graph_mode('hand'),
                        'hand.png',
                        type='radio'))
        self.toolbar.append(
            gui.Command('Zoom',
                        '',
                        set_graph_mode('zoom'),
                        'zoom.png',
                        type='radio'))
        self.toolbar.append(
            gui.Command('Range',
                        '',
                        set_graph_mode('range'),
                        'range.png',
                        type='radio'))
        self.toolbar.append(
            gui.Command('Data reader',
                        '',
                        set_graph_mode('d-reader'),
                        'dreader.png',
                        type='radio'))
        self.toolbar.append(
            gui.Command('Screen reader',
                        '',
                        set_graph_mode('s-reader'),
                        'sreader.png',
                        type='radio'))
        self.toolbar.append(None)
        self.toolbar.append(
            gui.Command('Line', '', set_graph_mode('draw-line'),
                        'stock_draw-line.png'))
        self.toolbar.append(
            gui.Command('Text', '', set_graph_mode('draw-text'),
                        'stock_draw-text.png'))
        self.toolbar.append(None)
        self.toolbar.append(
            gui.Command('Select all datasets', '', self.on_selectall,
                        'stock_select-all.png'))

        self.toolbar._widget.Realize()

        #        self.closebar = gui.Toolbar(tbbox, stretch=0)
        #        self.closebar.append(gui.Command('Close', 'Close this worksheet',
        #                                        self.on_close, 'close.png'))
        #        self.closebar._widget.Realize()

        self.panel = gui.MainPanel(self)
        self.box = gui.Splitter(self.panel, 'vertical', proportion=0.8)
        self.scrolled = gui.Scrolled(self.box)
        self.glwidget = gui.OpenGLWidget(self.scrolled)
        self.glwidget.min_size = (400, 200)

        self.glwidget.connect('initialize-gl', self.graph.init)
        self.glwidget.connect('resize-gl', self.graph.reshape)
        self.glwidget.connect('paint-gl', self.graph.display)
        self.glwidget.connect('button-pressed', self.graph.button_press)
        self.glwidget.connect('button-released', self.graph.button_release)
        self.glwidget.connect('button-doubleclicked',
                              self.graph.button_doubleclick)
        self.glwidget.connect('mouse-moved', self.graph.button_motion)
        self.glwidget.connect('key-down', self.graph.key_down)

        self.graph.connect('redraw', self.glwidget.redraw)
        self.graph.connect('object-doubleclicked',
                           self.on_object_doubleclicked)
        self.graph.connect('right-clicked', self.on_right_clicked)

        self.legend = gui.List(self.box,
                               model=LegendModel(self.graph))  #, stretch=0)
        self.legend.connect('selection-changed', self.on_legend_select)

        self.graphdata = GraphDataPanel(self.graph,
                                        self,
                                        self.panel.right_panel,
                                        page_label='Data',
                                        page_pixmap='worksheet.png')
        self.style = GraphStylePanel(self.graph,
                                     self,
                                     self.panel.right_panel,
                                     page_label='Style',
                                     page_pixmap='style.png')
        self.axes = GraphAxesPanel(self.graph,
                                   self,
                                   self.panel.right_panel,
                                   page_label='Axes',
                                   page_pixmap='axes.png')
        self.fit = GraphFunctionsPanel(self.graph.functions[0].func,
                                       self.graph,
                                       self.panel.right_panel,
                                       page_label='Fit',
                                       page_pixmap='function.png')
        self.panel.right_panel._widget.toolbar.Realize()

        self.graph.connect('request-cursor', self.on_request_cursor)

        self.object = self.graph
        self.graph.connect('rename', self.on_rename)
        self.legend.connect('right-click', self.on_legend_right_click)
Exemplo n.º 5
0
    def __init__(self, graph, view, parent, **place):
        gui.Box.__init__(self, parent, 'vertical', **place)

        self.graph = graph
        self.view = view

        # Symbol
        self.symbol = gui.Frame(self, 'vertical', title='Symbol', stretch=0.)
        grid = self.symbol_grid = gui.Grid(
            self.symbol, 3, 3, expand=False)  #, expand=True, stretch=1.)
        grid.layout.AddGrowableCol(2)

        # symbol type
        self.symbol = gui.PixmapChoice(grid, pos=(0, 2))
        self.symbol.label = gui.Label(grid, 'Symbol', pos=(0, 1))
        self.symbol.check = gui.Checkbox(grid, pos=(0, 0))
        self.symbol.min_size = (10, self.symbol.min_size[1])
        for symbol in Style.symbols:
            self.symbol.append(symbol + '.png')
        self.symbol.value = 0
        self.symbol.connect(
            'select', lambda value: self.on_select_property('symbol', value),
            True)

        # symbol color
        self.color = gui.PixmapChoice(grid, pos=(1, 2))
        self.color.label = gui.Label(grid, 'Color', pos=(1, 1))
        self.color.check = gui.Checkbox(grid, pos=(1, 0))
        self.color.min_size = (10, self.color.min_size[1])
        for color in Style.colors:
            self.color.append(self.color.create_colored_bitmap((20, 10),
                                                               color))
        self.color.value = 0
        self.color.connect(
            'select', lambda value: self.on_select_property('color', value),
            True)

        # symbol size
        self.symbol_size = gui.Spin(grid, pos=(2, 2))
        self.symbol_size.label = gui.Label(grid, 'Size', pos=(2, 1))
        self.symbol_size.check = gui.Checkbox(grid, pos=(2, 0))
        self.symbol_size.min_size = (10, self.symbol_size.min_size[1])
        self.symbol_size.value = 5
        self.symbol_size.connect(
            'modified',
            lambda value: self.on_select_property('symbol_size', value), True)

        # Line
        self.line = gui.Frame(self, 'vertical', title='Line', stretch=0.)
        grid = self.line_grid = gui.Grid(self.line, 3,
                                         3)  #, expand=True, stretch=1.)
        grid.layout.AddGrowableCol(2)

        # Line type
        self.line_type = gui.Choice(grid, pos=(0, 2))
        self.line_type.label = gui.Label(grid, 'Type', pos=(0, 1))
        self.line_type.check = gui.Checkbox(grid, pos=(0, 0))
        self.line_type.min_size = (10, self.line_type.min_size[1])
        for t in Style.line_types:
            self.line_type.append(t)
        self.line_type.value = 0
        self.line_type.connect(
            'select',
            lambda value: self.on_select_property('line_type', value), True)

        # Line style
        self.line_style = gui.Choice(grid, pos=(1, 2))
        self.line_style.label = gui.Label(grid, 'Style', pos=(1, 1))
        self.line_style.check = gui.Checkbox(grid, pos=(1, 0))
        self.line_style.min_size = (10, self.line_style.min_size[1])
        for p in Style.line_styles:
            self.line_style.append(p)
        self.line_style.value = 0
        self.line_style.connect(
            'select',
            lambda value: self.on_select_property('line_style', value), True)

        # Line width
        self.line_width = gui.Spin(grid, pos=(2, 2))
        self.line_width.label = gui.Label(grid, 'Width', pos=(2, 1))
        self.line_width.check = gui.Checkbox(grid, pos=(2, 0))
        self.line_width.min_size = (10, self.line_width.min_size[1])
        self.line_width.value = 1
        self.line_width.connect(
            'modified',
            lambda value: self.on_select_property('line_width', value), True)

        self.settings_widgets = [
            self.symbol, self.color, self.symbol_size, self.line_type,
            self.line_style, self.line_width
        ]

        self.show_checks(False)

        self.symbol.prop = 'symbol'
        self.symbol_size.prop = 'symbol_size'
        self.color.prop = 'color'
        self.line_width.prop = 'line_width'
        self.line_type.prop = 'line_type'
        self.line_style.prop = 'line_style'

        b = gui.Box(self, 'horizontal', expand=True, stretch=0)
        gui.Label(b, 'Group', stretch=0)
        self.multi = gui.Choice(b, stretch=1)
        self.multi.append('identical')
        self.multi.append('series')
        self.multi.value = 0
        self.multi.connect('select', self.on_select_multi)

        maxminw = max(
            [w.label._widget.GetBestSize()[0] for w in self.settings_widgets])
        for widget in self.settings_widgets:
            widget.check.connect(
                'modified',
                lambda state, widget=widget: self.on_check(widget, state),
                True)
            widget.label.min_size = (maxminw, widget.label.min_size[1])