예제 #1
0
    def __init__(self, parent):
        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_VERT_RULES
                                   | dv.DV_MULTIPLE)

        self.model = DataModel([])
        self.dvc.AssociateModel(self.model)

        self.dvc.AppendTextColumn("path", 1, width=170)
        self.dvc.AppendTextColumn("title",
                                  2,
                                  width=300,
                                  mode=dv.DATAVIEW_CELL_EDITABLE)
        self.dvc.AppendProgressColumn("progress", 3, width=130)
        self.dvc.AppendTextColumn("status",
                                  4,
                                  width=300,
                                  mode=dv.DATAVIEW_CELL_EDITABLE)

        # set the Sizer property (same as SetSizer)
        self.Sizer = wx.BoxSizer(wx.VERTICAL)
        self.Sizer.Add(self.dvc, 1, wx.EXPAND)

        b2 = wx.Button(self, label="Add files")
        self.Bind(wx.EVT_BUTTON, self.OnAddRow, b2)
        self.button_add = b2

        b3 = wx.Button(self, label="Delete selected")
        b3.Enable(False)
        self.Bind(wx.EVT_BUTTON, self.OnDeleteRows, b3)
        self.button_delete = b3

        b5 = wx.Button(self, label="Start upload")
        b5.Enable(False)
        self.Bind(wx.EVT_BUTTON, self.start_upload, b5)
        self.button_upload_start = b5

        b6 = wx.Button(self, label="Stop upload")
        b6.Enable(False)
        self.Bind(wx.EVT_BUTTON, self.stop_upload, b6)
        self.button_upload_stop = b6

        self.in_progress = False
        self.files_in_progress = 0

        btnbox = wx.BoxSizer(wx.HORIZONTAL)
        btnbox.Add(b2, 0, wx.LEFT | wx.RIGHT, 5)
        btnbox.Add(b3, 0, wx.LEFT | wx.RIGHT, 5)
        btnbox.Add(b5, 0, wx.LEFT | wx.RIGHT, 5)
        btnbox.Add(b6, 0, wx.LEFT | wx.RIGHT, 5)
        self.Sizer.Add(btnbox, 0, wx.TOP | wx.BOTTOM, 5)

        # Bind some events so we can see what the DVC sends us
        self.Bind(dv.EVT_DATAVIEW_ITEM_START_EDITING, self.on_before_edit,
                  self.dvc)
        # self.Bind(dv.EVT_DATAVIEW_ITEM_EDITING_DONE, self.OnEditingDone, self.dvc)
        # self.Bind(dv.EVT_DATAVIEW_ITEM_VALUE_CHANGED, self.OnValueChanged, self.dvc)

        self.Bind(dv.EVT_DATAVIEW_ITEM_ACTIVATED, self.RightClick, self.dvc)

        parent.Bind(wx.EVT_CLOSE, self.OnClose)
        self.parent = parent

        # worker stuff
        self.enclosure_queue = Queue()

        self.worker = None
        # drop
        file_drop_target = MyFileDropTarget(self.on_drop)
        self.SetDropTarget(file_drop_target)

        auth = OAuth(self)
        self.oauth = auth
        if not auth.ShowModal():
            self.parent.Close()