Ejemplo n.º 1
0
class DataBasePanel(scrolled.ScrolledPanel):
    def __init__(self, parent, statusbar):
        scrolled.ScrolledPanel.__init__(self, parent)
        self.statusbar = statusbar
        self.parent = parent

        self.list = FastObjectListView(self,
                                       sortable=True,
                                       style=wx.LC_REPORT | wx.SUNKEN_BORDER,
                                       size=(950, 350))
        self.list.handleStandardKeys = False
        self.list.SetEmptyListMsg("This database has no rows")
        self.list.SetEmptyListMsgFont(
            wx.FFont(24, wx.DEFAULT, faceName="Tekton"))

        self.width_date = 170
        self.width = 100
        self.width_model = 130
        self.check_date = 0

        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
        self.Bind(wx.EVT_LIST_COL_CLICK, self.OnItemSelected, self.list)

        mastersizer = wx.BoxSizer(wx.HORIZONTAL)
        mastersizer.Add(self.list, 0, wx.ALL, 5)

        pub.subscribe(self.fill_list, pubsub_fill_list_DB)
        pub.subscribe(self.re_fill_list, pubsub_update_db_nb_line)

        self.SetSizer(mastersizer)
        self.Layout()
        self.SetAutoLayout(1)
        self.SetupScrolling()
        self.initialize_list()
        c = DataBaseUse()
        c.initialize_database()

    def initialize_list(self):
        temp = []
        ic_ = prog_icon_curve.GetBitmap()
        ImageIndex = self.list.AddImages(ic_)
        self.list.AddNamedImages("date", ic_)
        for i in range(len(headercolumnname) - 1):
            if i == 0:
                temp.append(
                    ColumnDefn(headercolumnname[i],
                               "center",
                               self.width_date,
                               valueGetter=databasename[0],
                               imageGetter=ImageIndex,
                               maximumWidth=self.width_date))
            else:
                temp.append(
                    ColumnDefn(headercolumnname[i],
                               "center",
                               self.width,
                               valueGetter=databasename[i],
                               maximumWidth=self.width))
        i += 1
        temp.append(
            ColumnDefn(headercolumnname[i],
                       "center",
                       self.width_model,
                       valueGetter=databasename[i],
                       maximumWidth=self.width_model))
        self.list.SetColumns(temp)

    def fill_list(self, case, l):
        a = P4Rm()
        self.Freeze()
        if case == 0:
            self.list.SetObjects(l)
        elif case == 1:
            self.list.AddObject(l)
            pub.sendMessage(pubsub_refill_list_name_DB)
            pub.sendMessage(pubsub_search_combobox_DB)
        objects = self.list.GetObjects()
        self.list.SortBy(0, ascending=False)
        if a.db_nb_line is not -1:
            self.list.SetFilter(Filter.Head(a.db_nb_line))
            self.list.RepopulateList()
        else:
            self.list.SetFilter(None)
        self.list.RefreshObjects(objects)
        self.Thaw()