Exemplo n.º 1
0
class StartpageWindow(wx.Frame):
    """Main class of sc2mafia the start page, the create game page.
    All GUI logic is here.
    """

    def __init__(self, parent, id, title, style):
        """Construct the GUI from config file, and bind GUI events to
        their handlers.

        """
        # 读取sc2mafia.cfg
        self.readFromCfg()
        # 调用基类的构造函数
        wx.Frame.__init__(self, parent, wx.ID_ANY, title, size=self.framesize, style=style)
        # 加载资源
        # self.resin = Resin(os.path.join(homepath,
        #        'res', self.prefer.getValue("iconset")))
        self.resin = Resin()
        # 图标
        self.SetIcon(self.resin.getIcon("notalon"))
        # 提示
        self.tips = wx.CreateFileTipProvider("Tips.txt", 0)
        self.showtips = int(self.config.get("other", "showtips"))
        if self.showtips:
            wx.CallAfter(self.ShowTips)  # 显示Tips的同时显示主界面
            # self.ShowTips()  # 与上面相反,显示Tips之后才显示主界面
        # 创建MenuBar
        self.createMenuBar()
        # 创建ToolBar
        self.createToolBar()
        # 创建StatusBar
        self.createStatusBar()
        # 创建主显示栏
        self.createMainWindow()
        # 绑定关闭窗口的方法
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
        # 创建TaskBarIcon
        self.tbIcon = tbIcon(self)

    # -----------------创建主框架的相关函数------------------ #
    def readFromCfg(self):
        """读取配置文件

        """
        self.config = Config(os.path.join(homepath, "sc2mafia.cfg"))
        self.framesize = (int(self.config.get("frame", "width")), int(self.config.get("frame", "height")))

    def menuData(self):
        """菜单项数据

        """
        return (
            (u"程序", (u"退出", u"退出程序", self.OnCloseWindow)),
            (
                u"员工档案",
                (u"新建", u"在远程服务器新建一个员工档案", self.OnCreateStaff),
                (u"修改", u"修改一个员工档案", self.OnModifyStaff),
                (u"查看", u"查看所有员工档案", self.OnDisplayStaff),
                (u"筛选", u"筛选员工档案", self.OnFilterStaff),
            ),
            (u"工资", (u"工资单发送", "用邮件发送工资单", self.OnMailSalary)),
            (u"其他", (u"报销系统", u"在这里登录报销系统", self.OnOpenExpAccHtml)),
            (u"工具", (u"通讯录", u"快速查询通讯录的小工具", self.OnSearchAddr)),
            (
                u"帮助",
                (u"用户手册", u"用户手册", self.OnManual),
                ("", "", ""),
                (u"版权", u"本软件的版权信息", self.OnCopyRight),
                (u"关于作者", u"本软件作者的相关信息", self.OnAuthor),
                (u"关于本软件", u"本软件的相关信息", self.OnAbout),
            ),
        )

    def createMenuBar(self):
        """创建菜单栏

        """
        menuBar = wx.MenuBar()
        for eachMenuData in self.menuData():
            menuLabel = eachMenuData[0]
            menuItems = eachMenuData[1:]
            menuBar.Append(self.createMenu(menuItems), menuLabel)
            self.SetMenuBar(menuBar)

    def createMenu(self, menuData):
        """创建一个菜单 --从创建菜单栏函数中抽象出来的函数

        """
        menu = wx.Menu()
        for eachLabel, eachStatus, eachHandler in menuData:
            if not eachLabel:
                menu.AppendSeparator()
                continue
            menuItem = menu.Append(-1, eachLabel, eachStatus)
            self.Bind(wx.EVT_MENU, eachHandler, menuItem)
        return menu

    def toolBarData(self):
        """工具栏数据

        """
        return (
            (u"创建", "new.bmp", u"新建一个员工档案", self.OnCreateStaff),
            #                (u"修改", self.OnModifyStaff),
            (u"查看", "display.bmp", u"浏览", self.OnDisplayStaff),
            (u"筛选", "search.bmp", u"筛选", self.OnFilterStaff),
            ("", "", "", ""),
            (u"通讯录", "addr.bmp", u"搜索通讯录", self.OnSearchAddr),
        )

    def createToolBar(self):
        """创建工具栏

        """
        toolBar = self.CreateToolBar()
        for each in self.toolBarData():
            self.createSimpleTool(toolBar, *each)
        toolBar.Realize()

    def createSimpleTool(self, toolbar, label, filename, help, handler):
        """创建一个工具按钮  --从创建工具栏函数中抽象出来的函数

        """
        if not label:
            toolbar.AddSeparator()
            return
        bmp = wx.Image(filename, wx.BITMAP_TYPE_BMP).ConvertToBitmap()
        tool = toolbar.AddSimpleTool(-1, bmp, label, help)
        self.Bind(wx.EVT_MENU, handler, tool)

    def createMainWindow(self):
        """创建主显示窗口

        """
        pass

    # 显示每日提示
    def ShowTips(self):
        """Shows the tips window on startup; returns False if the option to
        turn off tips is checked.

        """
        # constructs the tip (wx.ShowTip), which returns whether or not the
        # user checked the 'show tips' box
        if wx.ShowTip(None, self.tips, True):
            btmp = 1
            print 1
        else:
            btmp = 0
            print 0
        self.config.set("other", "showtips", btmp)
        return self.config.get("other", "showtips")

    # ----------------------主框架的事件响应函数------------------------#
    def OnCreateStaff(self, event):
        pass

    def OnModifyStaff(self, event):
        pass

    def OnDisplayStaff(self, event):
        pass

    def OnFilterStaff(self, event):
        pass

    def OnMailSalary(self, event):
        pass

    def OnOpenExpAccHtml(self, event):
        pass

    def OnSearchAddr(self, event):
        pass

    def OnManual(self, event):
        pass

    def OnCopyRight(self, event):
        pass

    def OnAuthor(self, event):
        pass

    def OnAbout(self, event):
        pass

    def createStatusBar(self):
        self.statusBar = self.CreateStatusBar()
        self.statusBar.SetFieldsCount(3)
        self.statusBar.SetStatusWidths([-1, -2, -3])

    # Sash位置变动
    def OnSashPosChanged(self, event):
        """Handler for when the splitter sash,
        who divided the `tree` and the `content`, is moved.

        """
        pass

    #        pos = self.splitter.GetSashPosition()
    #        self.config.setValue("sashposition", pos)

    def OnSelChanged(self):
        pass

    # 关闭主框架,清理资源 # TODO:devo
    def OnCloseWindow(self, event):
        self.tbIcon.Destroy()
        self.Destroy()
Exemplo n.º 2
0
import time
import datetime
import base64
from config.config import Config

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print '''Usage: %s option value

OPTIONS:
ip:              ip address (need restart)
port:            port number (need restart)
''' % sys.argv[0]
        sys.exit()
    
    data_path = os.path.join(os.path.dirname(__file__), 'data')
    config = Config(data_path + '/config.ini')

    option, value = sys.argv[1:]
    if option == 'ip':
        if value != '*' and not is_valid_ip(value):
            print 'Error: %s is not a valid IP address' % value
            sys.exit(-1)
        config.set('server', 'ip', value)
    elif option == 'port':
        port = int(value)
        if not port > 0 and port < 65535:
            print 'Error: port number should between 0 and 65535'
            sys.exit(-1)
        config.set('server', 'port', value)