示例#1
0
    def _create_inside_panel(self):
        self.dvc = dv.DataViewCtrl(self.mainpanel,
                                   style=wx.BORDER_THEME | dv.DV_VERT_RULES \
                                         | dv.DV_MULTIPLE | dv.DV_ROW_LINES
                                   )
        #
        dv_col = self.dvc.AppendTextColumn("Name", 0, width=120)
        dv_col.SetMinWidth(120)
        #
        dvcr = TidRenderer()
        dv_col = dv.DataViewColumn("Datatype", dvcr, 1, width=100)
        dv_col.SetMinWidth(100)
        self.dvc.AppendColumn(dv_col)
        #
        dvcr = DatatypeRenderer()
        dv_col = dv.DataViewColumn("Curvetype", dvcr, 2, width=100)
        dv_col.SetMinWidth(100)
        self.dvc.AppendColumn(dv_col)

        #
        dv_col = self.dvc.AppendTextColumn("Curve Name", 3, width=100)
        dv_col.SetMinWidth(100)
        #
        dv_col = self.dvc.AppendTextColumn("Start", 4, width=100)
        dv_col.SetMinWidth(100)
        #
        dv_col = self.dvc.AppendTextColumn("End", 5, width=100)
        dv_col.SetMinWidth(100)
        #
        dv_col = self.dvc.AppendTextColumn("Unit",
                                           6,
                                           width=80,
                                           mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        dv_col.SetMinWidth(80)
        #
        dv_col = self.dvc.AppendToggleColumn("Import",
                                             7,
                                             width=70,
                                             mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        dv_col.SetMinWidth(70)
        #
        dv_col = self.dvc.AppendProgressColumn("Progress", 8, width=100)
        dv_col.SetMinWidth(100)
        #
        for dv_col in self.dvc.Columns:
            dv_col.Renderer.Alignment = wx.ALIGN_CENTER
            dv_col.SetAlignment(wx.ALIGN_CENTER)
            #
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.dvc, 1, wx.EXPAND | wx.ALL, border=10)
        self._create_bottom_buttons_panel()
        sizer.Add(self.bottom_buttons_panel, 0, wx.EXPAND | wx.BOTTOM | wx.TOP)
        self.mainpanel.SetSizer(sizer)
        self.mainpanel.Layout()
示例#2
0
    def RefreshColumns(self):
        colsLabels = {x.Title for x in self.Columns}
        cs = {x.Title: x for x in self.Columns}
        ts = dict()
        tlabels = set()
        for card in self.model.cards:
            for k in card.Values:
                t = self.parent.templates[card.Template]
                if k in t.column:
                    tlabels.add(k)
                    ts[k] = card.Template
        for c in columns:
            tlabels.add(c)
        toaddlabels = tlabels - colsLabels - set(columns)
        tosupprlabels = colsLabels - tlabels
        for l in toaddlabels:

            typ, default = self.parent.templates[ts[l]].column[l]
            tr = template_columns_type[typ](mode=dv.DATAVIEW_CELL_ACTIVATABLE)

            col = dv.DataViewColumn(
                l,  # title
                tr,  # renderer
                len(self.cols) + len(self.model.templateColumns) +
                1,  # data model column
                width=80)
            self.AppendColumn(col)

            #col=self.AppendTextColumn(l,len(self.cols)+len(self.model.templateColumns)+1)
            self.model.templateColumns[l] = col
        #issue with the templtecaolums: removing column would be too hard=> return from herre
        return
        for l in tosupprlabels:
            self.DeleteColumn(cs[l])
            del self.model.templateColumns[l]
    def __init__(self, parent, log, data=None, model=None):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create a dataview control
        self.dvc = dv.DataViewCtrl(self,
                                   style=wx.BORDER_THEME
                                   | dv.DV_ROW_LINES # nice alternating bg colors
                                   #| dv.DV_HORIZ_RULES
                                   | dv.DV_VERT_RULES
                                   | dv.DV_MULTIPLE
                                   )
        
        # Create an instance of our model...
        if model is None:
            self.model = MyTreeListModel(data, log)
        else:
            self.model = model            

        # Tel the DVC to use the model
        self.dvc.AssociateModel(self.model)

        # Define the columns that we want in the view.  Notice the 
        # parameter which tells the view which col in the data model to pull
        # values from for each view column.
        if 1:
            self.tr = tr = dv.DataViewTextRenderer()
            c0 = dv.DataViewColumn("Genre",   # title
                                   tr,        # renderer
                                   0,         # data model column
                                   width=80)
            self.dvc.AppendColumn(c0)
        else:
            self.dvc.AppendTextColumn("Genre",   0, width=80)
            
        c1 = self.dvc.AppendTextColumn("Artist",   1, width=170, mode=dv.DATAVIEW_CELL_EDITABLE)
        c2 = self.dvc.AppendTextColumn("Title",    2, width=260, mode=dv.DATAVIEW_CELL_EDITABLE)
        c3 = self.dvc.AppendDateColumn('Acquired', 4, width=100, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c4 = self.dvc.AppendToggleColumn('Like',   5, width=40, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        
        # Notice how we pull the data from col 3, but this is the 6th col
        # added to the DVC. The order of the view columns is not dependent on
        # the order of the model columns at all.
        c5 = self.dvc.AppendTextColumn("id", 3, width=40,  mode=dv.DATAVIEW_CELL_EDITABLE)
        c5.Alignment = wx.ALIGN_RIGHT
        
        # Set some additional attributes for all the columns
        for c in self.dvc.Columns:
            c.Sortable = True
            c.Reorderable = True

            
        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)
        
        b1 = wx.Button(self, label="New View", name="newView")
        self.Bind(wx.EVT_BUTTON, self.OnNewView, b1)
        
        self.Sizer.Add(b1, 0, wx.ALL, 5)
示例#4
0
 def initialize(self, cb_wallet):
     self.GOOD_BMP = Bitmap(file_path("gui/good.bmp"))
     self.BAD_BMP = Bitmap(file_path("gui/bad.bmp"))
     self.m_choice_nwords.Set(WORDSLEN_LIST)
     self.m_choice_nwords.SetSelection(0)
     ctab = self.m_dataViewListCtrl1
     dv1 = dataview.DataViewColumn("Name", dataview.DataViewTextRenderer(),
                                   0)
     dv1.SetWidth(125)
     ctab.AppendColumn(dv1)
     dv2 = dataview.DataViewColumn("Account",
                                   dataview.DataViewTextRenderer(), 1)
     dv2.SetWidth(372)
     ctab.AppendColumn(dv2)
     dv3 = dataview.DataViewColumn("Balance",
                                   dataview.DataViewTextRenderer(), 2)
     dv3.SetWidth(86)
     ctab.AppendColumn(dv3)
     self.cb_wallet = cb_wallet
示例#5
0
    def __init__(self, parent, log, model=None, data=None):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create a dataview control
        self.dvc = dv.DataViewCtrl(
            self,
            style=wx.BORDER_THEME
            | dv.DV_ROW_LINES
            #| dv.DV_HORIZ_RULES
            | dv.DV_VERT_RULES
            | dv.DV_MULTIPLE)

        # Create an instance of the model
        if model is None:
            self.model = TestModel(data, log)
        else:
            self.model = model
        self.dvc.AssociateModel(self.model)

        # Now we create some columns.
        col = self.dvc.AppendTextColumn("Id", 0, width=40)
        col.Alignment = wx.ALIGN_RIGHT
        col.MinWidth = 40

        col = self.dvc.AppendTextColumn("Artist",
                                        1,
                                        width=170,
                                        mode=dv.DATAVIEW_CELL_EDITABLE)
        col.Alignment = wx.ALIGN_LEFT

        # Use a custom renderer for the Title column.
        # NOTE: Using an editor with the custom renderer is only well
        # supported on the Windows version of the DVC, so we won't turn on
        # editing in that case, and will inform the user about it.
        if 'wxMSW' in wx.PlatformInfo:
            custMode = dv.DATAVIEW_CELL_EDITABLE
        else:
            custMode = dv.DATAVIEW_CELL_INERT
            wx.CallAfter(self.ShowMessage)
        renderer = MyCustomRenderer(self.log, mode=custMode)
        col = dv.DataViewColumn("Title", renderer, 2, width=260)
        col.Alignment = wx.ALIGN_LEFT
        self.dvc.AppendColumn(col)

        col = self.dvc.AppendTextColumn("Genre",
                                        3,
                                        width=80,
                                        mode=dv.DATAVIEW_CELL_EDITABLE)
        col.Alignment = wx.ALIGN_LEFT

        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)
示例#6
0
    def test_dataviewColumn(self):
        r = dv.DataViewIconTextRenderer()
        # create
        c = dv.DataViewColumn('title', r, 0)
        # test that properties exist
        c.Title
        c.Bitmap
        c.Width
        c.MinWidth
        c.Alignment
        c.Flags
        c.SortOrder

        self.myYield()
示例#7
0
 def doListCtrlTest(self, dlc):
     assert isinstance(dlc, dv.DataViewListCtrl)
     for label in "one two three four".split():
         dlc.AppendTextColumn(label)
     col = dv.DataViewColumn('five', dv.DataViewBitmapRenderer(), 4)
     dlc.AppendColumn(col)
     
     bmp = wx.Bitmap(pngFile)
     for n in range(50):
         rowdata = ['%s-%02d' % (s, n) for s in "one two three four".split()]
         rowdata.append(bmp)
         dlc.AppendItem(rowdata)
         
     self.frame.SendSizeEvent()
     dlc.Refresh()
     self.myYield()
示例#8
0
    def init_dvc(self, results):

        data = dict()
        for r in results:
            v_result = ViewResult(r)
            for i in r.iterations:
                v_iteration = ViewIteration(i, r)
                v_result.iterations.append(v_iteration)
            data[r.name] = v_result

        data = data.values()

        # Create an instance of our model...
        self.model = MyTreeListModel(data)

        self.data = data
        # Tel the DVC to use the model
        self.dvc.AssociateModel(self.model)

        # Define the columns that we want in the view.  Notice the
        # parameter which tells the view which col in the data model to pull
        # values from for each view column.
        self.tr = tr = dv.DataViewTextRenderer()
        tr.EnableEllipsize()
        tr.SetAlignment(0)
        c0 = dv.DataViewColumn(
            L('VIEW_OPTION_RESULTS'),  # title
            tr,  # renderer
            0,  # data model column
            width=200)
        self.dvc.AppendColumn(c0)

        c1 = self.dvc.AppendTextColumn(L('VIEW_ITERATION_F_R'), 1, width=200)
        c1.Alignment = wx.ALIGN_CENTRE

        self.dvc.AppendToggleColumn(L('VIEW_ITERATION_OPTION'),
                                    2,
                                    width=20,
                                    mode=dv.DATAVIEW_CELL_ACTIVATABLE)

        # Set some additional attributes for all the columns
        for c in self.dvc.Columns:
            c.Sortable = True
            c.Reorderable = True

        for node in self.model.getParentItem():
            self.dvc.Expand(node)
示例#9
0
    def __init__(self, parent, log, model=None, data=None):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create a dataview control
        self.dvc = dv.DataViewCtrl(self,
                                   style=wx.BORDER_THEME
                                   | dv.DV_ROW_LINES
                                   #| dv.DV_HORIZ_RULES
                                   | dv.DV_VERT_RULES
                                   | dv.DV_MULTIPLE
                                   )

        # Create an instance of the model
        if model is None:
            self.model = TestModel(data, log)
        else:
            self.model = model
        self.dvc.AssociateModel(self.model)

        # Now we create some columns.
        col = self.dvc.AppendTextColumn("Id", 0, width=40)
        col.Alignment = wx.ALIGN_RIGHT
        col.MinWidth = 40

        col = self.dvc.AppendTextColumn("Artist", 1, width=170, mode=dv.DATAVIEW_CELL_EDITABLE)
        col.Alignment = wx.ALIGN_LEFT

        renderer = MyCustomRenderer(self.log, mode=dv.DATAVIEW_CELL_EDITABLE)
        col = dv.DataViewColumn("Title", renderer, 2, width=260)
        col.Alignment = wx.ALIGN_LEFT
        self.dvc.AppendColumn(col)

        col = self.dvc.AppendTextColumn("Genre", 3, width=80, mode=dv.DATAVIEW_CELL_EDITABLE)
        col.Alignment = wx.ALIGN_LEFT

        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)
示例#10
0
    def __init__(self, parent, log, model=None, data=None):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        # Create a dataview control
        self.dvc = dv.DataViewCtrl(self, style=wx.BORDER_THEME
                                               | dv.DV_ROW_LINES
                                               #| dv.DV_HORIZ_RULES
                                               | dv.DV_VERT_RULES
                                               | dv.DV_MULTIPLE
                                               )

        # Create an instance of the model
        if model is None:
            self.model = TestModel(data, log)
        else:
            self.model = model
        self.dvc.AssociateModel(self.model)

        # Now we create some columns.
        c0 = self.dvc.AppendTextColumn("Id", 0, width=40)
        c0.Alignment = wx.ALIGN_RIGHT
        c0.MinWidth = 40

        # We'll use our custom renderer for these columns
        for title, col, width in [ ('Artist', 1, 170),
                                   ('Title', 2, 260),
                                   ('Genre', 3, 80)]:
            renderer = MyCustomRenderer(self.log,
mode=dv.DATAVIEW_CELL_EDITABLE)
            column = dv.DataViewColumn(title, renderer, col,
width=width)
            column.Alignment = wx.ALIGN_LEFT
            self.dvc.AppendColumn(column)

        # Layout
        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)
示例#11
0
    def __init__(self,
                 parent,
                 log,
                 files_name_text,
                 select_list,
                 input_file_name,
                 model_excel_name,
                 data=None,
                 model=None):
        self.log = log
        wx.Panel.__init__(self, parent, -1)
        self.files_name_text = files_name_text

        self.input_file_name = input_file_name
        self.model_excel_name = model_excel_name

        # Create a dataview control
        self.dvc = dv.DataViewCtrl(
            self,
            style=wx.BORDER_THEME
            | dv.DV_ROW_LINES  # nice alternating bg colors
            #| dv.DV_HORIZ_RULES
            | dv.DV_VERT_RULES
            | dv.DV_MULTIPLE)

        # Create an instance of our model...
        if model is None:
            self.model = MyTreeListModel(data, log)
        else:
            self.model = model

        # Tel the DVC to use the model
        self.dvc.AssociateModel(self.model)

        # Define the columns that we want in the view.  Notice the
        # parameter which tells the view which col in the data model to pull
        # values from for each view column.
        if 0:
            self.tr = tr = dv.DataViewTextRenderer()
            c0 = dv.DataViewColumn(
                "Genre",  # title
                tr,  # renderer
                0,  # data model column
                width=80)
            self.dvc.AppendColumn(c0)
        else:
            self.dvc.AppendTextColumn("File name", 0, width=250)

        #c1 = self.dvc.AppendTextColumn("Artist",   1, width=170, mode=dv.DATAVIEW_CELL_EDITABLE)
        c2 = self.dvc.AppendTextColumn("Title",
                                       2,
                                       width=80,
                                       mode=dv.DATAVIEW_CELL_EDITABLE)
        #c3 = self.dvc.AppendDateColumn('index', 4, width=100, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c4 = self.dvc.AppendToggleColumn('select',
                                         5,
                                         width=40,
                                         mode=dv.DATAVIEW_CELL_ACTIVATABLE)

        # Notice how we pull the data from col 3, but this is the 6th col
        # added to the DVC. The order of the view columns is not dependent on
        # the order of the model columns at all.
        c5 = self.dvc.AppendTextColumn("id",
                                       3,
                                       width=40,
                                       mode=dv.DATAVIEW_CELL_EDITABLE)
        #c5.Alignment = wx.ALIGN_RIGHT

        # Set some additional attributes for all the columns
        for c in self.dvc.Columns:
            c.Sortable = True
            c.Reorderable = True

        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)

        #b1 = wx.Button(self, label="Open File", name="openFile")
        #self.Bind(wx.EVT_BUTTON, self.OnOpen, b1)

        #b2 = wx.Button(self, label="Del File", name="delFile")
        #self.Bind(wx.EVT_BUTTON, self.onDel, b2)

        b3 = wx.Button(self, label="Save File", name="saveFile")
        self.Bind(wx.EVT_BUTTON, self.OnSave, b3)

        #b4 = wx.Button(self, label="New View", name="newView")
        #self.Bind(wx.EVT_BUTTON, self.OnNewView, b4)

        btnbox = wx.BoxSizer(wx.HORIZONTAL)
        #btnbox.Add(b1, 0, wx.LEFT|wx.RIGHT, 5)
        #btnbox.Add(b2, 0, wx.LEFT|wx.RIGHT, 5)
        btnbox.Add(b3, 0, wx.LEFT | wx.RIGHT, 5)
        #btnbox.Add(b4, 0, wx.LEFT|wx.RIGHT, 5)
        self.Sizer.Add(btnbox, 0, wx.TOP | wx.BOTTOM, 5)
示例#12
0
    def __init__(self, *args, **kargs):
        page = kargs.pop('page', None)
        parent = kargs.pop('parent', None)
        title = kargs.pop('title', 'HDF export')
        path = kargs.pop('path', os.path.join(os.getcwd(), 'data.hdf'))
        dataset = kargs.pop('dataset', None)
        metadata = kargs.pop('metadata', OrderedDict())
        export_flag = kargs.pop('export_flag', {})
        if dataset is None:
            if page is None:
                return
            dataset, metadata, export_flag = build_data(
                page,
                verbose=False,
                metadata=metadata,
                export_flag=export_flag)
        style = (wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX
                 | wx.RESIZE_BORDER)
        if parent is not None:
            style = style | wx.FRAME_FLOAT_ON_PARENT

        wx.Frame.__init__(self,
                          *args,
                          style=style,
                          title=title,
                          parent=parent,
                          size=(400, 500))

        self.SetSizer(wx.BoxSizer(wx.VERTICAL))
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        self.GetSizer().Add(hsizer, 1, wx.EXPAND, 0)
        panel = wx.Panel(self)
        hsizer.Add(panel, 1, wx.EXPAND)

        panel.SetSizer(wx.BoxSizer(wx.VERTICAL))
        sizer = panel.GetSizer()
        sizer_h = wx.BoxSizer(wx.HORIZONTAL)

        wildcard = "HDF(hdf)|*.hdf|Any|*.*"
        self.filepicker = wx.FilePickerCtrl(panel,
                                            style=wx.FLP_SAVE
                                            | wx.FLP_USE_TEXTCTRL,
                                            path=path,
                                            wildcard=wildcard)
        self.sp = wx.SplitterWindow(panel,
                                    wx.ID_ANY,
                                    style=wx.SP_NOBORDER | wx.SP_LIVE_UPDATE
                                    | wx.SP_3DSASH)
        self.dataviewCtrl = dv.DataViewCtrl(self.sp,
                                            style=(wx.BORDER_THEME
                                                   | dv.DV_ROW_LINES
                                                   | dv.DV_VERT_RULES))

        self.model = HDFDataModel(export_flag=export_flag,
                                  dataset=dataset,
                                  metadata=metadata)
        self.dataviewCtrl.AssociateModel(self.model)

        self.tr = tr = dv.DataViewTextRenderer()
        c0 = dv.DataViewColumn(
            "name",  # title
            tr,  # renderer
            0,  # data model column
            width=200)
        self.dataviewCtrl.AppendColumn(c0)

        #        self.dataviewCtrl.AppendTextColumn('name', 0,
        #                                           width = 150,
        #                                           mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c1 = self.dataviewCtrl.AppendToggleColumn(
            'export', 1, width=70, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c2 = self.dataviewCtrl.AppendTextColumn(
            'value', 2, width=100, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c3 = self.dataviewCtrl.AppendTextColumn(
            'shape', 3, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        #c4 = self.dataviewCtrl.AppendTextColumn('metadata', 4,
        #                                        mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        for c in self.dataviewCtrl.Columns:
            c.Sortable = True
            c.Reorderable = True
        c1.Alignment = wx.ALIGN_CENTER

        #from ifigure.widgets.var_viewerg2 import _PropertyGrid

        self.grid = pg.PropertyGrid(self.sp)

        #self.btn_load = wx.Button(self, label = 'Load')
        self.choices = [
            'Options...', 'No Property', 'Minimum properties', 'All properties'
        ]
        self.cb = wx.ComboBox(panel,
                              wx.ID_ANY,
                              style=wx.TE_PROCESS_ENTER | wx.CB_READONLY,
                              choices=self.choices)
        self.cb.SetValue(self.choices[0])
        self.btn_export = wx.Button(panel, label='Export...')

        sizer.Add(self.filepicker, 0, wx.EXPAND | wx.ALL, 1)
        sizer.Add(self.sp, 1, wx.EXPAND | wx.ALL, 5)
        sizer.Add(sizer_h, 0, wx.EXPAND | wx.ALL, 5)

        #sizer_h.Add(self.btn_load, 0,   wx.EXPAND|wx.ALL, 1)
        sizer_h.Add(self.cb, 0, wx.EXPAND | wx.ALL, 1)
        sizer_h.AddStretchSpacer(prop=1)
        sizer_h.Add(self.btn_export, 0, wx.EXPAND | wx.ALL, 1)

        self.Layout()
        self.Show()

        self.sp.SetMinimumPaneSize(30)
        self.sp.SplitHorizontally(self.dataviewCtrl, self.grid)
        self.sp.SetSashPosition(300)
        #        self.Bind(dv.EVT_DATAVIEW_ITEM_VALUE_CHANGED,
        #                  self.onDataChanged, self.dataviewCtrl)
        self.Bind(dv.EVT_DATAVIEW_SELECTION_CHANGED, self.onSelChanged,
                  self.dataviewCtrl)

        # self.Bind(dv.EVT_DATAVIEW_ITEM_COLLAPSING,
        #          self.onCollapsing, self.dataviewCtrl)

        self.grid.Bind(pg.EVT_PG_CHANGED, self.onPGChanged, self.grid)
        self.Bind(wx.EVT_BUTTON, self.onExport, self.btn_export)
        self.Bind(wx.EVT_COMBOBOX, self.onCBHit, self.cb)
        self.Bind(wx.EVT_CLOSE, self.onWindowClose)

        self.page = page
        wx.GetApp().TopWindow.hdf_export_window = self
示例#13
0
    def __init__(self, parent, data=None, model=None):

        wx.Panel.__init__(self, parent, size=(600, 250))

        self.anuncio = None
        self.parent = parent
        self.dvc = dv.DataViewCtrl(self,
                                   style=wx.BORDER_THEME
                                   | dv.DV_ROW_LINES
                                   | dv.DV_VERT_RULES
                                   | dv.DV_MULTIPLE)

        self.model = None
        if model is None:
            if data:
                self.model = MyTreeListModel(data)
        else:
            self.model = model

        # Tel the DVC to use the model
        if self.model:
            self.dvc.AssociateModel(self.model)

        self.tr = tr = dv.DataViewTextRenderer()
        c0 = dv.DataViewColumn(
            "Bloque",  # title
            tr,  # renderer
            0,  # data model column
            width=250)
        self.dvc.AppendColumn(c0)
        # else:
        # self.dvc.AppendTextColumn("Bloque",   0, width=80)

        c3 = self.dvc.AppendTextColumn('Inicio',
                                       1,
                                       width=200,
                                       mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c4 = self.dvc.AppendTextColumn('Final',
                                       2,
                                       width=200,
                                       mode=dv.DATAVIEW_CELL_ACTIVATABLE)

        c1 = self.dvc.AppendTextColumn("Anuncio",
                                       3,
                                       width=300,
                                       mode=dv.DATAVIEW_CELL_ACTIVATABLE)
        c2 = self.dvc.AppendTextColumn("Marca",
                                       4,
                                       width=150,
                                       mode=dv.DATAVIEW_CELL_ACTIVATABLE)

        c5 = self.dvc.AppendTextColumn("id",
                                       5,
                                       width=40,
                                       mode=dv.DATAVIEW_CELL_ACTIVATABLE)

        # Notice how we pull the data from col 3, but this is the 6th col
        # added to the DVC. The order of the view columns is not dependent on
        # the order of the model columns at all.

        # c5.Alignment = wx.ALIGN_RIGHT

        # Set some additional attributes for all the columns

        for i, c in enumerate(self.dvc.Columns):
            c.Sortable = True
            c.Reorderable = True

        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)
        self.Bind(dv.EVT_DATAVIEW_ITEM_ACTIVATED, self.OnClick)

        b1 = wx.Button(self, label="Vista Completa", name="vistacompleta")
        self.Bind(wx.EVT_BUTTON, self.OnNewView, b1)

        self.Sizer.Add(b1, 0, wx.ALL, 5)
示例#14
0
    def _post_init(self):
        # The native GTK widget used by DataViewCtrl would have an internal
        # "live" search feature which steals some keyboard shortcuts: Ctrl+n,
        # Ctrl+p, Ctrl+f, Ctrl+a, Ctrl+Shift+a
        # https://groups.google.com/d/msg/wxpython-users/1sUPp766uXU/0J22mUrkzoAJ
        # Ctrl+f can be recovered with by not overriding the Model's
        # GetColumnType method
        # See also bug #349
        # See bug #260 for generic issues about DataViewCtrl
        self.treec = dv.DataViewCtrl(self, style=dv.DV_MULTIPLE |
                                                            dv.DV_NO_HEADER)

        self.cmenu = ContextMenu(self)
        self.ctabmenu = TabContextMenu(self.filename)

        self.logspanel = logs.LogsPanel(self, self.filename)
        self.dbhistory = logs.DatabaseHistory(self, self.logspanel,
                                    self.logspanel.get_panel(), self.filename,
                                    self.treec.GetBackgroundColour())

        self.properties = Properties(self.treec)
        self.base_properties = DBProperties(self.properties)

        self.accelerators = {}

        creating_tree_event.signal(filename=self.filename)

        # Initialize the icons only *after* the various plugins have added
        # their properties
        self.properties.post_init()

        # Initialize the tree only *after* instantiating the class (and
        # initilizing the icons), because actions like the creation of item
        # images rely on the filename to be in the dictionary
        for row in core_api.get_all_items(self.filename):
            self._init_item_data(row["I_id"], row["I_text"])

        self.dvmodel = Model(self.data, self.filename)
        self.treec.AssociateModel(self.dvmodel)
        # According to DataViewModel's documentation (as of September 2014)
        # its reference count must be decreased explicitly to avoid memory
        # leaks; the wxPython demo, however, doesn't do it, and if done here,
        # the application crashes with a segfault when closing all databases
        # See also bug #104
        #self.dvmodel.DecRef()

        dvrenderer = Renderer(self, self.treec)
        dvcolumn = dv.DataViewColumn("Item", dvrenderer, 0,
                                                        align=wx.ALIGN_LEFT)
        self.treec.AppendColumn(dvcolumn)

        self._init_accelerators()

        self.Initialize(self.treec)

        # Initialize the logs panel *after* signalling creating_tree_event,
        # which is used to add plugin logs
        self.logspanel.initialize()

        nb_left = wx.GetApp().nb_left
        nb_left.add_page(self, os.path.basename(self.filename), select=True)

        # The logs panel must be shown only *after* adding the page to the
        # notebook, otherwise *for*some*reason* the databases opened
        # automatically by the sessions manager (those opened manually aren't
        # affected) will have the sash of the SplitterWindow not correctly
        # positioned (only if using SetSashGravity)
        if wx.GetApp().logs_configuration.is_shown():
            self.show_logs()

        self.history_item_update_requests = []
        self.history_tree_reset_request = False

        # Explicitly set focus on the tree, otherwise after opening a database
        # no window has focus, and this e.g. prevents F10 from showing the menu
        # if set on autohide, until a window is manually focused (note that
        # this would happen only when opening a database manually, it wouldn't
        # happen when a database is opened automatically by the session
        # manager)
        self.treec.SetFocus()

        self.treec.Bind(dv.EVT_DATAVIEW_ITEM_CONTEXT_MENU,
                                                        self._popup_item_menu)

        core_api.bind_to_insert_item(self._handle_insert_item)
        core_api.bind_to_update_item_text(self._handle_update_item_text)
        core_api.bind_to_deleting_item(self._handle_deleting_item)
        core_api.bind_to_deleted_item_2(self._handle_deleted_item)
        core_api.bind_to_history_insert(self._handle_history_insert)
        core_api.bind_to_history_update_simple(
                                            self._handle_history_update_simple)
        core_api.bind_to_history_update_deep(self._handle_history_update_deep)
        core_api.bind_to_history_update_text(self._handle_history_update_text)
        core_api.bind_to_history_remove(self._handle_history_remove)
        core_api.bind_to_history(self._handle_history)