Exemplo n.º 1
0
    def __init__(self, event_handler) :
        super(MainDialog, self).__init__(parent = None,
                                         id = wx.NewId(),
                                         size = (840, 570),
                                         title = APP_NAME)
        self.event_handler = event_handler
        self.event_handler.gui = self

        self.SetMinSize((840, 570))
        self.SetSize((840, 570))
        self.Centre()

        self._statusbar = self.CreateStatusBar(3)
        self._statusbar.SetStatusWidths([200, 500, 100])

        menuBar = wx.MenuBar()

        menu1 = wx.Menu()
        menu1.Append(self.ID_SETTING, u"设置a&ccess_key", u"Setting the access_id and secret_access_key")
        menu1.Append(self.ID_SYNC_UP, u"上行同步(&U)", u"Sync the file to OSS.")
        menu1.Append(self.ID_SYNC_DOWN, u"下行同步(&D)", u"Sync the file to local folder.")
        menu1.Append(wx.ID_ABOUT, u"打开同步目录(&P)", u"Open the sync folder on Explorer")
        menu1.AppendSeparator()
        menu1.Append(wx.ID_ABOUT, u"&About", u"About the Application")
        menu1.Append(wx.ID_CLOSE, u"&Exit", u"Exit this Application")
        menuBar.Append(menu1, u"操作(&O)")

        menu2 = wx.Menu()
        menu2.Append(self.ID_VIEW_SYNC, u'同步(&T)', u'同步OSS文件到指定的文件夹', wx.ITEM_RADIO)
        #menu2.Append(self.ID_VIEW_MGR, u'管理(&M)', u'对OSS文件进行管理', wx.ITEM_RADIO)
        menu2.Append(self.ID_VIEW_BROWSE, u'浏览(&L)', u'浏览文件', wx.ITEM_RADIO)
        menuBar.Append(menu2, u"视图(&V)")

        self.SetMenuBar(menuBar)
        self.Bind(wx.EVT_MENU, lambda evt: wx.Exit(), id = wx.ID_CLOSE)

        logo = wx.StaticBitmap(self, -1,
            wx.Bitmap(os.path.join(CURRENT_PATH, 'logo_aliyun.png'),
            wx.BITMAP_TYPE_PNG))

        self._splitter = wx.SplitterWindow(self,
            style = wx.SP_3D | wx.SP_BORDER | wx.SP_LIVE_UPDATE | wx.SP_3DSASH | wx.TAB_TRAVERSAL)
        self._splitter.SetMinimumPaneSize(210)

        # 左边bucket列表
        left = wx.Panel(self._splitter, -1 , style = wx.TAB_TRAVERSAL)
        tbNewBucket = wx.Button(left, self.ID_NEW_BUCKET, u"创建存储空间", (10, 10), (100, 24))
        self._tree = TreeView(left, (0, 40))
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(tbNewBucket, 0, wx.EXPAND | wx.ALL, 5)
        vbox.Add(self._tree, 1, wx.EXPAND | wx.ALL, 0)
        left.SetSizer(vbox)

        # 右边文件列表
        right = wx.Panel(self._splitter, -1 , style = wx.TAB_TRAVERSAL)
        self._bucket_info = BucketInfoPanel(right)
        self._list = FileList(right, wx.DefaultPosition, wx.DefaultSize)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self._bucket_info, 0, wx.EXPAND | wx.ALL, 0)
        vbox.Add(self._list, 1, wx.EXPAND | wx.ALL, 0)
        right.SetSizer(vbox)

        self._splitter.SplitVertically(left, right, 210)

        self.SetBackgroundColour('#FFFFFF')

        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(logo, 0, wx.ALIGN_LEFT , 0)
        vbox.Add(self._splitter, 1, wx.EXPAND | wx.ALL, 0)
        self.SetSizer(vbox)
        self.SetAutoLayout(True)
        self.Fit()

        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.on_bucket_selected, self._tree)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.on_object_activated, self._list)


        self.Bind(wx.EVT_MENU, self.on_view_clicked, id = self.ID_VIEW_MGR)
        self.Bind(wx.EVT_MENU, self.on_view_clicked, id = self.ID_VIEW_BROWSE)
        self.Bind(wx.EVT_MENU, self.on_view_clicked, id = self.ID_VIEW_SYNC)
        self.Bind(wx.EVT_MENU, self.init, id = self.ID_SETTING)
        self.Bind(wx.EVT_MENU, self.on_delete_bucket, id = TreeView.ID_DELETE_BUCKET)
        self.Bind(wx.EVT_BUTTON, self.on_create_bucket, id = self.ID_NEW_BUCKET)
        self.Bind(wx.EVT_MENU, self.on_head_object, id = FileList.ID_HEAD_OBJECT)

        self.Bind(wx.EVT_BUTTON, self.event_handler.on_button_sync_down,
                  id = BucketInfoPanel.ID_SYNC_DOWN)
        self.Bind(wx.EVT_BUTTON, self.event_handler.on_button_sync_up,
                  id = BucketInfoPanel.ID_SYNC_UP)

        self.set_view(self.ID_VIEW_SYNC)