def __init__(self, *args, **kwargs): ilogger.debug("Init: launching configuration window.") Tk.__init__(self, *args, **kwargs) frm = Frame(self) # container.columnconfigure(1, minsize=150) frm.grid(padx=20, pady=20) # bind shared data between windows self.key = StringVar() self.status = StringVar() self.status.set("Please provide decryption key") self.cur_manager = BusyManager(self) infoFrm = Frame(frm) infoFrm.grid(row=0, column=0, sticky="snew", padx=10, pady=10) img = Image.open("./icons/PadLock-icon.png") logo = ImageTk.PhotoImage(img) logoImg = Label(infoFrm, image=logo) logoImg.image = logo logoImg.grid(row=0, column=0, sticky="snew", padx=10, pady=10) actionFrm = LabelFrame(frm, text="Babel password") actionFrm.grid(row=0, column=1, sticky="snew", padx=10, pady=10) # actionFrm.columnconfigure(1, minsize=250) actionFrm.rowconfigure(1, minsize=10) actionFrm.rowconfigure(3, minsize=10) keyEnt = Entry(actionFrm, textvariable=self.key, show="*") keyEnt.grid(row=0, column=0, columnspan=2, sticky="snew", padx=5, pady=3) self.statusLbl = Label(actionFrm, textvariable=self.status, anchor=CENTER) self.statusLbl.grid(row=2, column=0, columnspan=2, sticky="snew", padx=10, pady=10) configBtn = Button(actionFrm, text="unlock", command=self.launch_config) configBtn.grid(row=4, column=0, sticky="snew", padx=10, pady=10) cancelBtn = Button(actionFrm, text="cancel", command=self.destroy) cancelBtn.grid(row=4, column=1, sticky="snw", padx=10, pady=10)
def __init__(self, parent, controller, **app_data): self.parent = parent Frame.__init__(self, parent) self.controller = controller self.app_data = app_data self.activeW = app_data['activeW'] self.activeW.trace('w', self.observer) self.system = app_data['system'] self.system.trace('w', self.system_observer) self.max_height = int((self.winfo_screenheight() - 200)) self.cur_manager = BusyManager(self) # icons self.runImg = app_data['img']['runM'] self.helpImg = app_data['img']['help'] # variables self.date_from = StringVar() self.date_to = StringVar() self.library = StringVar() self.report = IntVar() # layout self.rowconfigure(3, minsize=15) # register date validation self.vldt = (self.register(self.onValidateDate), '%i', '%d', '%P') # widgets genRepBtn = Button(self, image=self.runImg, command=self.generate_report) genRepBtn.grid(row=0, column=0, sticky='sw', padx=20, pady=5) self.createToolTip(genRepBtn, 'generate report') helpBtn = Button(self, image=self.helpImg, command=self.help) helpBtn.grid(row=1, column=0, sticky='sw', padx=20, pady=5) self.createToolTip(helpBtn, 'help') # criteria frame critFrm = LabelFrame(self, text='report wizard') critFrm.grid(row=0, column=1, rowspan=20, sticky='snew', padx=25, pady=10) critFrm.columnconfigure(0, minsize=20) critFrm.columnconfigure(5, minsize=20) critFrm.rowconfigure(14, minsize=10) Label(critFrm, text='criteria:', font=RBFONT).grid(row=1, column=1, columnspan=4, sticky='snw', padx=2, pady=10) Label(critFrm, text='date from:').grid(row=2, column=1, sticky='sne', padx=2, pady=5) dateFromEnt = Entry(critFrm, textvariable=self.date_from, font=RFONT, width=17, validate='key', validatecommand=self.vldt) self.createToolTip(dateFromEnt, 'YYYY-MM-DD') dateFromEnt.grid(row=2, column=2, sticky='snw', padx=2, pady=5) Label(critFrm, text='to:').grid(row=2, column=3, sticky='snew', padx=2, pady=5) dateToEnt = Entry(critFrm, textvariable=self.date_to, font=RFONT, width=17, validate='key', validatecommand=self.vldt) dateToEnt.grid(row=2, column=4, sticky='snw', padx=2, pady=5) self.createToolTip(dateToEnt, 'YYYY-MM-DD') Label(critFrm, text='library:').grid(row=3, column=1, sticky='sne', padx=2, pady=5) self.libCbx = Combobox(critFrm, textvariable=self.library, font=RFONT, width=15, state='readonly') self.libCbx.grid(row=3, column=2, sticky='snew', padx=2, pady=5) # users Label(critFrm, text='users:').grid(row=4, column=1, sticky='ne', padx=2, pady=5) scrollbar = Scrollbar(critFrm, orient=VERTICAL) scrollbar.grid(row=4, column=3, sticky='snw', pady=5) self.userLst = Listbox(critFrm, font=RFONT, selectmode=EXTENDED, width=15, yscrollcommand=scrollbar.set) self.userLst.grid(row=4, column=2, sticky='snew', pady=5) scrollbar.config(command=self.userLst.yview) Separator(critFrm, orient=HORIZONTAL).grid(row=5, column=1, columnspan=4, sticky='snew', padx=2, pady=15) # report types Label(critFrm, text='report type:', font=RBFONT).grid(row=6, column=1, columnspan=4, sticky='snw', padx=2, pady=10) fyBtn = Radiobutton(critFrm, text='current FY summary', variable=self.report, value=1) fyBtn.grid(row=7, column=1, columnspa=2, sticky='snw', padx=2, pady=5) audnBtn = Radiobutton(critFrm, text='detailed breakdown', variable=self.report, value=2) audnBtn.grid(row=8, column=1, columnspan=2, sticky='snw', padx=2, pady=5) branchBtn = Radiobutton(critFrm, text='individual branches report', variable=self.report, value=3) branchBtn.grid(row=9, column=1, columnspan=2, sticky='snw', padx=2, pady=5)
def __init__(self, parent, source_cart_id, source_cart_name, **app_data): self.parent = parent self.source_cart_id = source_cart_id self.source_cart_name = source_cart_name self.app_data = app_data self.profile_idx = self.app_data['profile_idx'] top = self.top = Toplevel(master=self.parent) top.title('Copy cart') self.cur_manager = BusyManager(self.top) # variables self.system = StringVar() self.profile = StringVar() self.profiles = sorted(self.profile_idx.values()) self.new_cart_name = StringVar() self.status = StringVar() # icons saveImg = self.app_data['img']['save'] closeImg = self.app_data['img']['delete'] # register cart name validator self.vlcn = (top.register(self.onValidateCartName), '%P') frm = Frame(top) frm.grid(row=0, column=0, sticky='snew', padx=20, pady=20) Label(frm, text=f'Copying "{self.source_cart_name}"').grid(row=0, column=0, columnspan=4, padx=10, pady=10, sticky='snew') Label(frm, text='system:').grid(row=1, column=0, sticky='snw', padx=10, pady=5) systemCbx = Combobox(frm, font=RFONT, values=['NYPL', 'BPL'], state='readonly', textvariable=self.system) systemCbx.grid(row=2, column=0, sticky='snew', padx=10, pady=5) Label(frm, text='profile:').grid(row=1, column=1, sticky='snw', padx=10, pady=5) profileCbx = Combobox(frm, font=RFONT, values=self.profiles, state='readonly', textvariable=self.profile) profileCbx.grid(row=2, column=1, sticky='snew', padx=10, pady=5) Label(frm, text='new cart name:').grid(row=3, column=0, columnspan=2, sticky='snw', padx=10, pady=5) cart_nameEnt = Entry(frm, font=RFONT, textvariable=self.new_cart_name, validate="key", validatecommand=self.vlcn) cart_nameEnt.grid(row=4, column=0, columnspan=2, sticky='snew', padx=10, pady=10) statusLbl = Label(frm, textvariable=self.status) statusLbl.grid(row=5, column=0, columnspan=2, sticky='snew', padx=10, pady=5) okBtn = Button(frm, image=saveImg, command=self.create_copy) okBtn.grid(row=6, column=0, sticky='sne', padx=25, pady=10) cancelBtn = Button(frm, image=closeImg, command=top.destroy) cancelBtn.grid(row=6, column=1, sticky='snw', padx=25, pady=10)
def __init__(self, parent, controller, **app_data): self.parent = parent Frame.__init__(self, parent) self.controller = controller self.app_data = app_data self.activeW = app_data['activeW'] self.activeW.trace('w', self.observer) self.system = app_data['system'] self.system.trace('w', self.observer) self.profile = app_data['profile'] self.profile.trace('w', self.observer) self.profile_idx = app_data['profile_idx'] self.active_id = app_data['active_id'] self.cur_manager = BusyManager(self) # local variables self.status_filter = StringVar() self.selected_cart_id = IntVar() self.selected_cart_name = StringVar() self.selected_cart_owner = StringVar() # images # addImg = self.app_data['img']['add'] editImg = self.app_data['img']['edit'] self.deleteImg = self.app_data['img']['delete'] self.saveImg = self.app_data['img']['save'] helpImg = self.app_data['img']['help'] viewImg = self.app_data['img']['view'] self.viewImgS = self.app_data['img']['viewS'] copyImg = self.app_data['img']['copy'] marcImg = self.app_data['img']['marc'] sheetImg = self.app_data['img']['sheet'] linkImg = self.app_data['img']['link'] self.linkImgS = self.app_data['img']['linkS'] list_height = int((self.winfo_screenheight() - 100) / 25) Label(self, text='selected: ').grid(row=0, column=0, sticky='snw', padx=10, pady=5) self.selcartLbl = Label(self, textvariable=self.selected_cart_name, font=RFONT) self.selcartLbl.grid(row=0, column=0, sticky='sne', pady=5) # carts treeview columns = ('#', 'cart', 'date', 'status', 'owner', 'link') self.cartTrv = Treeview(self, columns=columns, displaycolumns=columns, show='headings', height=list_height) # sorting columns functionality for col in columns: self.cartTrv.heading( col, text=col, command=lambda _col=col: self.treeview_sort_column( self.cartTrv, _col, False)) self.cartTrv.column('#', width=5, anchor='center') self.cartTrv.column('cart', width=350) self.cartTrv.column('date', width=130, anchor='center') self.cartTrv.column('status', width=100, anchor='center') self.cartTrv.column('owner', width=120, anchor='center') self.cartTrv.column('link', width=6, anchor='center') self.cartTrv.grid(row=1, column=0, rowspan=20, sticky='snew') # cart treeview scrollbar scrollbar = Scrollbar(self, orient="vertical", command=self.cartTrv.yview) scrollbar.grid(row=1, column=1, rowspan=20, sticky='ns') self.cartTrv.configure(yscrollcommand=scrollbar.set) self.cartTrv.bind('<ButtonRelease-1>', self.selectItem) # action buttons frame self.actionFrm = Frame(self) self.actionFrm.grid(row=1, column=2, sticky='snew', padx=5, pady=10) self.viewBtn = Button(self.actionFrm, image=viewImg, command=self.view_data) # self.viewBtn.image = self.viewImg self.viewBtn.grid(row=1, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.viewBtn, 'view cart') self.editBtn = Button(self.actionFrm, image=editImg, command=self.edit_data) # self.editBtn.image = editImg self.editBtn.grid(row=2, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.editBtn, 'edit cart') self.marcBtn = Button(self.actionFrm, image=marcImg, command=self.create_marc_file) # self.marcBtn.image = marcImg self.marcBtn.grid(row=3, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.marcBtn, 'create MARC file') self.sheetBtn = Button(self.actionFrm, image=sheetImg, command=self.create_order_sheet) # self.sheetBtn.image = sheetImg self.sheetBtn.grid(row=4, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.sheetBtn, 'create order sheet') self.copyBtn = Button(self.actionFrm, image=copyImg, command=self.copy_data) # self.copyBtn.image = copyImg self.copyBtn.grid(row=5, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.copyBtn, 'copy cart') self.linkBtn = Button(self.actionFrm, image=linkImg, command=self.link_ids) # self.linkBtn.image = linkImg self.linkBtn.grid(row=6, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.linkBtn, 'link IDs') self.deleteBtn = Button(self.actionFrm, image=self.deleteImg, command=self.delete_data) # self.deleteBtn.image = self.deleteImg self.deleteBtn.grid(row=7, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.deleteBtn, 'delete cart') self.helpBtn = Button(self.actionFrm, image=helpImg, command=self.help) # self.helpBtn.image = helpImg self.helpBtn.grid(row=8, column=0, sticky='sw', padx=10, pady=5) self.createToolTip(self.helpBtn, 'help') # cart data frame self.cartdataFrm = Frame(self) self.cartdataFrm.grid(row=1, column=3, rowspan=20, sticky='snew', padx=10, pady=5) self.cartdataTxt = Text(self.cartdataFrm, width=65, state=('disabled'), wrap=WORD, background='SystemButtonFace', borderwidth=0) self.cartdataTxt.grid(row=0, column=0, sticky='nsw')
def __init__(self, parent, **app_data): self.parent = parent self.app_data = app_data mlogger.debug('SearchView active.') self.top = Toplevel(master=self.parent) self.top.title('Search carts') self.cur_manager = BusyManager(self.top) # icons self.searchImg = self.app_data['img']['viewS'] # variables self.identifier = StringVar() self.identifier_type = StringVar() self.title = StringVar() self.title_type = StringVar() self.title_type.set('keyword') self.system = StringVar() self.library = StringVar() self.profile = StringVar() self.audn = StringVar() self.lang = StringVar() self.mattype = StringVar() self.vendor = StringVar() self.fund = StringVar() self.created_start = StringVar() self.created_end = StringVar() self.con1 = StringVar() self.con2 = StringVar() self.con3 = StringVar() self.con4 = StringVar() self.con5 = StringVar() self.con6 = StringVar() self.con7 = StringVar() self.con8 = StringVar() self.con9 = StringVar() id_values = [ 'bib #', 'blanketPO', 'ISBN', 'order #', 'other #', 'UPC', 'wlo #' ] search_types = ['keyword', 'phrase'] conjunctions = ['AND', 'OR', 'NOT', ''] self.get_comboboxes_values() date_format_msg = 'format: YYYY-MM-DD' # register validators self.vldt = (self.top.register(self.onValidateDate), '%i', '%d', '%P') # basic search frame bfrm = LabelFrame(self.top, text='Basic search') bfrm.grid(row=0, column=0, sticky='snew', padx=25, pady=25) idEnt = Entry(bfrm, font=RFONT, textvariable=self.identifier) idEnt.grid(row=0, column=0, sticky='new', padx=5, pady=15) idtypeCbx = Combobox(bfrm, font=RFONT, state='readonly', width=10, values=id_values, textvariable=self.identifier_type) idtypeCbx.grid(row=0, column=1, sticky='new', padx=5, pady=15) bsearchBtn = Button(bfrm, image=self.searchImg, command=self.basic_search) bsearchBtn.grid(row=0, column=2, sticky='new', padx=5, pady=10) self.createToolTip(bsearchBtn, 'run search') # advanced search frame afrm = LabelFrame(self.top, text='Advanced search') afrm.grid(row=1, column=0, sticky='snew', padx=25, pady=25) Label(afrm, text='title:').grid(row=0, column=1, sticky='new', padx=5, pady=15) titleEnt = Entry(afrm, font=RFONT, textvariable=self.title) titleEnt.grid(row=0, column=2, columnspan=2, sticky='new', padx=5, pady=15) titletypeCbx = Combobox(afrm, font=RFONT, state='readonly', width=10, values=search_types) titletypeCbx.grid(row=0, column=4, sticky='new', padx=5, pady=15) asearchBtn = Button(afrm, image=self.searchImg, command=self.advanced_search) asearchBtn.grid(row=0, column=5, sticky='snew', padx=5, pady=10) self.createToolTip(asearchBtn, 'run search') con1Cbx = Combobox(afrm, font=RFONT, state='readonly', width=4, textvariable=self.con1, values=conjunctions) con1Cbx.grid(row=1, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='system:').grid(row=1, column=1, sticky='new', padx=5, pady=2) systemCbx = Combobox(afrm, font=RFONT, state='readonly', width=10, values=self.system_names) systemCbx.grid(row=1, column=2, sticky='new', padx=5, pady=2) con2Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con2, values=conjunctions) con2Cbx.grid(row=2, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='library:').grid(row=2, column=1, sticky='new', padx=5, pady=2) libraryCbx = Combobox(afrm, font=RFONT, width=10, textvariable=self.library, values=self.library_names, state='readonly') libraryCbx.grid(row=2, column=2, sticky='new', padx=5, pady=2) con3Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con3, values=conjunctions) con3Cbx.grid(row=3, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='language:').grid(row=3, column=1, sticky='new', padx=5, pady=2) langCbx = Combobox(afrm, font=RFONT, width=10, textvariable=self.lang, values=self.lang_names, state='readonly') langCbx.grid(row=3, column=2, sticky='new', padx=5, pady=2) con4Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con4, values=conjunctions) con4Cbx.grid(row=4, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='vendor:').grid(row=4, column=1, sticky='new', padx=5, pady=2) vendorCbx = Combobox(afrm, font=RFONT, width=10, state='readonly', textvariable=self.vendor, values=self.vendor_names) vendorCbx.grid(row=4, column=2, sticky='new', padx=5, pady=2) con5Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con5, values=conjunctions) con5Cbx.grid(row=5, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='audience:').grid(row=5, column=1, sticky='new', padx=5, pady=2) audnCbx = Combobox(afrm, font=RFONT, width=10, state='readonly', textvariable=self.audn, values=self.audn_names) audnCbx.grid(row=5, column=2, sticky='new', padx=5, pady=2) con6Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con6, values=conjunctions) con6Cbx.grid(row=6, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='mat. type:').grid(row=6, column=1, sticky='new', padx=5, pady=2) mattypeCbx = Combobox(afrm, font=RFONT, width=10, state='readonly', textvariable=self.mattype, values=self.mattype_names) mattypeCbx.grid(row=6, column=2, sticky='new', padx=5, pady=2) con7Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con7, values=conjunctions) con7Cbx.grid(row=7, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='fund:').grid(row=7, column=1, sticky='new', padx=5, pady=2) fundCbx = Combobox(afrm, font=RFONT, width=10, state='readonly', textvariable=self.fund, values=self.fund_codes) fundCbx.grid(row=7, column=2, sticky='new', padx=5, pady=2) con8Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con8, values=conjunctions) con8Cbx.grid(row=8, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='profile:').grid(row=8, column=1, sticky='new', padx=5, pady=2) profileCbx = Combobox(afrm, font=RFONT, width=10, state='readonly', textvariable=self.profile, values=self.profile_names) profileCbx.grid(row=8, column=2, sticky='new', padx=5, pady=2) con9Cbx = Combobox(afrm, font=RFONT, width=4, state='readonly', textvariable=self.con9, values=(conjunctions[0], conjunctions[3])) con9Cbx.grid(row=9, column=0, sticky='new', padx=5, pady=2) Label(afrm, text='date:').grid(row=9, column=1, sticky='new', padx=5, pady=2) datestartEnt = Entry(afrm, font=RFONT, width=10, textvariable=self.created_start, validate="key", validatecommand=self.vldt) datestartEnt.grid(row=9, column=2, sticky='new', padx=5, pady=2) self.createToolTip(datestartEnt, date_format_msg) dateendEnt = Entry(afrm, font=RFONT, width=14, textvariable=self.created_end, validate="key", validatecommand=self.vldt) dateendEnt.grid(row=9, column=3, sticky='new', padx=5, pady=2) self.createToolTip(dateendEnt, date_format_msg)
def __init__(self, parent, cart_id=None, resource_id=None, **app_data): self.parent = parent self.app_data = app_data self.cart_id = cart_id self.rec_id = resource_id self.rec = None top = self.top = Toplevel(master=self.parent) top.title('Editing resource') self.cur_manager = BusyManager(self.top) # icons saveImg = self.app_data['img']['save'] closeImg = self.app_data['img']['delete'] # variables self.title = StringVar() self.add_title = StringVar() self.author = StringVar() self.series = StringVar() self.publisher = StringVar() self.pub_date = StringVar() self.pub_place = StringVar() self.isbn = StringVar() self.upc = StringVar() self.other_no = StringVar() self.price_list = StringVar() self.price_disc = StringVar() self.misc = StringVar() # register entries validation self.vlam = (self.top.register(self.onValidatePrice), '%i', '%d', '%P') self.vlis = (self.top.register(self.onValidateIsbn), '%i', '%d', '%P') self.vldt = (self.top.register(self.onValidateDate), '%i', '%d', '%P') self.vlup = (self.top.register(self.onValidateUpc), '%i', '%d', '%P') # layout frm = Frame(top) frm.grid(row=0, column=0, sticky='snew', padx=10, pady=10) frm.columnconfigure(3, minsize=100) Label(frm, text='title:').grid(row=0, column=0, sticky='snw') titleEnt = Entry(frm, font=RFONT, textvariable=self.title) titleEnt.grid(row=0, column=1, columnspan=3, sticky='snew', padx=5, pady=5) Label(frm, text='extra title:').grid(row=1, column=0, sticky='snw') addtitleEnt = Entry(frm, font=RFONT, textvariable=self.add_title) addtitleEnt.grid(row=1, column=1, columnspan=3, sticky='snew', padx=5, pady=5) Label(frm, text='author:').grid(row=2, column=0, sticky='snw') authorEnt = Entry(frm, font=RFONT, textvariable=self.author) authorEnt.grid(row=2, column=1, columnspan=3, sticky='snew', padx=5, pady=5) Label(frm, text='series').grid(row=3, column=0, sticky='snw') seriesEnt = Entry(frm, font=RFONT, textvariable=self.series) seriesEnt.grid(row=3, column=1, columnspan=3, sticky='snew', padx=5, pady=5) Label(frm, text='publisher:').grid(row=4, column=0, sticky='snw') publisherEnt = Entry(frm, font=RFONT, textvariable=self.publisher) publisherEnt.grid(row=4, column=1, columnspan=3, sticky='snew', padx=5, pady=5) Label(frm, text='date:').grid(row=5, column=0, sticky='snw') pubdateEnt = Entry(frm, font=RFONT, textvariable=self.pub_date, validate="key", validatecommand=self.vldt) pubdateEnt.grid(row=5, column=1, sticky='snew', padx=5, pady=5) Label(frm, text='place:').grid(row=5, column=2, sticky='sne') pubplaceEnt = Entry(frm, font=RFONT, textvariable=self.pub_place) pubplaceEnt.grid(row=5, column=3, sticky='snew', padx=5, pady=5) Label(frm, text='ISBN').grid(row=6, column=0, sticky='snw') isbnEnt = Entry(frm, font=RFONT, textvariable=self.isbn, validate="key", validatecommand=self.vlis) isbnEnt.grid(row=6, column=1, sticky='snew', padx=5, pady=5) Label(frm, text='UPC:').grid(row=6, column=2, sticky='sne') upcEnt = Entry(frm, font=RFONT, textvariable=self.upc, validate="key", validatecommand=self.vlup) upcEnt.grid(row=6, column=3, sticky='snew', padx=5, pady=5) Label(frm, text='Other #:').grid(row=7, column=0, sticky='snw') othernoEnt = Entry(frm, font=RFONT, textvariable=self.other_no) othernoEnt.grid(row=7, column=1, sticky='snew', padx=5, pady=5) Label(frm, text='misc.:').grid(row=7, column=2, sticky='sne') miscEnt = Entry(frm, font=RFONT, textvariable=self.misc) miscEnt.grid(row=7, column=3, sticky='snew', padx=5, pady=5) Label(frm, text='list price ($):').grid(row=8, column=0, sticky='snw') pricelistEnt = Entry(frm, font=RFONT, textvariable=self.price_list, validate="key", validatecommand=self.vlam) pricelistEnt.grid(row=8, column=1, sticky='snew', padx=5, pady=5) Label(frm, text='discount price ($):').grid(row=8, column=2, sticky='sne') pricediscEnt = Entry(frm, font=RFONT, textvariable=self.price_disc, validate="key", validatecommand=self.vlam) pricediscEnt.grid(row=8, column=3, sticky='snew', padx=5, pady=5) Label(frm, text='summary:').grid(row=9, column=0, sticky='snw') self.summaryTxt = Text(frm, font=RFONT, wrap='word', width=50, height=5) self.summaryTxt.grid(row=9, column=1, rowspan=3, columnspan=3, sticky='snew', padx=5, pady=5) saveBtn = Button(frm, image=saveImg, command=self.save_resource) saveBtn.grid(row=12, column=1, sticky='sne', padx=5, pady=10) cancelBtn = Button(frm, image=closeImg, command=self.top.destroy) cancelBtn.grid(row=12, column=2, sticky='snw', padx=5, pady=10) if self.rec_id is not None: # populate for edit self.get_data()
def __init__(self, parent, controller, **app_data): self.parent = parent Frame.__init__(self, parent) self.controller = controller self.app_data = app_data self.activeW = app_data['activeW'] self.activeW.trace('w', self.observer) self.profile = app_data['profile'] self.system = app_data['system'] self.system.trace('w', self.observer) list_height = int((self.winfo_screenheight() - 100) / 25) # local variables self.record = None self.all_branches = IntVar() self.all_branches.trace('w', self.branch_selection_observer) self.all_branchesLbl = StringVar() self.all_branchesLbl.set('select all') self.fund_code = StringVar() self.fund_desc = StringVar() # busy icon manager self.cur_manager = BusyManager(self) # icons addImg = self.app_data['img']['add'] editImg = self.app_data['img']['edit'] deleteImg = self.app_data['img']['delete'] saveImg = self.app_data['img']['save'] helpImg = self.app_data['img']['help'] addSImg = self.app_data['img']['addS'] removeSImg = self.app_data['img']['removeS'] # register validation self.vlfu = (self.register(self.onValidateFund), '%d', '%i', '%P') # tables list Label(self, text='Funds:').grid(row=0, column=0, sticky='nw') scrollbarA = Scrollbar(self, orient=VERTICAL) scrollbarA.grid(row=1, column=1, rowspan=40, sticky='nsw') self.fundLst = Listbox(self, font=RFONT, height=list_height, selectmode=SINGLE, yscrollcommand=scrollbarA.set) self.fundLst.bind('<Double-Button-1>', self.show_fund) self.fundLst.grid(row=1, column=0, rowspan=40, sticky='snew') scrollbarA['command'] = self.fundLst.yview # action buttons self.addBtn = Button(self, image=addImg, command=self.add_data) self.addBtn.grid(row=1, column=5, sticky='sw', padx=10, pady=10) self.editBtn = Button(self, image=editImg, command=self.edit_data) self.editBtn.grid(row=2, column=5, sticky='sw', padx=10, pady=5) self.deleteBtn = Button(self, image=deleteImg, command=self.delete_data) self.deleteBtn.grid(row=3, column=5, sticky='sw', padx=10, pady=5) self.saveBtn = Button(self, image=saveImg, command=self.insert_or_update_data) self.saveBtn.grid(row=4, column=5, sticky='sw', padx=10, pady=5) self.helpBtn = Button(self, image=helpImg, command=self.help) self.helpBtn.grid(row=5, column=5, sticky='sw', padx=10, pady=5) # details/edit frame self.detFrm = LabelFrame(self, text='Fund code and constraints') self.detFrm.grid(row=0, column=6, rowspan=40, columnspan=5, sticky='snew') # fund data self.editFrm = Frame(self.detFrm) self.editFrm.grid(row=1, column=0, rowspan=5, columnspan=2, sticky='snew', padx=2) Label(self.editFrm, text='Fund code').grid(row=0, column=0, sticky='snw', pady=5) self.fundcodeEnt = Entry(self.editFrm, font=RFONT, textvariable=self.fund_code, validate="key", validatecommand=self.vlfu) self.fundcodeEnt.grid(row=1, column=0, columnspan=3, sticky='snew', pady=5) Label(self.editFrm, text='Description').grid(row=2, column=0, sticky='snw', pady=5) self.funddescEnt = Entry(self.editFrm, font=RFONT, textvariable=self.fund_desc) self.funddescEnt.grid(row=3, column=0, rowspan=2, columnspan=3, sticky='snew', pady=5) Label(self.detFrm, text='out').grid(row=0, column=4, columnspan=2, padx=2, sticky='snw') Label(self.detFrm, text='in').grid(row=0, column=7, columnspan=2, padx=2, sticky='snw') Label(self.detFrm, text='out').grid(row=0, column=11, columnspan=2, padx=2, sticky='snw') Label(self.detFrm, text='in').grid(row=0, column=14, columnspan=2, padx=2, sticky='snw') # branches self.branchFrm = LabelFrame(self.detFrm, text='Branches') self.branchFrm.grid(row=1, column=4, rowspan=10, columnspan=5, sticky='snew', padx=5) Checkbutton(self.branchFrm, textvariable=self.all_branchesLbl, variable=self.all_branches).grid(row=0, column=0, sticky='snw') scrollbarB = Scrollbar(self.branchFrm, orient=VERTICAL) scrollbarB.grid(row=1, column=1, rowspan=20, sticky='nsw', pady=2) self.branchOutLst = Listbox(self.branchFrm, font=RFONT, height=list_height, width=14, selectmode=EXTENDED, yscrollcommand=scrollbarB.set) self.branchOutLst.grid(row=1, column=0, rowspan=20, sticky='snew', padx=2, pady=2) scrollbarB['command'] = self.branchOutLst.yview self.branchInBtn = Button( self.branchFrm, image=addSImg, command=lambda: self.add_condition( 'branchLst', self.branchOutLst, self.branchInLst, self.branchOutLst.curselection())) self.branchInBtn.grid(row=1, column=2, sticky='sw', padx=2, pady=2) self.branchOutBtn = Button( self.branchFrm, image=removeSImg, command=lambda: self.remove_condition( 'branchLst', self.branchOutLst, self.branchInLst, self.branchInLst.curselection())) self.branchOutBtn.grid(row=2, column=2, sticky='sw', padx=2, pady=2) scrollbarC = Scrollbar(self.branchFrm, orient=VERTICAL) scrollbarC.grid(row=1, column=4, rowspan=20, sticky='nsw', pady=2) self.branchInLst = Listbox(self.branchFrm, font=RFONT, width=14, height=list_height, selectmode=EXTENDED, yscrollcommand=scrollbarC.set) self.branchInLst.grid(row=1, column=3, rowspan=20, sticky='snew', padx=2, pady=2) scrollbarC['command'] = self.branchInLst.yview # library self.libraryFrm = LabelFrame(self.detFrm, text='Library') self.libraryFrm.grid(row=1, column=11, rowspan=2, columnspan=5, sticky='snew', padx=5) self.libOutLst = Listbox(self.libraryFrm, font=RFONT, width=15, height=3, selectmode=EXTENDED) self.libOutLst.grid(row=0, column=0, rowspan=3, sticky='snew', padx=2, pady=2) self.libInBtn = Button(self.libraryFrm, image=addSImg, command=lambda: self.add_condition( 'libLst', self.libOutLst, self.libInLst, self.libOutLst.curselection())) # self.libInBtn.image = addSImg self.libInBtn.grid(row=0, column=1, sticky='sw', padx=5, pady=2) self.libOutBtn = Button(self.libraryFrm, image=removeSImg, command=lambda: self.remove_condition( 'LibLst', self.libOutLst, self.libInLst, self.libInLst.curselection())) # self.libOutBtn.image = removeSImg self.libOutBtn.grid(row=1, column=1, sticky='sw', padx=5, pady=2) self.libInLst = Listbox(self.libraryFrm, font=RFONT, height=3, width=15, selectmode=EXTENDED) self.libInLst.grid(row=0, column=2, rowspan=2, sticky='snew', padx=2, pady=2) # audience self.audienceFrm = LabelFrame(self.detFrm, text='Audience') self.audienceFrm.grid(row=3, column=11, rowspan=2, columnspan=5, sticky='snew', padx=5, pady=5) self.audnOutLst = Listbox(self.audienceFrm, font=RFONT, width=15, height=4, selectmode=EXTENDED) self.audnOutLst.grid(row=0, column=0, rowspan=2, sticky='snew', padx=2, pady=2) self.audnInBtn = Button(self.audienceFrm, image=addSImg, command=lambda: self.add_condition( 'audnLst', self.audnOutLst, self.audnInLst, self.audnOutLst.curselection())) # self.audnInBtn.image = addSImg self.audnInBtn.grid(row=0, column=1, sticky='sw', padx=5, pady=2) self.audnOutBtn = Button(self.audienceFrm, image=removeSImg, command=lambda: self.remove_condition( 'audnLst', self.audnOutLst, self. audnInLst, self.audnInLst.curselection())) # self.audnOutBtn.image = removeSImg self.audnOutBtn.grid(row=1, column=1, sticky='sw', padx=5, pady=2) self.audnInLst = Listbox(self.audienceFrm, font=RFONT, width=15, height=4, selectmode=EXTENDED) self.audnInLst.grid(row=0, column=2, rowspan=2, sticky='snew', padx=2, pady=2) # material type self.mattypeFrm = LabelFrame(self.detFrm, text='Material type') self.mattypeFrm.grid(row=5, column=11, rowspan=7, columnspan=5, sticky='snew', padx=5, pady=5) self.mattypeOutLst = Listbox(self.mattypeFrm, font=RFONT, width=15, height=7, selectmode=EXTENDED) self.mattypeOutLst.grid(row=0, column=0, rowspan=7, sticky='snew', padx=2, pady=2) self.mattypeInBtn = Button( self.mattypeFrm, image=addSImg, command=lambda: self.add_condition( 'mattypeLst', self.mattypeOutLst, self.mattypeInLst, self.mattypeOutLst.curselection())) # self.mattypeInBtn.image = addSImg self.mattypeInBtn.grid(row=0, column=1, sticky='sw', padx=5, pady=2) self.mattypeOutBtn = Button( self.mattypeFrm, image=removeSImg, command=lambda: self.remove_condition( 'mattypesLst', self.mattypeOutLst, self.mattypeInLst, self.mattypeInLst.curselection())) # self.mattypeOutBtn.image = removeSImg self.mattypeOutBtn.grid(row=1, column=1, sticky='sw', padx=5, pady=2) self.mattypeInLst = Listbox(self.mattypeFrm, font=RFONT, width=15, height=7, selectmode=EXTENDED) self.mattypeInLst.grid(row=0, column=2, rowspan=7, sticky='snew', padx=2, pady=2)