Example #1
0
    def __init__(self, parent, debug=False):

        Tix.Tk.__init__(self, parent)

        self.parent = parent
        self.option_add("*Font", "PMingLiU 13")
        ttk.Style().configure('.', font=tkFont.Font(family="PMingLiU", size=13))
        self.tk_setPalette(
                background=u'AntiqueWhite1',
                foreground=u'black',
                selectColor='white',
                activeForeground='black',
                selectBackground='black',
                selectForeground='yellow',
                disabledForeground='gray',
        )


        _ = Info()
        _.parent = self
        _.debug = debug # For console messages and English GUI
        _.font = u"NSimSun"
        _.loc = localize # Translation to Chinese
        _.dbm = dbm.db_manager() # Database API methods
        _.curr = Info() # For storage current company, list ID's, etc.
        _.getExtWin = getExtWin
        self._ = _


        # SET LANGUAGE SELECTION
        self.lang_select = Tix.StringVar()
        def switch_language(*args):
            new_lang = self.lang_select.get()
            settings.update(language=new_lang)
            setLang(new_lang)
        self.lang_select.trace_variable('w', switch_language)
        self.lang_select.set(settings.load().get(u'language', u'English'))


        # SET AUTO UPDATE OPTION
        self.auto_update_check = Tix.BooleanVar()
        self.auto_update_check.set(settings.load().get(u'auto_update_check', True))
        def switch_auto_update(*args):
            new_bool = not settings.load()[u'auto_update_check']
            settings.update(auto_update_check=new_bool)
        self.auto_update_check.trace_variable('w', switch_auto_update)



        #
        # SET UP MENU BAR
        #
        menubar = Tix.Menu(self)

        # FILE MENU OPTIONS: LOAD, SAVE, EXIT...
        filemenu = Tix.Menu(menubar, tearoff=0)
#        filemenu.add_command(label=_.loc(u"Change Database", 1), command=self.change_db)
        filemenu.add_command(label=_.loc(u"Exit", 1), command=self.endsession)
        menubar.add_cascade(label=_.loc(u"Main", 1), menu=filemenu)

        # REPORT MENU OPTIONS
        reportmenu = Tix.Menu(menubar, tearoff=0)
        reportmenu.add_command(label=u"Change location for saving reports",
                               command=set_report_location)
        reportmenu.add_command(label=u"Activity Report (PDF)",
                               command=lambda:activity_report.main(_))
        reportmenu.add_command(label=u"ASE Product QC (PDF)",
                               command=lambda:product_QC_report.main(_))
        reportmenu.add_command(label=u"Save client shipments to Excel (6 months).",
                               command=lambda:sales_shipments_to_excel(_))
        reportmenu.add_command(label=u"Save incoming shipments to Excel (6 months).",
                               command=lambda:purchases_shipments_to_excel(_))
        reportmenu.add_command(label=u"Save all products to Excel file.",
                               command=lambda:save_products_to_excel(_))

        reportmenu.add_command(label=u"Save all static data to an Excel file.",
                               command=lambda:staticDB2excel(_))
        reportmenu.add_command(label=u"Save all active data to an Excel file.",
                               command=lambda:activeDB2excel(_))

#        reportmenu.add_command(label="Report3", command=None, state=Tk.DISABLED)
#        reportmenu.add_command(label="Report4", command=None, state=Tk.DISABLED)
        menubar.add_cascade(label=_.loc(u"Reports", 1), menu=reportmenu)


        # FONT MENU OPTIONS
#        def setFont():
#            self.option_add("*Font", fontsize.get())
#        fontmenu = Tix.Menu(menubar, tearoff=0)
#        fontsize = Tix.StringVar()
#        fontmenu.add_radiobutton(label=u'Verdana 12', variable=fontsize,
#                                 command=setFont, value=u'Verdana 12')
#        fontmenu.add_radiobutton(label=u'PMingLiU 13', variable=fontsize,
#                                 command=setFont, value=u'PMingLiU 13')
#        fontmenu.add_radiobutton(label=u'NSimSun 13', variable=fontsize,
#                                 command=setFont, value=u'NSimSun 13')
#        menubar.add_cascade(label=_.loc(u"Font", 1), menu=fontmenu)
#        fontsize.set(u'NSimSun 13')
#        setFont()

        # SETTINGS MENU OPTIONS
        settingsmenu = Tix.Menu(menubar, tearoff=0)
        lang_menu = Tix.Menu(settingsmenu, tearoff=0)
        settingsmenu.add_cascade(label=_.loc(u"Language", 1), menu=lang_menu)
        update_menu = Tix.Menu(settingsmenu, tearoff=0)
        settingsmenu.add_cascade(label=_.loc(u"Update", 1), menu=update_menu)
        lang_menu.add_radiobutton(label=u'繁體中文', variable=self.lang_select,
            value=u'Chinese',
            selectcolor=u'black')
        lang_menu.add_radiobutton(label=u'English', variable=self.lang_select,
            value=u'English',
            selectcolor=u'black')
        update_menu.add_command(label=_.loc(u"Check for update", 1), command=self.version_update)
        update_menu.add_separator()
        update_menu.add_checkbutton(label=_.loc(u'Auto check for updates',1),
            onvalue=True, offvalue=False, variable=self.auto_update_check,
            selectcolor=u'black')
        settingsmenu.add_separator()
        settingsmenu.add_command(label=_.loc(u'PO List Ordering', 1),
            command=lambda: setPOorder(_))
        menubar.add_cascade(label=_.loc(u"Settings", 1), menu=settingsmenu)



        # HELP MENU OPTIONS
        helpmenu = Tix.Menu(menubar, tearoff=0)
        helpmenu.add_command(label=_.loc(u"About", 1), command=about)
        menubar.add_cascade(label=_.loc(u"Help", 1), menu=helpmenu)

        #
        menubar.add_separator()
        menubar.add_separator()
        menubar.add_command(label=u'DATABASE={}'.format(_.dbm.dbpath),
                            background=u'LightSkyBlue1')
        self.menubar = menubar


        # SET AND SHOW MENU
        self.config(menu=menubar)
        try:
            self.geometry(settings.load()['geometry'])
        except KeyError:
            #Default geometry
            self.geometry('1240x800')

        # SET MAIN NOTEBOOK
        nb = ttk.Notebook()
        #---------- Add PO (main) frame
        #XXX: merging Purchases & Sales frames to PO frame in version 0.3
        _.po_frame = ttk.Frame(nb)
        frames.po_frame.create(_)
        nb.add(_.po_frame, text='PO')
        #---------- Add Product frame
        _.product_frame = ttk.Frame(nb)
        frames.product_frame.create(_)
        nb.add(_.product_frame, text=_.loc(u'Products',1))
        #---------- Add Pending info frame
#        frame = ttk.Frame(nb)
#        frame_pending.get_pending_frame(frame, dmv2)
#        nb.add(frame, text='Pending', underline=2)
        #TODO:---------- Add In-Out Records info frame
#        frame = ttk.Frame(nb)
#        frame_pending.get_tablet_frame(frame, dmv2)
#        nb.add(frame, text='Tablet Data', underline=0)
        #TODO:---------- Add Company data edit frame
#        frame = ttk.Frame(nb)
#        frame_company_editor.get_company_editor(frame, dmv2)
#        nb.add(frame, text='Catalog', underline=0)
        #TODO:---------- Add Warehouse management frame


        #--------- Set arrangement of notebook frames
        nb.pack(side='right', fill='both', expand=1, padx=2, pady=3)

        if self.auto_update_check.get():
            check_for_update.update(self._, settings, silent=True)
Example #2
0
 def version_update(self):
     check_for_update.update(self._, settings)