Beispiel #1
0
    def updateIcon(self):

        co.log("update icon")
        if self.current_using_hosts:
            if len(self.origin_hostses) > 0:
                self.updateHostsIcon(self.origin_hostses[0])
            self.SetIcon(co.GetMondrianIcon(self.current_using_hosts.icon_idx))
            self.taskbar_icon.updateIcon()
Beispiel #2
0
    def __init__(self,
                 parent=None,
                 id=wx.ID_ANY,
                 title="SwitchHosts!",
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.DEFAULT_FRAME_STYLE,
                 cls_TaskBarIcon=None):
        wx.Frame.__init__(self, parent, id, title, pos, size, style)

        self.SetIcon(co.GetMondrianIcon())
        self.SetSizeHintsSz(wx.Size(400, 300), wx.DefaultSize)

        self.m_menubar1 = wx.MenuBar(0)
        self.m_menu1 = wx.Menu()
        self.m_menuItem_new = wx.MenuItem(self.m_menu1, wx.ID_NEW, u"新建(&N)",
                                          wx.EmptyString, wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_new)
        self.m_menu1.AppendSeparator()

        self.m_menuItem_export = wx.MenuItem(self.m_menu1, wx.NewId(),
                                             u"导出(&E)", wx.EmptyString,
                                             wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_export)
        self.m_menuItem_import = wx.MenuItem(self.m_menu1, wx.NewId(),
                                             u"导入(&I)", wx.EmptyString,
                                             wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_import)

        self.m_menu1.AppendSeparator()
        self.m_menuItem_exit = wx.MenuItem(self.m_menu1, wx.ID_EXIT, u"退出(&X)",
                                           wx.EmptyString, wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_exit)

        self.m_menubar1.Append(self.m_menu1, u"文件(&F)")

        self.m_menu2 = wx.Menu()
        self.m_menuItem_about = wx.MenuItem(self.m_menu2, wx.ID_ABOUT,
                                            u"关于(&A)", wx.EmptyString,
                                            wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_about)
        self.m_menuItem_homepage = wx.MenuItem(self.m_menu2, wx.ID_ANY,
                                               u"主页(&H)", wx.EmptyString,
                                               wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_homepage)
        self.m_menuItem_feedback = wx.MenuItem(self.m_menu2, wx.ID_ANY,
                                               u"反馈建议(&F)", wx.EmptyString,
                                               wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_feedback)
        self.m_menuItem_chkUpdate = wx.MenuItem(self.m_menu2, wx.ID_ANY,
                                                u"检查更新(&U)", wx.EmptyString,
                                                wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_chkUpdate)
        self.m_menuItem_donate = wx.MenuItem(self.m_menu2, wx.ID_ANY,
                                             u"捐赠(&D)", wx.EmptyString,
                                             wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_donate)

        self.m_menubar1.Append(self.m_menu2, u"帮助(&H)")

        self.SetMenuBar(self.m_menubar1)

        bSizer1 = wx.BoxSizer(wx.VERTICAL)

        self.m_panel1 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition,
                                 wx.DefaultSize, wx.TAB_TRAVERSAL)
        bSizer4 = wx.BoxSizer(wx.HORIZONTAL)

        bSizer5 = wx.BoxSizer(wx.VERTICAL)

        self.m_tree = wx.TreeCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition, wx.Size(200, -1),
            style=wx.TR_DEFAULT_STYLE|wx.NO_BORDER|wx.TR_NO_LINES\
                |wx.TR_FULL_ROW_HIGHLIGHT#|wx.TR_HIDE_ROOT
        )

        self.m_tree.SetBackgroundColour(wx.Colour(218, 223, 230))
        self.m_tree_root = self.m_tree.AddRoot(u"hosts")
        self.m_tree_common = self.m_tree.AppendItem(self.m_tree_root,
                                                    lang.trans("common_hosts"))
        self.m_tree_origin = self.m_tree.AppendItem(self.m_tree_root,
                                                    lang.trans("origin_hosts"))
        self.m_tree_local = self.m_tree.AppendItem(self.m_tree_root,
                                                   lang.trans("local_hosts"))
        self.m_tree_online = self.m_tree.AppendItem(self.m_tree_root,
                                                    lang.trans("online_hosts"))
        self.m_tree.SetItemTextColour(self.m_tree_root, "#999999")
        self.m_tree.SetItemTextColour(self.m_tree_common, "#3333ff")
        self.m_tree.SetItemTextColour(self.m_tree_local, "#999999")
        self.m_tree.SetItemTextColour(self.m_tree_online, "#999999")
        self.m_tree.ExpandAll()
        bSizer5.Add(self.m_tree, 1, wx.ALL | wx.EXPAND, 0)

        self.image_list = wx.ImageList(16, 16)
        self.ico_folder_idx = self.image_list.Add(
            wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16, 16)))
        self.ico_folder_open_idx = self.image_list.Add(
            wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, (16, 16)))
        self.ico_file_idx = self.image_list.Add(
            wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER,
                                     (16, 16)))
        self.ico_colors_idx = []
        for i, icon in enumerate(co.ICONS):
            self.ico_colors_idx.append(
                self.image_list.Add(co.GetMondrianBitmap(i)))

        self.m_tree.AssignImageList(self.image_list)

        for item_idx in (self.m_tree_root, self.m_tree_local,
                         self.m_tree_online):
            self.m_tree.SetItemImage(item_idx, self.ico_folder_idx,
                                     wx.TreeItemIcon_Normal)
            self.m_tree.SetItemImage(item_idx, self.ico_folder_open_idx,
                                     wx.TreeItemIcon_Expanded)

        self.m_staticline_left_bottom = wx.StaticLine(self.m_panel1, wx.ID_ANY,
                                                      wx.DefaultPosition,
                                                      wx.DefaultSize,
                                                      wx.LI_HORIZONTAL)
        bSizer5.Add(self.m_staticline_left_bottom, 0, wx.EXPAND | wx.ALL, 0)

        bSizer61 = wx.BoxSizer(wx.HORIZONTAL)

        self.m_btn_add = wx.BitmapButton(self.m_panel1, wx.ID_ADD,
                                         co.GetMondrianBitmap(fn="add"),
                                         wx.DefaultPosition, wx.DefaultSize,
                                         wx.BU_AUTODRAW | wx.NO_BORDER)
        self.m_btn_add.SetToolTipString(u"添加")
        bSizer61.Add(self.m_btn_add, 0,
                     wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5)

        self.m_btn_refresh = wx.BitmapButton(
            self.m_panel1, wx.ID_REFRESH,
            co.GetMondrianBitmap(fn="arrow_refresh"), wx.DefaultPosition,
            wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER)
        self.m_btn_add.SetToolTipString(u"刷新")
        bSizer61.Add(self.m_btn_refresh, 0,
                     wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5)

        self.m_btn_edit_info = wx.BitmapButton(
            self.m_panel1, wx.ID_EDIT, co.GetMondrianBitmap(fn="pencil"),
            wx.DefaultPosition, wx.DefaultSize, wx.BU_AUTODRAW | wx.NO_BORDER)
        self.m_btn_add.SetToolTipString(u"编辑")
        bSizer61.Add(self.m_btn_edit_info, 0,
                     wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5)

        self.m_btn_del = wx.BitmapButton(self.m_panel1, wx.ID_DELETE,
                                         co.GetMondrianBitmap(fn="delete"),
                                         wx.DefaultPosition, wx.DefaultSize,
                                         wx.BU_AUTODRAW | wx.NO_BORDER)
        self.m_btn_del.SetToolTipString(u"删除")
        bSizer61.Add(self.m_btn_del, 0,
                     wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5)

        bSizer5.Add(bSizer61, 0, wx.EXPAND, 5)

        bSizer4.Add(bSizer5, 1, wx.EXPAND, 5)

        self.m_staticline_main = wx.StaticLine(self.m_panel1, wx.ID_ANY,
                                               wx.DefaultPosition,
                                               wx.DefaultSize, wx.LI_VERTICAL)
        bSizer4.Add(self.m_staticline_main, 0, wx.EXPAND | wx.ALL, 0)

        bSizer6 = wx.BoxSizer(wx.VERTICAL)

        self.m_textCtrl_content = self.makeTextCtrl(bSizer6)

        bSizer7 = wx.BoxSizer(wx.HORIZONTAL)

        self.m_panel3 = wx.Panel(self.m_panel1, wx.ID_ANY, wx.DefaultPosition,
                                 wx.DefaultSize, wx.TAB_TRAVERSAL)
        bSizer71 = wx.BoxSizer(wx.HORIZONTAL)

        #        self.m_btn_save = buttons.GenBitmapTextButton(self.m_panel3, wx.ID_SAVE, co.GetMondrianBitmap(fn="disk"), u"保存")
        #        bSizer71.Add(self.m_btn_save, 0, wx.ALL, 0)

        self.m_panel3.SetSizer(bSizer71)
        self.m_panel3.Layout()
        bSizer71.Fit(self.m_panel3)
        bSizer7.Add(self.m_panel3, 1, wx.EXPAND | wx.ALL, 5)

        #        self.m_btn_apply = buttons.GenBitmapTextButton(self.m_panel1, wx.ID_APPLY,
        #            co.GetMondrianBitmap(fn="accept"), u"应用",
        #            size=wx.Size(-1, 24),
        #            style=wx.BU_AUTODRAW|wx.STATIC_BORDER)
        #        self.m_btn_apply = wx.Button(self.m_panel1, wx.ID_APPLY, u"应用", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_btn_apply = wx.BitmapButton(self.m_panel1, wx.ID_APPLY,
                                           co.GetMondrianBitmap(fn="accept"),
                                           wx.DefaultPosition, wx.Size(60, -1),
                                           wx.BU_AUTODRAW | wx.SIMPLE_BORDER)
        self.m_btn_apply.SetToolTipString(u"应用当前 hosts 方案")
        bSizer7.Add(self.m_btn_apply, 0, wx.ALL, 5)

        if cls_TaskBarIcon and os.name == "nt":
            # ubuntu 10.04 下点击这个图标时会报错,图标的菜单无法正常工作
            # ubuntu 11.04 下这个图标总是无法显示
            # 由于跨平台问题,暂时决定只在 windows 下显示快捷的任务栏图标
            # 参见:http://stackoverflow.com/questions/7144756/wx-taskbaricon-on-ubuntu-11-04
            self.m_btn_exit = buttons.GenBitmapTextButton(
                self.m_panel1, wx.ID_CLOSE, co.GetMondrianBitmap(fn="door"),
                u"隐藏")
            #            self.m_btn_exit = wx.Button(self.m_panel1, wx.ID_CLOSE, u"隐藏", wx.DefaultPosition, wx.DefaultSize, 0)
            bSizer7.Add(self.m_btn_exit, 0, wx.ALL, 5)

        self.m_staticline_right_bottom = wx.StaticLine(self.m_panel1,
                                                       wx.ID_ANY,
                                                       wx.DefaultPosition,
                                                       wx.DefaultSize,
                                                       wx.LI_HORIZONTAL)
        bSizer6.Add(self.m_staticline_right_bottom, 0, wx.EXPAND | wx.ALL, 0)

        bSizer6.Add(bSizer7, 0, wx.EXPAND, 5)

        bSizer4.Add(bSizer6, 5, wx.EXPAND, 5)

        self.m_panel1.SetSizer(bSizer4)
        self.m_panel1.Layout()
        bSizer4.Fit(self.m_panel1)
        bSizer1.Add(self.m_panel1, 1, wx.EXPAND | wx.ALL, 0)

        self.SetSizer(bSizer1)
        self.Layout()

        self.Centre(wx.BOTH)

        self.font_bold = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
        self.font_bold.SetWeight(wx.BOLD)
        self.font_normal = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
        self.font_normal.SetWeight(wx.NORMAL)

        self.font_mono = wx.Font(10,
                                 wx.ROMAN,
                                 wx.NORMAL,
                                 wx.NORMAL,
                                 faceName="Courier New")
Beispiel #3
0
    def updateIcon(self):

        self.SetIcon(
            co.GetMondrianIcon(self.main_frame.current_using_hosts.icon_idx),
            self.main_frame.default_title)
Beispiel #4
0
    def setMainFrame(self, main_frame):

        self.main_frame = main_frame
        self.SetIcon(co.GetMondrianIcon(), self.main_frame.default_title)
        self.Bind(wx.EVT_MENU, self.main_frame.OnAbout, id=self.ID_About)
Beispiel #5
0
    def __init__(self,
                 parent=None,
                 id=wx.ID_ANY,
                 title="SwitchHost!",
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.DEFAULT_FRAME_STYLE,
                 cls_TaskBarIcon=None):
        wx.Frame.__init__(self, parent, id, title, pos, size, style)

        self.SetIcon(co.GetMondrianIcon())
        self.taskbar_icon = cls_TaskBarIcon(self)
        #        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)

        self.m_menubar1 = wx.MenuBar(0)
        self.m_menu1 = wx.Menu()
        self.m_menuItem_new = wx.MenuItem(self.m_menu1, wx.ID_NEW, u"新建(&N)",
                                          wx.EmptyString, wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_new)
        self.m_menu1.AppendSeparator()
        self.m_menuItem_exit = wx.MenuItem(self.m_menu1, wx.ID_EXIT, u"退出(&X)",
                                           wx.EmptyString, wx.ITEM_NORMAL)
        self.m_menu1.AppendItem(self.m_menuItem_exit)

        self.m_menubar1.Append(self.m_menu1, u"文件(&F)")

        self.m_menu2 = wx.Menu()
        self.m_menuItem_about = wx.MenuItem(self.m_menu2, wx.ID_ABOUT,
                                            u"关于(&A)", wx.EmptyString,
                                            wx.ITEM_NORMAL)
        self.m_menu2.AppendItem(self.m_menuItem_about)

        self.m_menubar1.Append(self.m_menu2, u"帮助(&H)")

        self.SetMenuBar(self.m_menubar1)

        bSizer1 = wx.BoxSizer(wx.VERTICAL)

        self.m_panel1 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition,
                                 wx.DefaultSize, wx.TAB_TRAVERSAL)
        bSizer4 = wx.BoxSizer(wx.HORIZONTAL)

        bSizer5 = wx.BoxSizer(wx.VERTICAL)

        self.m_list = wx.ListCtrl(self.m_panel1, wx.ID_ANY, wx.DefaultPosition,
                                  wx.Size(160, 320), wx.LC_REPORT)
        bSizer5.Add(self.m_list, 0, wx.ALL | wx.EXPAND, 5)

        bSizer61 = wx.BoxSizer(wx.HORIZONTAL)

        self.m_btn_add = buttons.GenBitmapTextButton(
            self.m_panel1, wx.ID_ADD, co.GetMondrianBitmap(fn="add"), u"添加")
        bSizer61.Add(self.m_btn_add, 0, wx.ALL, 5)

        self.m_btn_del = buttons.GenBitmapTextButton(
            self.m_panel1, wx.ID_DELETE, co.GetMondrianBitmap(fn="delete"),
            u"删除")
        bSizer61.Add(self.m_btn_del, 0, wx.ALL, 5)

        bSizer5.Add(bSizer61, 1, wx.EXPAND, 5)

        bSizer4.Add(bSizer5, 0, wx.EXPAND, 5)

        bSizer6 = wx.BoxSizer(wx.VERTICAL)

        self.m_textCtrl_content = wx.TextCtrl(
            self.m_panel1, self.ID_HOSTS_TEXT, wx.EmptyString,
            wx.DefaultPosition, wx.DefaultSize,
            wx.TE_MULTILINE | wx.TE_RICH2 | wx.TE_PROCESS_TAB | wx.HSCROLL)
        self.m_textCtrl_content.SetMaxLength(0)
        bSizer6.Add(self.m_textCtrl_content, 1, wx.ALL | wx.EXPAND, 5)

        bSizer7 = wx.BoxSizer(wx.HORIZONTAL)

        self.m_panel3 = wx.Panel(self.m_panel1, wx.ID_ANY, wx.DefaultPosition,
                                 wx.DefaultSize, wx.TAB_TRAVERSAL)
        bSizer71 = wx.BoxSizer(wx.HORIZONTAL)

        #        self.m_btn_save = buttons.GenBitmapTextButton(self.m_panel3, wx.ID_SAVE, co.GetMondrianBitmap(fn="disk"), u"保存")
        #        bSizer71.Add(self.m_btn_save, 0, wx.ALL, 0)

        self.m_panel3.SetSizer(bSizer71)
        self.m_panel3.Layout()
        bSizer71.Fit(self.m_panel3)
        bSizer7.Add(self.m_panel3, 1, wx.EXPAND | wx.ALL, 5)

        self.m_btn_apply = buttons.GenBitmapTextButton(
            self.m_panel1, wx.ID_APPLY, co.GetMondrianBitmap(fn="accept"),
            u"应用")
        #        self.m_btn_apply = wx.Button(self.m_panel1, wx.ID_APPLY, u"应用", wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer7.Add(self.m_btn_apply, 0, wx.ALL, 5)

        if cls_TaskBarIcon and os.name == "nt":
            # ubuntu 10.04 下点击这个图标时会报错,图标的菜单无法正常工作
            # ubuntu 11.04 下这个图标总是无法显示
            # 由于跨平台问题,暂时决定只在 windows 下显示快捷的任务栏图标
            # 参见:http://stackoverflow.com/questions/7144756/wx-taskbaricon-on-ubuntu-11-04
            self.m_btn_exit = buttons.GenBitmapTextButton(
                self.m_panel1, wx.ID_CLOSE, co.GetMondrianBitmap(fn="door"),
                u"隐藏")
            #            self.m_btn_exit = wx.Button(self.m_panel1, wx.ID_CLOSE, u"隐藏", wx.DefaultPosition, wx.DefaultSize, 0)
            bSizer7.Add(self.m_btn_exit, 0, wx.ALL, 5)

        bSizer6.Add(bSizer7, 0, wx.EXPAND, 5)

        bSizer4.Add(bSizer6, 1, wx.EXPAND, 5)

        self.m_panel1.SetSizer(bSizer4)
        self.m_panel1.Layout()
        bSizer4.Fit(self.m_panel1)
        bSizer1.Add(self.m_panel1, 1, wx.EXPAND | wx.ALL, 0)

        self.SetSizer(bSizer1)
        self.Layout()

        self.Centre(wx.BOTH)

        self.font_bold = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
        self.font_bold.SetWeight(wx.BOLD)
        self.font_normal = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
        self.font_normal.SetWeight(wx.NORMAL)

        self.font_mono = wx.Font(10,
                                 wx.ROMAN,
                                 wx.NORMAL,
                                 wx.NORMAL,
                                 faceName="Courier New")
Beispiel #6
0
    def updateIcon(self):

        co.log("update icon")
        if self.current_using_hosts:
            self.SetIcon(co.GetMondrianIcon(self.current_using_hosts.icon_idx))
            self.taskbar_icon.updateIcon()