示例#1
0
class AppFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "", size=(1, 1), style=wx.FRAME_NO_TASKBAR | wx.NO_FULL_REPAINT_ON_RESIZE)
        self.setup()
        self.create_taskbar_icon()
        self.twitter = Twitter(self)

    def setup(self):
        if not os.path.exists(Constants.FOLDER_PATH):
            os.mkdir(Constants.FOLDER_PATH)

    def create_taskbar_icon(self):
        self.tbIcon = TaskBarIcon(self)
        self.tbIcon.Bind(wx.EVT_MENU, self.exit, id=wx.ID_EXIT)

    def open_keylist(self, event):
        keyListDlg = KeyListDialog(self)
        if keyListDlg.ShowModal() == wx.ID_OK:
            keyListDlg.Destroy()

    def open_twitter(self, event):
        webbrowser.open("https://twitter.com/DuvalMagic")
        webbrowser.open("https://twitter.com/GearboxSoftware")

    def start_taskbar_blinking(self):
        self.tbIcon.start_blinking()

    def get_browser_pin(self, url):
        dlg = wx.MessageDialog(
            self, "A browser needs to be open to get a twitter authorization pin", "Authorization pin", wx.YES_NO
        )
        retCode = dlg.ShowModal()
        if retCode == wx.ID_YES:
            dlg.Destroy()
            webbrowser.open(url)
            pin = self.open_pin_dialog()
            return pin
        elif retCode == wx.ID_NO:
            self.close_dialog()

    def open_pin_dialog(self):
        pinDlg = wx.TextEntryDialog(self, "Twitter Pin:", "Pin Preferences", style=wx.OK | wx.CANCEL)
        retID = pinDlg.ShowModal()
        if retID == wx.ID_OK:
            pin = pinDlg.GetValue()
            if len(pin) > 0:
                pinDlg.Destroy()
                return pin
            else:
                pinDlg.Show()
        elif retID == wx.ID_CANCEL:
            self.close_dialog()

    def close_dialog(self):
        dlg = wx.MessageDialog(
            self,
            "This application needs to be authenticated with twitter to work correctly, closing application.",
            "Closing",
            wx.OK,
        )
        retCode = dlg.ShowModal()
        if retCode == wx.OK:
            dlg.Destroy()
            self.exit(wx.EVT_MENU)

    def exit(self, event):
        self.tbIcon.RemoveIcon()
        self.tbIcon.Destroy()
        os._exit(0)