Ejemplo n.º 1
1
    def show(frame, iterator):
        """Выводит на экран выборку, заданную в iterator"""

        scrollbar = Scrollbar(frame)
        tree = Treeview(frame, selectmode='none', padding=3,
                                style='Custom.Treeview', height=REPORT_HEIGHT,
                                yscrollcommand=scrollbar.set)
        tree.pack(side=LEFT, fill=BOTH, expand=YES)
        scrollbar.config(command=tree.yview)
        scrollbar.pack(side=LEFT, fill=Y)

        tree.tag_configure('1', font=('Verdana', FONT_SIZE_REPORT))
        tree.tag_configure('2', font=('Verdana', FONT_SIZE_REPORT),
                                                           background='#f5f5ff')

        Style().configure('Custom.Treeview', rowheight=FONT_SIZE_REPORT*2)

        columns = ['#' + str(x + 1) for x in range(8)]
        tree.configure(columns=columns)

        for q in range(len(header)):
            tree.heading('#%d' % (q + 1), text=header[q], anchor='w')
            tree.column('#%d' % (q + 1), width=REPORT_SCALE * col_width[q + 1],
                                                                     anchor='w')
        tree.heading('#0', text='', anchor='w')
        tree.column('#0', width=0, anchor='w', minwidth=0)

        flag = True
        summ = 0
        for item in iterator:

            value = item.quantity * item.price * (100 - item.discount) / 100
            summ += value

            col = []
            col.append(add_s(item.check.id))
            col.append(add_s(item.goods.cathegory.name))
            col.append(add_s(item.goods.name))
            col.append(add_s(item.quantity))
            col.append(add_s(item.discount) +'%' if item.discount else ' -- ')
            col.append(add_s(u'%6.2f грн.' % value))
            col.append(add_s(item.check.date_time.strftime('%d.%m.%Y')))
            col.append(add_s(item.check.date_time.time())[:8])

            flag = not flag
            if flag:
                tree.insert('', 'end', text='', values=col, tag='2')
            else:
                tree.insert('', 'end', text='', values=col, tag='1')

        return summ
Ejemplo n.º 2
0
    def __init__(self, parent, process, x, y):
        Toplevel.__init__(self, parent)
        self.wm_overrideredirect(True)
        self.wm_geometry("+%d+%d" % (x+25,y+20))
        label = Label(self, text="", justify='left',
                       background='white', relief='solid', borderwidth=1,
                       font=("times", "12", "normal"))
        label.pack(ipadx=20)
        tree = Treeview(label)
        tree["columns"] = ("value")
        tree.column("#0", minwidth=0, width=100)
        tree.column("#1", minwidth=0, width=100)
        tree.heading("#0", text="Name")
        tree.heading("#1", text="Value")

        for A, state in process.state.items():
            if isinstance(A, Algorithm):
                tree.insert("", 0, iid=A, text=str(A), values=("",))
                for key, val in state.items():
                    tree.insert(A, 0, text=key, values=(val,))
        for key, val in process.state.items():
            if not isinstance(key, Algorithm):
                tree.insert("", 0, text=key, values=(val,))
        tree.insert("", 0, text="UID", values=(process.UID,))
        tree.pack()
Ejemplo n.º 3
0
class Example(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.tree = Treeview(self)

        self.tree["columns"] = ("item1", "item2")
        self.tree.heading("item1", text="Column 1")
        self.tree.heading("item2", text="Column 2")

        self.tree.insert("", 0, text="Item 1", values=("Value 1", "Value 2"))

        row2 = self.tree.insert("", 1, "row2", text="Item 2")
        self.tree.insert(row2,
                         "end",
                         "item1",
                         text="Item 1",
                         values=("3", "7"))
        self.tree.insert(row2,
                         "end",
                         "item2",
                         text="Item 2",
                         values=("2", "5"))

        self.tree.pack(expand=1, fill="both")

        self.delete = Button(self, text="Delete Row", command=self.on_delete)
        self.delete.pack(side="bottom")

    def on_delete(self):
        try:
            selected_item = self.tree.selection()[0]
            self.tree.delete(selected_item)
        except IndexError:
            pass
Ejemplo n.º 4
0
def start_browse_teams():
    global root
    root = Tk()
    root.title("Browse Teams")
    root.minsize(width=500, height=500)

    browse_teams_tree = Treeview(root)
    browse_teams_tree["columns"] = ("1", "2", "3", "4", "5")
    browse_teams_tree.column("1", width=100)
    browse_teams_tree.column("2", width=100)
    browse_teams_tree.column("3", width=100)
    browse_teams_tree.column("4", width=100)
    browse_teams_tree.column("5", width=100)
    browse_teams_tree.heading("1", text="Team ID")
    browse_teams_tree.heading("2", text="Camp ID")
    browse_teams_tree.heading("3", text="Team Name")
    browse_teams_tree.heading("4", text="Max Number of Members")
    browse_teams_tree.heading("5", text="Number of Members")

    index = 0
    for team_id in Team.get_all_ids():
        current_team = Team.select_team(team_id[0])
        browse_teams_tree.insert('', index, text= "row" + str(index + 1), values = (team_id[0], current_team[0], current_team[1], current_team[2], current_team[3]))
        index += 1

    browse_teams_tree.pack()

    exit_browse_teams_bt = Button(root, text="Exit", width=30, command = exit_browse_teams_bt_handler)
    exit_browse_teams_bt.pack(expand=True)
    root.mainloop()
Ejemplo n.º 5
0
def start_browse_campers():
    global root
    root = Tk()
    root.title("Browse Campers")
    root.minsize(width=500, height=500)

    browse_camps_tree = Treeview(root)
    browse_camps_tree["columns"] = ("Camper ID", "First Name", "Last Name",
                                    "Date of Birth", "Gender", "Address",
                                    "Camps IDs", "Bunkhouses IDs", "Teams IDs")
    browse_camps_tree.column("Camper ID", width=100)
    browse_camps_tree.column("First Name", width=100)
    browse_camps_tree.column("Last Name", width=100)
    browse_camps_tree.column("Date of Birth", width=100)
    browse_camps_tree.column("Gender", width=100)
    browse_camps_tree.column("Address", width=100)
    browse_camps_tree.column("Camps IDs", width=100)
    browse_camps_tree.column("Bunkhouses IDs", width=100)
    browse_camps_tree.column("Teams IDs", width=100)
    browse_camps_tree.heading("Camper ID", text="Camper ID")
    browse_camps_tree.heading("First Name", text="First Name")
    browse_camps_tree.heading("Last Name", text="Last Name")
    browse_camps_tree.heading("Date of Birth", text="Date of Birth")
    browse_camps_tree.heading("Gender", text="Gender")
    browse_camps_tree.heading("Address", text="Address")
    browse_camps_tree.heading("Camps IDs", text="Camps IDs")
    browse_camps_tree.heading("Bunkhouses IDs", text="Bunkhouses IDs")
    browse_camps_tree.heading("Teams IDs", text="Teams IDs")

    index = 0
    for camper_id in Camper.get_all_ids():
        current_camper = Camper(camper_id[0])
        data = current_camper.select_camper()
        data2 = Bunkhouse.select_camp_team_bunkhouse(camper_id[0])
        browse_camps_tree.insert('',
                                 index,
                                 text="row" + str(index + 1),
                                 values=(camper_id, data[0], data[1], data[2],
                                         data[3], data[4], data2[0][:-2],
                                         data2[2][:-2], data2[1][:-2]))
        index += 1

    browse_camps_tree.pack()

    exit_browse_camp_bt = Button(root,
                                 text="Exit",
                                 width=30,
                                 command=exit_browse_camp_bt_handler)
    exit_browse_camp_bt.pack(expand=True)
    root.mainloop()
Ejemplo n.º 6
0
class FilamentReport(Toplevel):
	def __init__(self, app, printer, settings, logger, *arg):
		self.app = app
		self.printer = printer
		self.settings = settings
		self.logger = logger
		
		layers = self.app.gcodeInfo.layerOrder
		usage = self.app.gcodeInfo.filLayers

		self.selection = None
		
		Toplevel.__init__(self, app, *arg)
		self.title("Layer by Layer Filament Usage")
		self.protocol("WM_DELETE_WINDOW", self.doCancel)

		f = Frame(self)
		f.grid(row=1, column=1, rowspan=1, padx=10)

		self.tree = Treeview(self, height=12, selectmode='browse')
		self.sb = Scrollbar(self)
		self.sb.config(command=self.tree.yview)
		self.tree.config(yscrollcommand=self.sb.set)

		ln = []
		for l in layerinfo:
			ln.append(l[0])
		del ln[0]
		self.tree.config(columns=ln)
		
		for l in layerinfo:
			self.tree.column(l[0], width=l[1], anchor=l[2])
			self.tree.heading(l[0], text=l[3])

		self.sb.pack(side=RIGHT, fill=Y)
		self.tree.pack(side=LEFT, fill=BOTH, expand=1)

		prev = 0.0	
		tl = layers[-1]
		total = usage[tl]		
		for l in layers:
			n = usage[l]
			self.tree.insert('', 'end', text=l, values=("%7.3f" % (n-prev), "%9.3f" % n, "%9.3f" % (total-n)))
			prev = n

	def doCancel(self):
		self.app.closeFilamentReport()
Ejemplo n.º 7
0
def start_query_browse():
    global root
    root = Tk()
    root.title("Browse Camps, Bunkhouse and Teams")
    root.minsize(width=500, height=500)

    browse_query_tree = Treeview(root)
    browse_query_tree["columns"] = ("1", "2", "3", "4", "5", "6", "7", "8",
                                    "9")
    browse_query_tree.column("1", width=100)
    browse_query_tree.column("2", width=100)
    browse_query_tree.column("3", width=100)
    browse_query_tree.column("4", width=100)
    browse_query_tree.column("5", width=100)
    browse_query_tree.column("6", width=100)
    browse_query_tree.column("7", width=100)
    browse_query_tree.column("8", width=100)
    browse_query_tree.column("9", width=100)
    browse_query_tree.heading("1", text="Bunkhouses IDs")
    browse_query_tree.heading("2", text="Camps IDs")
    browse_query_tree.heading("3", text="Camp Start Date")
    browse_query_tree.heading("4", text="Camp End Date")
    browse_query_tree.heading("5", text="Camper ID")
    browse_query_tree.heading("6", text="First Name")
    browse_query_tree.heading("7", text="Last Name")
    browse_query_tree.heading("8", text="Gender")
    browse_query_tree.heading("9", text="Teams IDs")

    index = 0
    for row_data in Bunkhouse.get_all_query_data():
        browse_query_tree.insert('',
                                 index,
                                 text="row" + str(index + 1),
                                 values=(row_data[0], row_data[1], row_data[2],
                                         row_data[3], row_data[4], row_data[5],
                                         row_data[6], row_data[7],
                                         row_data[8]))
        index += 1

    browse_query_tree.pack()

    exit_bt = Button(root, text="Exit", width=30, command=exit_bt_handler)
    exit_bt.pack(expand=True)
    root.mainloop()
Ejemplo n.º 8
0
    def show(frame, iterator):
        """Выводит на экран выборку, заданную в iterator"""

        scrollbar = Scrollbar(frame)
        tree = Treeview(frame, selectmode='none', padding=3,
                                    style='Custom.Treeview', height=REPORT_HEIGHT,
                                    yscrollcommand=scrollbar.set)
        tree.pack(side=LEFT, fill=BOTH, expand=YES)
        scrollbar.config(command=tree.yview)
        scrollbar.pack(side=LEFT, fill=Y)

        tree.tag_configure('1', font=('Verdana', FONT_SIZE_REPORT))
        tree.tag_configure('2', font=('Verdana', FONT_SIZE_REPORT),
                                                           background='#f5f5ff')

        Style().configure('Custom.Treeview', rowheight=FONT_SIZE_REPORT*2)

        columns = ['#' + str(x + 1) for x in range(7)]
        tree.configure(columns=columns)

        for q in range(len(header)):
            tree.heading('#%d' % (q + 1), text=header[q], anchor='w')
            tree.column('#%d' % (q + 1), width=REPORT_SCALE * col_width[q + 1],
                                                                     anchor='w')
        tree.heading('#0', text='', anchor='w')
        tree.column('#0', width=0, anchor='w', minwidth=0)

        flag = True
        for item in iterator:
            col = []
            col.append(add_s(item.goods.cathegory.name if item.goods.cathegory
                                                                 else u'-Нет-'))
            col.append(add_s(item.goods.name))
            col.append(add_s(item.quantity))
            col.append(add_s(item.goods.measure))
            col.append(add_s(item.date_time.strftime('%d.%m.%Y')))
            col.append(add_s(item.reason.reason))
            col.append(form(item.full_reason))

            flag = not flag
            if flag:
                tree.insert('', 'end', text='', values=col, tag='2')
            else:
                tree.insert('', 'end', text='', values=col, tag='1')
Ejemplo n.º 9
0
def start_browse_camps():
    global root
    root = Tk()
    root.title("Browse Camps")
    root.minsize(width=500, height=500)

    browse_camps_tree = Treeview(root)
    browse_camps_tree["columns"] = ("Camp ID", "Start Date", "End Date",
                                    "Number of Bunckhouses", "Number of Teams",
                                    "Cost")
    browse_camps_tree.column("Camp ID", width=100)
    browse_camps_tree.column("Start Date", width=100)
    browse_camps_tree.column("End Date", width=100)
    browse_camps_tree.column("Number of Bunckhouses", width=100)
    browse_camps_tree.column("Number of Teams", width=100)
    browse_camps_tree.column("Cost", width=100)
    browse_camps_tree.heading("Camp ID", text="Camp ID")
    browse_camps_tree.heading("Start Date", text="Start Date")
    browse_camps_tree.heading("End Date", text="End Date")
    browse_camps_tree.heading("Number of Bunckhouses",
                              text="Number of Bunckhouses")
    browse_camps_tree.heading("Number of Teams", text="Number of Teams")
    browse_camps_tree.heading("Cost", text="Cost")

    index = 0
    for camp_id in Camp.get_all_ids():
        current_camp = Camp(camp_id[0])
        data = current_camp.select_camp()
        browse_camps_tree.insert('',
                                 index,
                                 text="row" + str(index + 1),
                                 values=(camp_id, data[0], data[1], data[2],
                                         data[3], data[4]))
        index += 1

    browse_camps_tree.pack()

    exit_browse_camp_bt = Button(root,
                                 text="Exit",
                                 width=30,
                                 command=exit_browse_camp_bt_handler)
    exit_browse_camp_bt.pack(expand=True)
    root.mainloop()
Ejemplo n.º 10
0
def start_browse_payments():
    global root
    root = Tk()
    root.title("Browse Payments")
    root.minsize(width=500, height=500)

    browse_payments_tree = Treeview(root)
    browse_payments_tree["columns"] = ("1", "2", "3", "4", "5", "6")
    browse_payments_tree.column("1", width=100)
    browse_payments_tree.column("2", width=100)
    browse_payments_tree.column("3", width=100)
    browse_payments_tree.column("4", width=100)
    browse_payments_tree.column("5", width=100)
    browse_payments_tree.column("6", width=100)
    browse_payments_tree.heading("1", text="Payment ID")
    browse_payments_tree.heading("2", text="Camper ID")
    browse_payments_tree.heading("3", text="Camp ID")
    browse_payments_tree.heading("4", text="Date of Payment")
    browse_payments_tree.heading("5", text="Amount Paid")
    browse_payments_tree.heading("6", text="Camp Start Date")

    index = 0
    for payment_id in Payment.get_all_ids():
        current_payment = Payment(payment_id[0])
        data = current_payment.select_payment()
        mycamp = Camp(data[1])
        camp_start = mycamp.select_camp()[0]
        browse_payments_tree.insert('',
                                    index,
                                    text="row" + str(index + 1),
                                    values=(payment_id, data[0], data[1],
                                            data[2], data[3], camp_start))
        index += 1

    browse_payments_tree.pack()

    exit_payments_camp_bt = Button(root,
                                   text="Exit",
                                   width=30,
                                   command=exit_browse_payment_bt_handler)
    exit_payments_camp_bt.pack(expand=True)
    root.mainloop()
Ejemplo n.º 11
0
    def new_point(self):
        window = Toplevel(self)
        tree = Treeview(window)
        tree["columns"]=("1","2","3","4","5")
        tree.column("1", width=50)
        tree.column("2", width=50)
        tree.column("3", width=50)
        tree.column("4", width=50)
        tree.column("5", width=50)
        tree.heading("1", text="Played")
        tree.heading("2", text="Won")
        tree.heading("3", text="Lost")
        tree.heading("4", text="Points")
        
        rows = cur.execute('''SELECT * FROM point_table ORDER BY points DESC''')
        c = 0
        for row in rows:        
            tree.insert("" , c,text=str(row[1]), values=(row[2],row[3],row[4],row[5]))
            c+=1

        tree.pack()
Ejemplo n.º 12
0
class App:
    def __init__(self,master):
        self.master = master
        self.master.resizable(0,0)
        self.master.update_idletasks()
        self.master.overrideredirect(1)
        self.master.attributes("-topmost",True)
        self.master.title("New Graph")
        self.master.lift()
        self.menubar = Menu(self.master)
        self.master.config(menu=self.menubar)
        self.default_color = self.master.cget("bg")
        self.active_edit_flag = 0
        self.modify_flag = 0
        self.graph_types = ['Default','Maelstrom','Rankine Half-Body','Rankine Oval', 'Cylinder','Stagnation & Vortex']
       #-----------------------------------------------------------------------
        self.file_menu = Menu(self.menubar)
        
        self.Fig = matplotlib.figure.Figure(figsize=(2.148,1.777),dpi=100,tight_layout=True)
        self.FigSubPlot = self.Fig.add_subplot(111)     
        frame = Frame(master,bg='#%02x%02x%02x' % (231, 231, 231))
        frame.pack(fill=BOTH, expand=1)
        frame2 = Frame(frame,bg='#%02x%02x%02x' % (221, 221, 221))
        frame2.pack(fill=BOTH, expand=1,padx=20,pady=23)
        self.frame3 = Frame(frame2, bg='#%02x%02x%02x' % (221, 221, 221))
        self.frame3.pack(fill=BOTH, padx=17,pady=17,expand=1)
        self.radio_frame = Frame(self.frame3,bg='#%02x%02x%02x' % (221, 221, 221))
      
        #self.listbox = Listbox(self.frame3)
        self.radio_var = StringVar()
        self.radio_var.set('Default')
        for key in self.graph_types:
            b = Radiobutton(self.radio_frame,text=key,variable=self.radio_var,value = key,bg='#%02x%02x%02x' % (221, 221, 221),indicatoron=1)
            b.pack(anchor=W)
#        for key_num in range(0,len(self.graph_types)):
#            self.listbox.insert(END,self.graph_types[key_num])
#        self.listbox.select_set(0)
#        self.listbox.bind('<<ListboxSelect>>',self.changegraph)
        self.radio_var.trace('w',self.changegraph)
#        self.old = self.listbox.get(self.listbox.curselection())
        self.blankc = Canvas(self.frame3,width=225,height=188)
        self.canvas = FigureCanvasTkAgg(self.Fig, master=self.frame3)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=RIGHT,padx=0,pady=5)
        self.radio_frame.pack(side=LEFT,anchor=W,padx=8,pady=5,fill=BOTH,expand=1) 
        #self.listbox.pack(side=LEFT,anchor=W,padx=8,pady=5,fill=BOTH,expand=1)   
        self.button_frame = Frame(frame,bg='#%02x%02x%02x' % (231, 231, 231))
        self.button_frame.pack(side=RIGHT)
        self.buffer_frame = Frame(self.button_frame,bg='#%02x%02x%02x' % (231, 231, 231))
        self.buffer_frame.pack(side=BOTTOM,pady=8)
        self.buffer_frame2 = Frame(self.button_frame,bg='#%02x%02x%02x' % (231, 231, 231))
        self.buffer_frame2.pack(side=RIGHT,padx=11)
        self.button_c = Button(self.button_frame,width=9, text='Choose',bg='#%02x%02x%02x' % (231, 231, 231),command=self.Continue)
        self.button_x = Button(self.button_frame,text='Cancel',bg='#%02x%02x%02x' % (231, 231, 231),width=9,command=self.quit)
        self.button_c.focus()
        self.button_c.pack(side=RIGHT)
        self.button_x.pack(side=RIGHT,padx=14)
        self.line_color = StringVar()
        self.line_color.set('#000000')
        self.wt_var = StringVar()
        self.wt_var.set('- WT:')
        self.wt_var.trace('w',self.wt_update)
        self.linet_var = StringVar()
        self.linet_var.set('-')
        self.linet_var.trace('w',self.line_style_update)
        self.line_var = IntVar()
        self.line_var.set(25)
        self.line_val = 25
        self.div_check_var = IntVar()
        self.div_check_var.set(50)
        self.div_val = 50
        self.density_var = IntVar()
        self.density_var.set(35)
        self.density_val = 35
        self.arrow_var = IntVar()
        self.arrow_var.set(25) 
        self.arrow_val = 25
        self.div_var = IntVar()
        self.div_var.set(0)
        self.mark_var = IntVar()
        self.mark_var.set(0)
        self.lock_var = IntVar()
        self.lock_var.set(1)
        self.active_numbers = {'s':0,'v':0,'u':0,'d':0,'n':0}
        self.sel_point = None
        self.selected = None
    def changegraph(self,*args):
        self.xlim = [-5.0,5.0]
        self.ylim = [-5.0,5.0]
        Y, X = mgrid[-5:5:100j, -5:5:100j]
        self.X,self.Y = X,Y
        self.FigSubPlot.clear()
        #if self.listbox.get(self.listbox.curselection()) == 'Default':
        if self.radio_var.get() == 'Default':
            self.U = 0*X
            self.V = 0*X
            self.FigSubPlot.streamplot(X,Y,self.U,self.V)
        #elif self.listbox.get(self.listbox.curselection()) == 'Maelstrom':
        elif self.radio_var.get() == 'Maelstrom':    
            self.U = self.source(X,Y,1)[0]+self.vortex(X,Y,1)[0]
            self.V = self.source(X,Y,1)[1]+self.vortex(X,Y,1)[1]
            self.FigSubPlot.streamplot(X,Y,self.U,self.V, color='k', linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle='-')
        #elif self.listbox.get(self.listbox.curselection()) == 'Rankine Half-Body':
        elif self.radio_var.get() == 'Rankine Half-Body':
            self.U = self.source(X,Y,10)[0]+self.uniform(X,Y,1,1,0)[0]
            self.V = self.source(X,Y,10)[1]+self.uniform(X,Y,1,1,0)[1]
            self.FigSubPlot.streamplot(X, Y,self.U,self.V, color='k', linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle='-')
        #elif self.listbox.get(self.listbox.curselection()) == 'Rankine Oval':
        elif self.radio_var.get() == 'Rankine Oval':
            self.U = self.source(X+2,Y,10)[0]+self.source(X-2,Y,-10)[0]+self.uniform(X,Y,1,1,0)[0]
            self.V = self.source(X+2,Y,10)[1]+self.source(X-2,Y,-10)[1]+self.uniform(X,Y,1,1,0)[1]
            self.FigSubPlot.streamplot(X, Y,self.U,self.V, color='k', linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle='-')
        #elif self.listbox.get(self.listbox.curselection()) == 'Cylinder':
        elif self.radio_var.get() == 'Cylinder':
            self.U = self.doublet(X,Y,25)[0]+self.uniform(X,Y,1,1,0)[0]
            self.V = self.doublet(X,Y,25)[1]+self.uniform(X,Y,1,1,0)[1]
            self.FigSubPlot.streamplot(X, Y,self.U,self.V, color='k', linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle='-')
        #elif self.listbox.get(self.listbox.curselection()) == 'Stagnation & Vortex':
        elif self.radio_var.get() == 'Stagnation & Vortex':
            self.U = self.vortex(X,Y,25)[0]+self.corner(X,Y,'2,1')[0]
            self.V = self.vortex(X,Y,25)[1]+self.corner(X,Y,'2,1')[1]
            self.FigSubPlot.streamplot(X, Y,self.U,self.V, color='k', linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle='-')
        self.FigSubPlot.set_xlim(self.xlim)
        self.FigSubPlot.set_ylim(self.ylim)
        self.canvas.draw()
#        self.old = self.listbox.get(self.listbox.curselection())
    def source(self,X,Y,l):
        l = float(l)
        U = (l/(2*pi))*X/(X*X + Y*Y)
        V = (l/(2*pi))*Y/(X*X + Y*Y)
        return (U,V)
    def vortex(self,X,Y,g):
        g = float(g)
        U = (g/(2*pi))*Y/(X*X + Y*Y)
        V = (g/(2*pi))*-X/(X*X + Y*Y)
        return (U,V)
    def uniform(self,X,Y,v_0,x_0,y_0):
        v_0 = float(v_0)
        x_0 = float(x_0)
        y_0 = float(y_0)
        U = v_0*x_0/(x_0*x_0+y_0*y_0)**0.5
        V = v_0*y_0/(x_0*x_0+y_0*y_0)**0.5
        return (U,V)
    def doublet(self,X,Y,k):
        k = float(k)
        U = (k/(2*pi))*((2*Y*Y/((X*X+Y*Y)*(X*X+Y*Y)))-(1/(X*X+Y*Y)))
        V = -(k/(2*pi))*(2*X*Y/((X*X+Y*Y)*(X*X+Y*Y)))
        return (U,V)
    def corner(self,X,Y,tup):
        comma_flag = 0
        A = ''
        n = ''
        for char in tup:
            if char == ',':
                comma_flag = 1
            elif comma_flag == 0:
                n += char
            elif comma_flag == 1:
                A += char
        A = float(A)
        n = float(n)
        R = (X*X+Y*Y)**0.5
        t = arctan2(-Y,-X)
        U = -A*n*R**(n-1)*(cos(n*t)*cos(t)+sin(n*t)*sin(t))
        V = -A*n*R**(n-1)*(cos(n*t)*sin(t)-sin(n*t)*cos(t))
        return (U,V)
    def stream_source(self,X,Y,l):
        l = float(l)
        stream = (l/(2*pi))*arctan2(-Y,-X)
        return stream
    def stream_vortex(self,X,Y,g):
        g = float(g)
        stream = (g/(2*pi))*log((X*X + Y*Y)**0.5)
        return stream
    def stream_uniform(self,X,Y,v_0,x_0,y_0):
        v_0 = float(v_0)
        x_0 = float(x_0)
        y_0 = float(y_0)
        stream = (v_0*Y*x_0/(x_0*x_0+y_0*y_0)**0.5)-(v_0*X*y_0/(x_0*x_0+y_0*y_0)**0.5)
        return stream
    def stream_doublet(self,X,Y,k):
        k = float(k)
        stream = -(k/(2*pi))*Y/(X*X+Y*Y)
        return stream
    def stream_corner(self,X,Y,tup):
        comma_flag = 0
        A = ''
        n = ''
        for char in tup:
            if char == ',':
                comma_flag = 1
            elif comma_flag == 0:
                n += char
            elif comma_flag == 1:
                A += char
        A = float(A)
        n = float(n)
        stream = A*(X*X+Y*Y)**(n*0.5)*sin(n*arctan2(-Y,-X))
        return stream
    def quit(self):
        self.master.destroy()    
    def Continue(self):
        self.master.withdraw()
        self.main = Toplevel(self.master)
        self.main.geometry("%dx%d+%d+%d" % (1038-206, 
                               694,
                               int((500.0/2560.0)*screen_resolution[0]), 
                               int((60.0/1440.0)*screen_resolution[1])))
        self.main.minsize(376,227)                      
        self.interior = PanedWindow(self.main,sashwidth=5)
        self.interior.pack(fill=BOTH, expand=1)

        self.elements_frame = Frame(self.interior, height=1038, width=212,relief=RIDGE,borderwidth=0)
        self.interior.add(self.elements_frame) 
        self.interior.paneconfig(self.elements_frame,minsize=130)
        self.graph_frame = Frame(self.interior)
        self.interior.add(self.graph_frame)
        self.interior.paneconfig(self.graph_frame,minsize=130)

        self.main.bind("<ButtonRelease-1>",self.pan_update)
        self.main.bind("<ButtonRelease-3>",self.pan_update)
        self.main.bind("<Button-3>",self.right_menu)
        
        self.edit_frame = Frame(self.graph_frame)
        self.edit_frame.pack(side=TOP,fill=X,padx=10)
        self.canvas = FigureCanvasTkAgg(self.Fig, master=self.graph_frame)
        self.canvas.show()
        self.canvas.get_tk_widget().pack(fill=BOTH,expand=1)
        self.nav_frame = Frame(self.edit_frame)
        self.nav_frame.pack(side=LEFT,anchor=W)
        self.toolbar = NavigationToolbar(self.canvas, self.nav_frame)
        
        self.main.protocol('WM_DELETE_WINDOW',self.master.destroy) 
        self.elements = Treeview(self.elements_frame,columns=("values","xlocations","ylocations"),selectmode=BROWSE)
        self.elements.heading("#0",text="Components")
        self.elements.heading("values",text="Str")
        self.elements.heading("xlocations",text="X")
        self.elements.heading("ylocations",text="Y")
        self.elements.column("#0",width=90,anchor=CENTER)
        self.elements.column("values",width=45,anchor=CENTER)
        self.elements.column("xlocations",width=26,anchor=CENTER)
        self.elements.column("ylocations",width=26,anchor=CENTER)
        self.elements.pack(fill=BOTH,expand=1)
        
        self.as_button_frame = Frame(self.elements_frame)
        self.add_button = Button(self.as_button_frame,text = '+',width=2,command=self.add)       
        self.sub_button = Button(self.as_button_frame,text = '-',width=2,command=self.subtract) 
        self.options_button = Button(self.as_button_frame,text='Options',command=self.options)
        self.as_button_frame.pack(side=BOTTOM,anchor=W)
        self.options_button.pack(side=RIGHT)
        self.sub_button.pack(side=RIGHT,anchor=W)
        self.add_button.pack(side=LEFT,anchor=W)
        self.addsub_menu = Menu(self.as_button_frame,tearoff=0)
        self.addsub_menu.add_command(command=self.add_source,label='Source')
        self.addsub_menu.add_command(command=self.add_vortex,label='Vortex')
        self.addsub_menu.add_command(command=self.add_uniform,label='Uniform')
        self.addsub_menu.add_command(command=self.add_doublet,label='Doublet')
        self.addsub_menu.add_command(command=self.add_corner,label='Corner')
        

        #if self.listbox.get(self.listbox.curselection()) == 'Default':
        if self.radio_var.get() == 'Default':
            self.active_components = []
            self.active_calls = {} 
            pass
        #elif self.listbox.get(self.listbox.curselection()) == 'Maelstrom':
        elif self.radio_var.get() == 'Maelstrom':
            self.elements.insert("",0,"M",text="Maelstrom",open=TRUE)
            self.active_components = ['M']
            self.elements.insert("M",0,iid='s%s'%self.active_numbers['s'],text="Source",values=("%s"%1,0,0))
            self.elements.insert("M",0,iid='v%s'%self.active_numbers['v'],text="Vortex",values=("%s"%1,0,0))
            self.active_calls = {'s%s'%self.active_numbers['s']:("s",self.elements.item('s%s'%self.active_numbers['s'],"values")),
                                 'v%s'%self.active_numbers['v']:("v",self.elements.item('v%s'%self.active_numbers['v'],"values"))}
            self.active_numbers['s'] += 1
            self.active_numbers['v'] += 1
        elif self.radio_var.get() == 'Rankine Half-Body':
            self.elements.insert("",0,"RHF",text="Rankine Half-Body",open=TRUE)
            self.active_components = ['RHF']
            self.elements.insert("RHF",0,iid='s%s'%self.active_numbers['s'],text="Source",values=("%s"%10,0,0))
            self.elements.insert("RHF",0,iid='u%s'%self.active_numbers['u'],text="Uniform",values=("%s"%1,1,0))
            self.active_calls = {'s%s'%self.active_numbers['s']:("s",self.elements.item('s%s'%self.active_numbers['s'],"values")),
                                 'u%s'%self.active_numbers['u']:("u",self.elements.item('u%s'%self.active_numbers['u'],"values"))}
            self.active_numbers['s'] += 1
            self.active_numbers['u'] += 1
        elif self.radio_var.get() == 'Rankine Oval':
            self.elements.insert("",0,"RO",text="Rankine Oval",open=TRUE)
            self.active_components = ['RO']
            self.elements.insert("RO",0,iid='s%s'%self.active_numbers['s'],text="Source",values=("%s"%10,-2,0))
            self.elements.insert("RO",0,iid='s%s'%(self.active_numbers['s']+1),text="Source",values=("%s"%-10,2,0))
            self.elements.insert("RO",0,iid='u%s'%self.active_numbers['u'],text="Uniform",values=("%s"%1,1,0))
            self.active_calls = {'s%s'%self.active_numbers['s']:("s",self.elements.item('s%s'%self.active_numbers['s'],"values")),
                                 's%s'%(self.active_numbers['s']+1):("s",self.elements.item('s%s'%(self.active_numbers['s']+1),"values")),
                                 'u%s'%self.active_numbers['u']:("u",self.elements.item('u%s'%self.active_numbers['u'],"values"))}
            self.active_numbers['s'] += 2
            self.active_numbers['u'] += 1       
        elif self.radio_var.get() == 'Cylinder':
            self.elements.insert("",0,'D+U',text="Cylinder",open=TRUE)
            self.active_components = ['D+U']
            self.elements.insert('D+U',0,iid='d%s'%self.active_numbers['d'],text="Doublet",values=("%s"%25,0,0))
            self.elements.insert('D+U',0,iid='u%s'%self.active_numbers['u'],text="Uniform",values=("%s"%1,1,0))
            self.active_calls = {'d%s'%self.active_numbers['d']:("d",self.elements.item('d%s'%self.active_numbers['d'],"values")),
                                 'u%s'%self.active_numbers['u']:("u",self.elements.item('u%s'%self.active_numbers['u'],"values"))}
            self.active_numbers['d'] += 1
            self.active_numbers['u'] += 1
        elif self.radio_var.get() == 'Stagnation & Vortex':
            self.elements.insert("",0,'S+V',text="Stag+Vort",open=TRUE)
            self.active_components = ['S+V']
            self.elements.insert('S+V',0,iid='n%s'%self.active_numbers['n'],text="C (n,A)",values=("%s,%s"%(2,1),0,0))
            self.elements.insert('S+V',0,iid='v%s'%self.active_numbers['v'],text="Vortex",values=("%s"%25,0,0))
            self.active_calls = {'n%s'%self.active_numbers['n']:("n",self.elements.item('n%s'%self.active_numbers['n'],"values")),
                                 'v%s'%self.active_numbers['v']:("v",self.elements.item('v%s'%self.active_numbers['v'],"values"))}
            self.active_numbers['n'] += 1
            self.active_numbers['v'] += 1
        self.elements.bind("<Double-Button-1>",self.edit)
        self.elements.bind('<<TreeviewSelect>>',self.treeview_select)
        self.main.bind("<Return>",self.edit_return)
        self.main.bind("<Escape>",self.edit_return)

        
        self.rightc_menu = Menu(self.graph_frame,tearoff=0)
        self.add_menu = Menu(self.rightc_menu,tearoff=0)
        self.rightc_menu.add_cascade(label="Add",menu=self.add_menu)
        self.add_menu.add_command(command=self.addm_source,label='Source')
        self.add_menu.add_command(command=self.addm_vortex,label='Vortex')
        self.add_menu.add_command(command=self.addm_uniform,label='Uniform')
        self.add_menu.add_command(command=self.addm_doublet,label='Doublet')
        self.add_menu.add_command(command=self.addm_corner,label='Corner')
    def right_menu(self,event):
        print "event", event.x,event.y
        #print "graph", self.main.winfo_x()+self.interior.winfo_x()+self.graph_frame.winfo_x(), self.main.winfo_y()+self.interior.winfo_y()+self.graph_frame.winfo_y()
        self.plot_x,self.plot_y = self.FigSubPlot.transData.inverted().transform((event.x,event.y+20))
        self.plot_y = -self.plot_y
        self.rightc_menu.post(self.main.winfo_x()+self.interior.winfo_x()+self.graph_frame.winfo_x()+event.x+9,self.main.winfo_y()+self.graph_frame.winfo_y()+event.y+66)
        
    def treeview_select(self,event):
        if self.elements.get_children(self.elements.selection()[0]) == ():
            if self.mark_var.get() == 0 or self.selected == self.elements.selection():
                pass
            elif self.mark_var.get() == 1:
                
                #add red markers here
                
                if self.elements.selection() != '':
                    child = self.elements.selection()[0]
                    if child != '':
                        self.sel_point = (self.elements.item(child,"values")[1],self.elements.item(child,"values")[2])
                        self.graph_update()
                        self.selected = self.elements.selection()
                else:
                    pass
        else:
            if self.mark_var.get() == 0 or self.selected == self.elements.selection():
                pass
            elif self.mark_var.get() == 1:
                if self.elements.selection() != '':
                    child = self.elements.selection()[0]
                    if child != '':
                        self.sel_point = None
                        self.graph_update()
                        self.selected = self.elements.selection()
    def mark_check_fun(self):
        if self.mark_var.get() == 0:
            self.sel_point = None
            self.graph_update()
        elif self.elements.selection() != '':
            child = self.elements.selection()[0]
            self.sel_point = [self.elements.item(child,"values")[1],self.elements.item(child,"values")[2]]
            self.graph_update()
            
    def add(self):
        self.addsub_menu.post(self.main.winfo_x()+self.as_button_frame.winfo_x()+self.add_button.winfo_x(),self.main.winfo_y()+self.as_button_frame.winfo_y()+self.add_button.winfo_y()-len(self.active_numbers.keys())*14)
    def subtract(self):
        if self.active_edit_flag == 1:
            self.del_edit(self)
        child = self.elements.selection()[0]
        if child == '':
            return
        if self.elements.parent(child) == '':
            ID = child
            self.active_components.remove(child)
            self.elements.delete(child)
        else:
            ID = self.elements.parent(child)
            self.active_components.remove(ID)
            for comp in self.elements.get_children(ID):
                if comp != child:
                    self.active_components.append(comp)
                    self.elements.move(comp,"",0)
            self.elements.delete(ID)
        self.sel_point = None
        self.graph_update()
    def options(self):
        self.options_window = Toplevel(self.main)
        self.options_window.geometry("%dx%d+%d+%d" % (280, 
                                                      200+20,
                                                      self.main.winfo_x()+self.as_button_frame.winfo_x()+self.options_button.winfo_x()-272+26+72+86,
                                                      self.main.winfo_y()+self.as_button_frame.winfo_y()+self.options_button.winfo_y()-196-20))
        self.main.bind('<FocusIn>',self.close_options)
        self.options_window.title("Options")
        self.options_window.update_idletasks()
        self.options_window.bind("<ButtonRelease-1>",self.pan_update)
        self.options_frame = Frame(self.options_window)
        self.options_frame.pack(fill=BOTH,expand=1)
        self.options_window.attributes("-topmost",True)

        self.line_frame = Frame(self.options_frame,bd=2,relief=RIDGE)
        self.line_frame.grid(row=0,column=1,sticky=N+S+E+W,ipady=7)
        self.color_frame = Frame(self.options_frame,bd=2,relief=RIDGE,padx=2)
        self.color_frame.grid(row=0,column=0,sticky=N+S+E+W)
        
        self.color_button = Label(self.color_frame,bg=self.line_color.get(),text = '     ')
        self.color_button.pack(side=RIGHT)
        Label(self.color_frame,text='C:').pack(side=RIGHT)
        self.color_button.bind('<Button-1>',self.getColor)
        
        self.wt_slider = Scale(self.line_frame,from_=1,to=100,orient=HORIZONTAL,variable=self.line_var)
        if self.wt_var.get() == '-> WT:':
            self.wt_slider.config(variable=self.arrow_var)
        elif self.wt_var.get() == '- WT:':
            self.wt_slider.config(variable=self.line_var)
        elif self.wt_var.get() == 'div WT:':
            self.wt_slider.config(variable=self.div_check_var)
        self.wt_slider.pack(side=RIGHT)
        
        self.wt_menu = OptionMenu(self.line_frame,self.wt_var,'- WT:','-> WT:','div WT:')
        self.wt_menu.pack(side=RIGHT,anchor='center',fill=X,expand=1)
        self.wt_menu.config(width=8)
        self.density_frame = Frame(self.options_frame,bd=2,relief=RIDGE)
        self.density_frame.grid(row=1,column=1,sticky=N+S+E+W)
        self.density_slider = Scale(self.density_frame,from_=1,to=100,orient=HORIZONTAL,variable=self.density_var)
        self.density_slider.pack(side=RIGHT)
        Label(self.density_frame,text='Density').pack(side=LEFT,anchor=CENTER,fill=X,expand=1)
        
        self.linet_frame = Frame(self.options_frame,bd=2,relief=RIDGE)
        self.linet_frame.grid(row=1,column=0,sticky=N+S+E+W)
        Label(self.linet_frame,text='Style').pack(anchor='n')
        self.linet_menu = OptionMenu(self.linet_frame,self.linet_var,'-','->','-|>')
        self.linet_menu.pack(anchor='s',side=BOTTOM)
        self.linet_menu.config(width=5)
        
        self.div_check = Checkbutton(self.options_frame,text = 'Dividing Streamline',variable=self.div_var,onvalue=1,offvalue=0,command = self.graph_update)
        self.div_check.grid(row=2,column=1,sticky=W)
        self.mark_check = Checkbutton(self.options_frame,text = 'Selection Marker',variable=self.mark_var,onvalue=1,offvalue=0,command = self.mark_check_fun)
        self.mark_check.grid(row=3,column=1,sticky=W)
        
        self.limit_frame = Frame(self.options_frame)
        self.limit_frame.grid(row=4,column=1,sticky=W)
        #self.aspect_lock = Checkbutton(self.limit_frame,text='LK',variable = self.lock_var)
        #self.aspect_lock.grid(row=0,column=4,rowspan=2,sticky=E)
        
        Label(self.limit_frame,text='x').grid(row=0,column=0)
        self.xlimlow_var = DoubleVar()
        self.xlimlow_var.set(self.FigSubPlot.get_xlim()[0])
        self.xlimlow_entry = Entry(self.limit_frame,textvariable=self.xlimlow_var,width=5)
        self.xlimlow_entry.grid(row=0,column=1)
        Label(self.limit_frame,text='...').grid(row=0,column=2)
        self.xlimhigh_var = DoubleVar()
        self.xlimhigh_var.set(self.FigSubPlot.get_xlim()[1])
        self.xlimhigh_entry = Entry(self.limit_frame,textvariable=self.xlimhigh_var,width=5)
        self.xlimhigh_entry.grid(row=0,column=3)
        Label(self.limit_frame,text='y').grid(row=1,column=0)
        self.ylimlow_var = DoubleVar()
        self.ylimlow_var.set(self.FigSubPlot.get_ylim()[0])
        self.ylimlow_entry = Entry(self.limit_frame,textvariable=self.ylimlow_var,width=5)
        self.ylimlow_entry.grid(row=1,column=1)
        Label(self.limit_frame,text='...').grid(row=1,column=2)
        self.ylimhigh_var = DoubleVar()
        self.ylimhigh_var.set(self.FigSubPlot.get_ylim()[1])
        self.ylimhigh_entry = Entry(self.limit_frame,textvariable=self.ylimhigh_var,width=5)
        self.ylimhigh_entry.grid(row=1,column=3)
        
        
        #self.limit_frame.bind('<FocusOut>',self.limits_update)
        self.xlimhigh_var.trace('w',self.limits_update)
        self.ylimhigh_var.trace('w',self.limits_update)
        self.xlimlow_var.trace('w',self.limits_update)
        self.ylimlow_var.trace('w',self.limits_update)
        
    def limits_update(self,*args):

        if self.xlimlow_entry.get() == '' or self.ylimlow_entry.get() == '' or self.xlimhigh_entry.get() == '' or self.ylimhigh_entry.get() == '':
            pass
        elif self.xlimlow_entry.get() == '-' or self.ylimlow_entry.get() == '-' or self.xlimhigh_entry.get() == '-' or self.ylimhigh_entry.get() == '-':
            pass
        elif self.xlimlow_entry.get() == '.' or self.ylimlow_entry.get() == '.' or self.xlimhigh_entry.get() == '.' or self.ylimhigh_entry.get() == '.':
            pass
        else:
            self.xlim = [float(self.xlimlow_var.get()),float(self.xlimhigh_var.get())]
            self.ylim = [float(self.ylimlow_var.get()),float(self.ylimhigh_var.get())]

            self.FigSubPlot.set_xlim(self.xlim)
            self.FigSubPlot.set_ylim(self.ylim)
            self.graph_update()
    def getColor(self,event):
        color=askcolor(self.line_color.get())
        if color != "None":
            self.line_color.set(color[1])
            self.graph_update()
    def wt_update(self,*args):
        if self.wt_var.get() == '-> WT:':
            self.wt_slider.config(variable=self.arrow_var)
        elif self.wt_var.get() == '- WT:':
            self.wt_slider.config(variable=self.line_var)
        elif self.wt_var.get() == 'div WT:':
            self.wt_slider.config(variable=self.div_check_var)
    def line_style_update(self,*args):
        self.graph_update()
    def close_options(self,event):
        self.options_window.destroy()
    def add_source(self):
        if self.modify_flag == 0:
            self.plot_x,self.plot_y = 0,0
        self.elements.insert("",0,iid='s%s'%self.active_numbers['s'],text="Source",values=("%s"%1,self.plot_x,self.plot_y))
        self.active_calls['s%s'%self.active_numbers['s']] = ("s",self.elements.item('s%s'%self.active_numbers['s'],"values"))
        self.active_components.append('s%s'%self.active_numbers['s'])
        if self.modify_flag == 1:
            self.elements.selection_set('s%s'%self.active_numbers['s'])
            self.modify_flag = 0
        self.graph_update()
        self.active_numbers['s'] += 1
        
    def add_vortex(self):
        if self.modify_flag == 0:
            self.plot_x,self.plot_y = 0,0
        self.elements.insert("",0,iid='v%s'%self.active_numbers['v'],text="Vortex",values=("%s"%1,self.plot_x,self.plot_y))
        self.active_calls['v%s'%self.active_numbers['v']] = ("v",self.elements.item('v%s'%self.active_numbers['v'],"values"))
        self.active_components.append('v%s'%self.active_numbers['v'])

        if self.modify_flag == 1:
            self.elements.selection_set('v%s'%self.active_numbers['v'])
            self.modify_flag = 0
        self.graph_update()
        self.active_numbers['v'] += 1
    def add_uniform(self):
        if self.modify_flag == 0:
            self.plot_x,self.plot_y = 1,0
        self.elements.insert("",0,iid='u%s'%self.active_numbers['u'],text="Uniform",values=("%s"%1,self.plot_x,self.plot_y))
        self.active_calls['u%s'%self.active_numbers['u']] = ("u",self.elements.item('u%s'%self.active_numbers['u'],"values"))
        self.active_components.append('u%s'%self.active_numbers['u'])
        if self.modify_flag == 1:
            self.elements.selection_set('u%s'%self.active_numbers['u'])
            self.modify_flag = 0
        self.graph_update()
        self.active_numbers['u'] += 1
    def add_doublet(self):
        if self.modify_flag == 0:
            self.plot_x,self.plot_y = 0,0
        self.elements.insert("",0,iid='d%s'%self.active_numbers['d'],text="Doublet",values=("%s"%1,self.plot_x,self.plot_y))
        self.active_calls['d%s'%self.active_numbers['d']] = ("d",self.elements.item('d%s'%self.active_numbers['d'],"values"))
        self.active_components.append('d%s'%self.active_numbers['d'])
        if self.modify_flag == 1:
            self.elements.selection_set('d%s'%self.active_numbers['d'])
            self.modify_flag = 0
        self.graph_update()
        self.active_numbers['d'] += 1
    def add_corner(self):
        if self.modify_flag == 0:
            self.plot_x,self.plot_y = 0,0
        self.elements.insert("",0,iid='n%s'%self.active_numbers['n'],text="Corner (n,A)",values=("%s,%s"%(2,1),self.plot_x,self.plot_y))
        self.active_calls['n%s'%self.active_numbers['n']] = ("n",self.elements.item('n%s'%self.active_numbers['n'],"values"))
        self.active_components.append('n%s'%self.active_numbers['n'])
        if self.modify_flag == 1:
            self.elements.selection_set('n%s'%self.active_numbers['n'])
            self.modify_flag = 0
        self.graph_update()
        self.active_numbers['n'] += 1
    def addm_source(self):
        self.modify_flag = 1 
        self.add_source()
    def addm_vortex(self):
        self.modify_flag = 1
        self.add_vortex()
    def addm_uniform(self):
        self.modify_flag = 1
        self.add_uniform()
    def addm_doublet(self):
        self.modify_flag = 1
        self.add_doublet()
    def addm_corner(self):
        self.modify_flag = 1
        self.add_corner()
    def pan_update(self,event):
        if [self.FigSubPlot.get_xlim()[0],self.FigSubPlot.get_xlim()[1]] != self.xlim or [self.FigSubPlot.get_ylim()[0],self.FigSubPlot.get_ylim()[1]] != self.ylim or self.density_var.get() != self.density_val or self.line_var.get() != self.line_val or self.arrow_var.get() != self.arrow_val or self.arrow_var.get() != self.arrow_val or self.div_check_var.get() != self.div_val:
            self.graph_update()
            self.density_val = self.density_var.get()
            self.line_val = self.line_var.get()
            self.arrow_val = self.arrow_var.get()
            self.div_val = self.div_check_var.get()
        else:
            return
    def graph_update(self):
        self.FigSubPlot.clear()
        Y, X = mgrid[self.FigSubPlot.get_ylim()[0]:self.FigSubPlot.get_ylim()[1]:100j, self.FigSubPlot.get_xlim()[0]:self.FigSubPlot.get_xlim()[1]:100j]     
        self.xlim = [self.FigSubPlot.get_xlim()[0],self.FigSubPlot.get_xlim()[1]]
        self.ylim = [self.FigSubPlot.get_ylim()[0],self.FigSubPlot.get_ylim()[1]]
        self.U = 0*X
        self.V = 0*X      
        self.stream = 0*X
        for ID in self.active_components:
            if self.elements.get_children(ID) == ():
                child = ID
                self.active_calls[child] = (child[0],self.elements.item(child,"values"))
                if self.active_calls[child][0] == "s":
                    self.U += self.source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                    self.V += self.source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                    self.stream += self.stream_source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                elif self.active_calls[child][0] == 'v':
                    self.U += self.vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                    self.V += self.vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                    self.stream += self.stream_vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                elif self.active_calls[child][0] == 'u':
                    if self.active_calls[child][1][1] == '0' and self.active_calls[child][1][2] == '0':
                        pass
                    else:
                        self.U += self.uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])[0]
                        self.V += self.uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])[1]
                        self.stream += self.stream_uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])
                elif self.active_calls[child][0] == 'd':
                    self.U += self.doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                    self.V += self.doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                    self.stream += self.stream_doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                elif self.active_calls[child][0] == 'n':
                    self.U += self.corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                    self.V += self.corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                    self.stream += self.stream_corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
            else:
                for child in self.elements.get_children(ID):
                    self.active_calls[child] = (child[0],self.elements.item(child,"values"))
                    if self.active_calls[child][0] == "s":
                        self.U += self.source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                        self.V += self.source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                        self.stream += self.stream_source(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                    elif self.active_calls[child][0] == 'v':
                        self.U += self.vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                        self.V += self.vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                        self.stream += self.stream_vortex(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                    elif self.active_calls[child][0] == 'u':
                        if self.active_calls[child][1][1] == '0' and self.active_calls[child][1][2] == '0':
                            pass
                        else:
                            self.U += self.uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])[0]
                            self.V += self.uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])[1]
                            self.stream += self.stream_uniform(X,Y,self.active_calls[child][1][0],self.active_calls[child][1][1],self.active_calls[child][1][2])
                    elif self.active_calls[child][0] == 'd':
                        self.U += self.doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                        self.V += self.doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                        self.stream += self.stream_doublet(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])
                    elif self.active_calls[child][0] == 'n':
                        self.U += self.corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[0]
                        self.V += self.corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])[1]
                        self.stream += self.stream_corner(X-float(self.active_calls[child][1][1]),Y-float(self.active_calls[child][1][2]),self.active_calls[child][1][0])

        self.FigSubPlot.streamplot(X,Y,self.U,self.V,color=self.line_color.get(), linewidth=(2.0/71.0)*self.line_var.get()+(13.0/71.0),density=(2.0/71.0)*self.density_var.get()+(13.0/71.0),arrowstyle=self.linet_var.get(),arrowsize=(4.0/71.0)*self.arrow_var.get()+(13.0/71.0))
        if self.div_var.get() == 1:
            #self.FigSubPlot.contour(X,Y,self.stream,[-0.01,0.01],linewidths=[(4.0/71.0)*self.div_check_var.get()+(13.0/71.0),(4.0/71.0)*self.div_check_var.get()+(13.0/71.0)])
            
            self.FigSubPlot.contour(X,Y,self.stream,[0],linewidths=[(4.0/71.0)*self.div_check_var.get()+(13.0/71.0)])
        if self.mark_var.get() == 1:
            if self.sel_point != None:
                self.plot_point()
        self.FigSubPlot.set_xlim(self.xlim)
        self.FigSubPlot.set_ylim(self.ylim)
        self.canvas.draw()
    def plot_point(self):
        if self.elements.selection()[0][0] == 'u':
            norm = float(float(self.sel_point[0])*float(self.sel_point[0])+float(self.sel_point[1])*float(self.sel_point[1]))**0.5
            if norm == 0:
                norm = 1
            X,Y,U,V = 0,0, float(self.sel_point[0])/norm,float(self.sel_point[1])/norm
            self.FigSubPlot.quiver(X,Y,U,V,angles='xy',scale_units='xy',scale=1,color='g')
        else:
            self.FigSubPlot.plot([self.sel_point[0]],[self.sel_point[1]],'r^',ms=10)
    def edit(self,event):
        if self.active_edit_flag == 1 or self.elements.identify_row(event.y) == '':
            pass
        else:
            self.rowid = self.elements.identify_row(event.y)
            self.column = self.elements.identify_column(event.x)
            self.edit_var = StringVar()
            if int(self.column[-1]) == 0:
                self.edit_var.set('%s'%self.elements.item("%s"%self.elements.identify("item",event.x, event.y))['text'])

            else:
                self.edit_var.set('%s'%self.elements.item("%s"%self.elements.identify("item",event.x, event.y))['values'][int(self.column[-1])-1])

            x,y,width,height = self.elements.bbox(self.rowid, self.column)
            self.edit_entry = Entry(self.elements_frame,textvariable=self.edit_var)
            self.edit_entry.place(x=x,y=y,width=width)
            self.edit_entry.focus_force()
            self.edit_entry.bind("<FocusOut>", self.del_edit)
            self.active_edit_flag = 1
    def edit_return(self,event):
        self.main.focus()
    def del_edit(self,event):
        if self.column[-1] == '0':
            self.elements.item(self.rowid,text='%s'%self.edit_var.get())
        elif self.rowid[0] == 'n' and self.column[-1] == '1' and ',' not in self.edit_var.get():
            pass
        else:
            value = ''
            initial_value = str(self.elements.item(self.rowid)['values'][int(self.column[-1])-1])
            comma_flag = 0
            div_flag = 0
            for index in range(0,len(self.edit_var.get())):
                char = self.edit_var.get()[index]
                if char in '-0123456789.':
                    value += char
                elif self.rowid[0] == 'n' and char == ',':
                    if comma_flag == 1:
                        self.edit_entry.destroy()
                        self.active_edit_flag = 0
                        return
                    value += char
                    comma_flag = 1
                    comma_index = index
                if char == '/':
                    if div_flag == 0:
                        div_flag = 1
                        div_index = index
                    elif div_flag == 1 and comma_flag == 1:
                        div_flag = 2
                        div_index2 = index
                    elif div_flag == 1 and comma_flag == 0 or div_flag == 2:
                        self.edit_entry.destroy()
                        self.active_edit_flag = 0
                        return
                   
            if div_flag == 1:
                if comma_flag == 1:
                    if div_index < comma_index:
                        arg = int(float(value[:div_index])*100/float(value[div_index:comma_index-1]))/100.0
                        value = str(arg)+value[comma_index-1:]
                    elif div_index > comma_index:
                        arg = int(float(value[comma_index+1:div_index])*100/float(value[div_index:]))/100.0
                        value = value[:comma_index+1]+str(arg)
                else:
                    arg = int(float(value[:div_index])*100/float(value[div_index:]))/100.0
                    value = str(arg)
            elif div_flag == 2: 
                arg1 = int(float(value[:div_index])*100/float(value[div_index:comma_index-1]))/100.0
                arg2 = int(float(value[comma_index:div_index2-1])*100/float(value[div_index2-1:]))/100.0
                value = str(arg1)+','+str(arg2)
            if value == '' or value == initial_value:
                self.edit_entry.destroy()
                self.active_edit_flag = 0
                return
            
            self.elements.set(self.rowid,column=(int(self.column[-1])-1),value=value)
            if self.mark_var.get() == 1:
                self.sel_point = [self.elements.item(self.rowid,"values")[1],self.elements.item(self.rowid,"values")[2]]
            self.graph_update()
        self.edit_entry.destroy()
        self.active_edit_flag = 0
Ejemplo n.º 13
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        global docID, nombre, refbanco, tree, busqueda, info, delete
        global e3

        lupa = PhotoImage(file='img/lupa.png')

        docID = StringVar()
        nombre = StringVar()
        refbanco = StringVar()
        busqueda = StringVar()
        info = IntVar()

        #WIDGETS

        #=========================== HEADER ============================

        l0 = Label(self, text="BENEFICIARIOS", font="bold")
        l0.pack(pady=20, side=TOP)

        #=========================== WRAPPER ===========================

        wrapper = Frame(self)
        wrapper.pack(side=TOP, fill=Y)
        #wrapper.pack(side=LEFT, fill=Y) #UBICA EL FORM A LA IZQ

        f1 = Frame(wrapper)
        f1.pack(pady=5, fill=X)  #-----------------------------------

        l1 = Label(f1, text="CC/Nit: ")
        l1.pack(side=LEFT)
        e1 = Entry(f1, textvariable=docID, width=20)
        e1.pack(side=LEFT)
        e1.bind("<KeyRelease>", caps)
        e1.focus_set()

        f2 = Frame(wrapper)
        f2.pack(pady=5, fill=X)  #-----------------------------------

        l2 = Label(f2, text="Nombre: ")
        l2.pack(side=LEFT)
        e2 = Entry(f2, textvariable=nombre, width=60)
        e2.pack(side=LEFT, fill=X, expand=1)
        e2.bind("<KeyRelease>", caps)

        f3 = Frame(wrapper)
        f3.pack(pady=5, fill=X)  #-----------------------------------

        l3 = Label(f3, text="Referencia Bancaria: ")
        l3.pack(side=LEFT)
        e3 = Entry(f3, textvariable=refbanco, width=60)
        e3.pack(side=LEFT, fill=X, expand=1)
        e3.bind("<KeyRelease>", caps)

        f4 = Frame(wrapper)
        f4.pack(pady=5, fill=X)  #-----------------------------------

        b1 = Button(f4,
                    text="Cargar",
                    bg='navy',
                    foreground='white',
                    activebackground='red3',
                    activeforeground='white',
                    command=cargar)
        b1.pack(side=RIGHT)

        b2 = Button(f4,
                    text="Agregar",
                    bg='navy',
                    foreground='white',
                    activebackground='red3',
                    activeforeground='white',
                    command=agregar)
        b2.pack(side=RIGHT)

        #========================== TREEVIEW ===========================

        f5 = Frame(wrapper)
        f5.pack(pady=5, fill=X)  #-----------------------------------

        tree = Treeview(f5, show="headings", columns=('col1', 'col2'))
        tree.pack(side=LEFT, fill=X, expand=1)
        tree.column('col1', width=0, anchor='center')
        tree.column('col2', width=150, anchor='w')

        tree.heading('col1', text='CC/Nit')
        tree.heading('col2', text='Nombre Completo')

        scroll = Scrollbar(f5, orient=VERTICAL, command=tree.yview)
        tree.configure(yscrollcommand=scroll.set)

        f6 = Frame(wrapper)
        f6.pack(pady=5, fill=X)  #-----------------------------------

        delete = Button(f6,
                        text="Eliminar",
                        bg='navy',
                        foreground='white',
                        activebackground='red3',
                        activeforeground='white',
                        command=borrar)
        delete.pack(side=RIGHT)

        e4 = Entry(f6, textvariable=busqueda)
        e4.pack(side=LEFT)
        e4.bind("<KeyRelease>", caps)

        b4 = Button(f6, text='BUSCAR', image=lupa, command=buscar)
        b4.image = lupa
        b4.pack(side=LEFT)

        R1 = Radiobutton(f6, text="CC/nit", variable=info, value=1)
        R1.pack(side=LEFT)
        R2 = Radiobutton(f6, text="Nombre", variable=info, value=2)
        R2.pack(side=LEFT)
        info.set(1)
Ejemplo n.º 14
0
    def show(frame, iterator):
        """Выводит на экран выборку, заданную в iterator"""

        scrollbar = Scrollbar(frame)
        tree = Treeview(frame, selectmode='none', padding=3,
                                    style='Custom.Treeview', height=REPORT_HEIGHT,
                                    yscrollcommand=scrollbar.set)
        tree.pack(side=LEFT, fill=BOTH, expand=YES)
        scrollbar.config(command=tree.yview)
        scrollbar.pack(side=LEFT, fill=Y)

        tree.tag_configure('1', font=('Verdana', FONT_SIZE_REPORT))
        tree.tag_configure('2', font=('Verdana', FONT_SIZE_REPORT),
                                                           background='#f5f5ff')
        tree.tag_configure('red1', font=('Verdana', FONT_SIZE_REPORT),
                                                               foreground='red')
        tree.tag_configure('red2', font=('Verdana', FONT_SIZE_REPORT),
                                         background='#f5f5ff', foreground='red')
        tree.tag_configure('grey1', font=('Verdana', FONT_SIZE_REPORT),
                                                              foreground='#dddddd')
        tree.tag_configure('grey2', font=('Verdana', FONT_SIZE_REPORT),
                                        background='#f5f5ff', foreground='#dddddd')

        Style().configure('Custom.Treeview', rowheight=FONT_SIZE_REPORT*2)

        columns = ['#' + str(x + 1) for x in range(4)]
        tree.configure(columns=columns)

        for q in range(len(header)):
            tree.heading('#%d' % (q + 1), text=header[q], anchor='w')
            tree.column('#%d' % (q + 1), width=REPORT_SCALE * col_width[q + 1],
                                                                     anchor='w')
        tree.heading('#0', text='', anchor='w')
        tree.column('#0', width=0, anchor='w', minwidth=0)

        flag = True
        for item in iterator:
            if not item.calculation:
                col = []
                col.append(add_s(item.cathegory.name if item.cathegory
                                                                 else u'-Нет-'))
                col.append(add_s(item.name))
                storage = queries.items_in_storage(item)
                col.append(add_s(storage))
                col.append(add_s(item.measure))
                if int(storage) > 0:
                    flag = not flag
                    if flag:
                        tree.insert('', 'end', text='', values=col, tag='2')
                    else:
                        tree.insert('', 'end', text='', values=col, tag='1')
                elif storage == '0':
                    flag = not flag
                    if flag:
                        tree.insert('', 'end', text='', values=col, tag='grey2')
                    else:
                        tree.insert('', 'end', text='', values=col, tag='grey1')
                else:
                    flag = not flag
                    if flag:
                        tree.insert('', 'end', text='', values=col, tag='red2')
                    else:
                        tree.insert('', 'end', text='', values=col, tag='red1')
Ejemplo n.º 15
0
class GUIBuscador(Tk):
    def __init__(self, master=None):
        Tk.__init__(self, master)
        self.gui(master)
        self.dir = 'D:\Talker\Talker\Biblia'
        self.direc = glob("%s\*" % self.dir)

    def gui(self, master):
        self.frm = Frame(master)
        self.frm.pack(side=LEFT, expand=YES, fill=BOTH)
        self.left_side(self.frm)

        self.frm = Frame(master)
        self.frm.pack(side=RIGHT, expand=YES, fill=BOTH)
        self.right_side(self.frm)

    def left_side(self, master):
        self.nombre = Entry(master,
                            justify=CENTER,
                            bd=3,
                            font=('Ravie', 11),
                            textvariable=self.NameVar)
        self.nombre.pack(side=TOP, fill=X)
        self.nombre.bind("<Key>", self.Enter)
        self.texto = Entry(master,
                           justify=CENTER,
                           bd=3,
                           font=('Ravie', 11),
                           textvariable=self.TextVar)
        self.texto.pack(side=TOP, fill=X)
        self.texto.bind("<Key>", self.Enter)
        self.tag = Entry(master,
                         justify=CENTER,
                         bd=3,
                         font=('Ravie', 11),
                         textvariable=self.TagsVar)
        self.tag.pack(side=TOP, fill=X)
        self.tag.bind("<Key>", self.Enter)
        self.tree = Treeview(master)
        self.tree.pack(side=LEFT, expand=YES, fill=BOTH)
        self.tree.bind("<Double-1>", self.OnDoubleClick)

    def right_side(self, master):
        self.text = Text(master,
                         bg='skyblue',
                         bd=5,
                         font=('consolas', 12),
                         fg='red')
        self.text.pack(expand=YES, side=LEFT, fill=BOTH)
        self.yscroller = Scrollbar(master, command=self.text.yview)
        self.yscroller.pack(side=RIGHT, fill=Y)
        self.text['yscrollcommand'] = self.yscroller

    def OnDoubleClick(self, tree):
        try:
            item = self.tree.selection()[0]
            self.tree.item.open(item)
        except IndexError:
            pass

    def Enter(self, event):
        if event.char == ord(13):
            self.buscar()

    def buscar(self):
        name = NameVar.get()
        text = TextVar().get()
        etiqueta = TagsVar.get().split(',')
        self.aciertos = []
        for carpeta in self.direc:
            root = tree.insert("", 1, name[-3], text=name[-3])
            self.aciertos = []
            for versiculo in glob("%s\*" % carpeta):
                with open(versiculo, 'r') as nota:
                    texto = nota.readlines()
                    etiquetas = texto[-1].split(',')
                    if name != '':
                        versiculo = versiculo.replace(".txt", "")
                        if re.search('%s' % name, versiculo):
                            pass
                        else:
                            continue
                    if etiqueta != []:
                        for i in etiquetas:
                            if i in etiqueta:
                                break
                        else:
                            continue
                    if text != '':
                        for line in texto:
                            if re.search(r'%s' % text, line):
                                break
                        else:
                            continue
                    tree.insert(raiz, "end", name, text=name[-1])
                    self.aciertos.append(versiculo)
            if self.aciertos == []:
                self.tree.delete(root)
Ejemplo n.º 16
0
        def __init__(self, parent, controller):
			Frame.__init__(self, parent)
			
			#INSTANCIAS
			global cc, nombre, pago, ref, cod, desc, valor, resultado, total, tiempo, mes, anio, fechapago
			#INSTANCIAS DE LOS WIDGETS
			global e1, e2, e3, e4, e5, tree, l8, lb
			
			cc = IntVar()
			nombre = StringVar()
			pago = StringVar()
			ref = StringVar()
			cod = StringVar()
			desc = StringVar()
			valor = DoubleVar()
			
			tiempo = datetime.date.today()
			anio = time.strftime("%Y")
			mes = time.strftime("%B")
			fechapago = StringVar()
			
			total = 0.0
			resultado = DoubleVar()
			
			tbancos = ['Bancolombia', "Banco Bogotá", "Banco Agrario", "Banco Occidente"]
			
			lupa = PhotoImage(file='img/lupa.png')
			
			tbanktype = ['Corriente','Ahorro']
			fpago = ['Efectivo','Transferencia']
			
			#BUSQUEDA = ["Nombre","CC/Nit"]
			busqueda = StringVar()
			busqueda.trace("w", lambda name, index, mode: buscar())
			dato = StringVar()
			
			#WIDGETS
			
			#========================= HEADER ==============================
			
			self.titleL = Label(self, text="GASTOS", font="bold")
			self.titleL.pack(pady=20, side=TOP)
			
			#========================== WRAPPER ============================
			
			self.wrapper = Frame (self)
			self.wrapper.pack(side=LEFT, fill=Y)
			#Esto centro el wrapper
			#self.wrapper.pack(side=LEFT, fill=BOTH, expand=True)
			
			#======================== BENEFICIARIO =======================
			
			self.lf1 = LabelFrame(self.wrapper, text="Beneficiario")
			self.lf1.pack(fill=X, ipady=5)
			
			self.f0 = Frame(self.lf1)
			self.f0.pack(pady=5, fill=X)#-----------------------------------
			
			l1 = Label(self.f0, text='CC/Nit:')
			l1.pack(side=LEFT)
			
			e1 = Entry(self.f0, textvariable=cc)
			e1.pack(side=LEFT)
			e1.bind('<Return>', buscarB)
			
			b0 = Button(self.f0, text='Buscar:', image=lupa, command=topBeneficiarios)
			b0.pack(side=LEFT)
			
			l2 = Label(self.f0, text='Nombre:')
			l2.pack(side=LEFT)
			e2 = Entry(self.f0, textvariable=nombre)
			e2.pack(side=LEFT, fill=X, expand=1)
			
			self.f1 = Frame(self.lf1)
			self.f1.pack(pady=5, fill=X)#-----------------------------------
			
			l3 = Label(self.f1, text='Forma de Pago:')
			l3.pack(side=LEFT)
			Cbx = Combobox(self.f1, textvariable=pago, values=fpago, width=15)
			Cbx.set('Efectivo')
			Cbx.pack(side=LEFT)
			
			l4 = Label(self.f1, text='Ref. Bancaria:')
			l4.pack(side=LEFT)
			e3 = Entry(self.f1, textvariable=ref)
			e3.pack(side=LEFT, fill=X, expand=1)
			
			b1 = Button(self.f1, text='Buscar:', image=lupa)
			b1.image=lupa
			b1.pack(side=LEFT)
			
			#======================== CONCEPTO ========================
			
			self.lf2 = LabelFrame(self.wrapper, text="Concepto")
			self.lf2.pack(fill=X, ipady=5)
			
			self.f2 = Frame(self.lf2)
			self.f2.pack(pady=5, fill=X)#-------------------------------
			
			l5 = Label(self.f2, text='Código:')
			l5.pack(side=LEFT)
			e4 = Entry(self.f2, textvariable=cod)
			e4.pack(side=LEFT)
			e4.bind('<Return>', buscarC)
			
			b2 = Button(self.f2, text='Buscar:', image=lupa, command=topCtasContables)
			b2.pack(side=LEFT)
			
			self.f3 = Frame(self.lf2)
			self.f3.pack(pady=5, fill=X)#-------------------------------
			
			l6 = Label(self.f3, text='Descripción:')
			l6.pack(side=LEFT)
			e5 = Entry(self.f3, textvariable=desc, state=DISABLED)
			e5.pack(side=LEFT, fill=X, expand=1)
			
			l7 = Label(self.f3, text='Valor:')
			l7.pack(side=LEFT)
			e6 = Entry(self.f3, width=15, textvariable=valor)
			e6.pack(side=LEFT)
			
			b3 = Button(self.f3, text='Agregar:', command=agregar)
			b3.pack(side=LEFT)
			
			#-------------------------- TREEVIEW ---------------------------
			
			self.f4 = Frame(self.wrapper)
			self.f4.pack(pady=5,fill=X)
			
			tree = Treeview(self.f4, height=4, show="headings", columns=('col1','col2','col3'))
			tree.pack(side=LEFT, fill=X, expand=1)
			tree.column('col1', width=20, anchor='center')
			tree.column('col2', width=200, anchor='center')
			tree.column('col3', width=10, anchor='center')
			
			tree.heading('col1', text='Código')
			tree.heading('col2', text='Concepto')
			tree.heading('col3', text='Valor')
			
			scroll = Scrollbar(self.f4,orient=VERTICAL,command=tree.yview)
			tree.configure(yscrollcommand=scroll.set)
			tree.bind("<Delete>", borrar)
			
			#-------------------------- RESULTADOS ---------------------------
			
			self.f5 = Frame(self.wrapper)
			self.f5.pack(pady=5,fill=X)#-------------------
			
			l8 = Label(self.f5, textvariable=resultado, fg="red", bg="white", anchor='e', font="bold, 22", relief= SUNKEN)
			l8.pack(fill=X, side=RIGHT, expand=1)
			
			#-------------------------- FOOTER ---------------------------
			
			self.fBtn = Frame(self.wrapper)
			self.fBtn.pack()#-------------------------------
			
			clean = Button(self.fBtn, text='Cancelar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=limpiar)
			clean.pack(side=RIGHT)
			
			add = Button(self.fBtn, text='Grabar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=grabar)
			add.pack(side=RIGHT)
			
			#========================= ASIDE ===========================
			
			self.aside = Frame(self)
			self.aside.pack(side=TOP, fill=BOTH)
			
			self.wrap1 = Frame(self.aside)
			self.wrap1.pack()
			
			self.viewer = Label(self.wrap1, text="LISTA DE GASTOS")
			self.viewer.pack()
			
			scroll = Scrollbar(self.wrap1, orient=VERTICAL)
			scroll.pack(side=RIGHT, fill=Y)
			
			lb = Listbox(self.wrap1, yscrollcommand=scroll.set, height=20, width=30)
			scroll.config (command=lb.yview)
			lb.pack(fill=BOTH)
			
			self.wrap2 = Frame(self.aside)
			self.wrap2.pack()
			
			load = Button(self.wrap2, text='Cargar lista', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=cargar_lista)
			load.pack(fill=X)
			
			delete = Button(self.wrap2, text='Borrar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=None)
			delete.pack(fill=X)
			
			edit = Button(self.wrap2, text='Modificar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=None)
			edit.pack(fill=X)
			
			buscador = Label(self.wrap2, text="Buscar por Número:")
			buscador.pack()
			E = Entry(self.wrap2, textvariable=busqueda, width=24)
			E.pack()
			E.bind("<KeyRelease>", caps)
Ejemplo n.º 17
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        global cbox, inmueble, loc, nit, nombre, carpeta, grupo, porcentaje, tree, busqueda
        global e1, e2, nitE

        lupa = PhotoImage(file='img/lupa.png')

        inmueble = IntVar()
        loc = StringVar()
        nit = StringVar()
        nombre = StringVar()
        carpeta = IntVar()
        grupo = IntVar()
        porcentaje = DoubleVar()

        lupa = PhotoImage(file='img/lupa.png')

        #BUSQUEDA = ["Nombre","CC/Nit"]
        busqueda = StringVar()
        #busqueda.trace("w", lambda name, index, mode: buscar())
        dato = StringVar()

        #WIDGETS

        #=========================== HEADER ============================

        self.titleL = Label(self,
                            text="RELACIÓN INMUEBLES/PROPIETARIO",
                            font="bold")
        self.titleL.pack(pady=20, side=TOP)

        #=========================== WRAPPER ===========================

        self.wrapper = Frame(self)
        self.wrapper.pack(side=TOP, fill=Y)

        self.f = Frame(self.wrapper)
        self.f.pack(pady=5, fill=X)  #-----------------------------------

        l1 = Label(self.f, text='Inmueble:')
        l1.pack(side=LEFT)

        e1 = Entry(self.f, textvariable=inmueble)
        e1.pack(side=LEFT)
        e1.bind('<Return>', buscarI)

        b1 = Button(self.f, text="Buscar", image=lupa, command=topInmueble)
        b1.image = lupa
        b1.pack(side=LEFT)

        self.f0 = Frame(self.wrapper)
        self.f0.pack(pady=5, fill=X)  #-----------------------------------

        l2 = Label(self.f0, text="Dirección: ")
        l2.pack(side=LEFT)

        e2 = Entry(self.f0, textvariable=loc, width=90, state=DISABLED)
        e2.pack(side=LEFT, fill=X, expand=1)

        self.f1 = Frame(self.wrapper)
        self.f1.pack(pady=5, fill=X)  #-----------------------------------

        self.nit = Label(self.f1, text="CC/Nit")
        self.nit.pack(side=LEFT)

        nitE = Entry(self.f1, textvariable=nit)
        nitE.pack(side=LEFT)
        nitE.bind('<Return>', buscarP)

        self.add = Button(self.f1,
                          text="Buscar",
                          image=lupa,
                          command=topPropietario)
        self.add.pack(side=LEFT)

        self.f2 = Frame(self.wrapper)
        self.f2.pack(pady=5, fill=X)  #-----------------------------------

        self.nombre = Label(self.f2, text="Nombre: ")
        self.nombre.pack(side=LEFT)
        self.nombreE = Entry(self.f2,
                             textvariable=nombre,
                             width=90,
                             state=DISABLED)
        self.nombreE.pack(side=LEFT, fill=X, expand=1)

        self.f3 = Frame(self.wrapper)
        self.f3.pack(pady=5, fill=X)  #-----------------------------------

        self.carpeta = Label(self.f3, text="Carpeta: ")
        self.carpeta.pack(side=LEFT)
        self.carpetaE = Entry(self.f3, textvariable=carpeta, width=5)
        self.carpetaE.pack(side=LEFT)
        carpeta.set(1)

        self.grupo = Label(self.f3, text="Grupo: ")
        self.grupo.pack(side=LEFT)
        self.grupoE = Entry(self.f3, textvariable=grupo, width=5)
        self.grupoE.pack(side=LEFT)
        grupo.set(1)

        self.porcentaje = Label(self.f3, text="Porcentaje: ")
        self.porcentaje.pack(side=LEFT)
        self.porcentajE = Entry(self.f3, textvariable=porcentaje, width=5)
        self.porcentajE.pack(side=LEFT)

        self.chkb0 = Checkbutton(self.f3, text="Representante")
        self.chkb0.pack(side=LEFT)

        self.update = Button(self.f3,
                             text="Cargar",
                             bg='navy',
                             foreground='white',
                             activebackground='red3',
                             activeforeground='white',
                             command=cargar)
        self.update.pack(side=RIGHT)

        self.add = Button(self.f3,
                          text="Agregar",
                          bg='navy',
                          foreground='white',
                          activebackground='red3',
                          activeforeground='white',
                          command=agregar)
        self.add.pack(side=RIGHT)

        self.f4 = Frame(self.wrapper)
        self.f4.pack(pady=5, fill=X)  #-----------------------------------

        tree = Treeview(self.f4,
                        show="headings",
                        columns=('col1', 'col2', 'col3', 'col4', 'col5',
                                 'col6'))
        tree.pack(side=LEFT, fill=X, expand=1)

        tree.column('col1', width=5, anchor='center')
        tree.column('col2', width=150, anchor='center')
        tree.column('col3', width=5, anchor='center')
        tree.column('col4', width=150, anchor='center')
        tree.column('col5', width=1, anchor='center')
        tree.column('col6', width=1, anchor='center')

        tree.heading('col1', text='Cod')
        tree.heading('col2', text='Imnueble')
        tree.heading('col3', text='CC/nit')
        tree.heading('col4', text='Dueño')
        tree.heading('col5', text='Grupo')
        tree.heading('col6', text='%')

        self.scroll = Scrollbar(self.f4, orient=VERTICAL, command=tree.yview)
        tree.configure(yscrollcommand=self.scroll.set)
        """
        #EJEMPLO 2 SÍ FUNCIONA (0)
                self.tree = Treeview(self.f4, height=5, columns=2)
                self.tree.pack()
                self.tree.heading('#0', text='CC/Nit', anchor=W)
                self.tree.heading(2, text='Nombre', anchor=W)"""

        self.f5 = Frame(self.wrapper)
        self.f5.pack(pady=5, fill=X)  #-----------------------------------

        self.delete = Button(self.f5,
                             text="Eliminar",
                             bg='navy',
                             foreground='white',
                             activebackground='red3',
                             activeforeground='white',
                             command=borrar)
        self.delete.pack(side=RIGHT)

        e3 = Entry(self.f5, textvariable=busqueda)
        e3.pack(side=LEFT)
        #e3.bind("<KeyRelease>", caps)

        b3 = Button(self.f5, text='BUSCAR', image=lupa, command=buscar)
        b3.image = lupa
        b3.pack(side=LEFT)
Ejemplo n.º 18
0
class SDCard: 
	def __init__(self, root, prtr, settings, log):
		self.app = root
		self.printer = prtr
		self.settings = settings
		self.log = log
		self.top = None

	def isActive(self):
		return self.top != None

	def start(self):
		self.app.sdchecking = True
		self.printer.send_now("M21")
		
	def sdCheckComplete(self, ready):
		if not ready:
			self.log.logMsg("Error initializing SD card")
		else:
			self.app.sdlisting = True
			self.printer.send_now("M20")
			
	def refresh(self):
		self.top.destroy()
		self.app.sdlisting = True
		self.printer.send_now("M20")
			
	def sdListComplete(self, sdlist):
		top = self.top = Toplevel(self.app) 
		top.title("SD Card Control")
		top.protocol('WM_DELETE_WINDOW', self.delTop)
		f = Frame(top, height=150, width=150)
		f.grid(row=1, column=1);
		self.tree = Treeview(f, height=12, selectmode='browse') 
		self.tree.column("#0", minwidth=100)
		self.tree.bind("<<TreeviewSelect>>", self.treeSelect)
		self.sb = Scrollbar(f)
		self.sb.config(command=self.tree.yview)
		self.tree.config(yscrollcommand=self.sb.set)
			
		self.sb.pack(side=RIGHT, fill=Y)
		self.tree.pack(side=LEFT, fill=BOTH, expand=1)

		SDroot = SDDir('')
		for item in sdlist:
			if item.startswith('/'):
				cd = SDroot
				l = item[1:].split('/')
				for d in l[:-1]:
					ncd = cd.getDir(d)
					if ncd == None:
						ncd = cd.addDir(d)
			
					cd = ncd
				cd.addFile(l[-1], fqn=item)
					
			else:
				SDroot.addFile(item)
				
		SDroot.sortAll()
		
		self.fileMap = {}
		self.startFile = None
		self.loadDir(SDroot, '')
		bf = Frame(top, width=50)
		bf.grid(column=3, row=1)
		
		blf = LabelFrame(bf, text="Print from SD Card", width=48, height=40)
		
		self.bPrint = Button(blf, text='Print', command=self.doPrint, width = 6) 
		self.bPrint.pack()
		blf.pack(fill='x')
		
		blf = LabelFrame(bf, text="Delete from SD Card", width=48, height=40)
		
		self.bDelete = Button(blf, text="Delete", command=self.doDelete, width=6)
		self.bDelete.pack()
		blf.pack(fill='x')
		
		blf = LabelFrame(bf, text="Upload to SD Card", width=48, height=180)

		self.upDir = Label(blf, text="Dir:", justify=LEFT)
		self.upDir.pack()

		ef = Frame(blf)

		l = Label(ef, text="File:", justify=LEFT)
		l.pack(side=LEFT)

		self.entry = Entry(ef, width=12)
		self.entry.pack(side=LEFT)
		fn = 'untitled.g'
		if self.app.GCodeFile:
			fn = os.path.basename(self.app.GCodeFile)
			if len(fn) > 8:
				fn = fn[0:8]
			fn += ".g"
		self.entry.delete(0, END)
		self.entry.insert(0, fn)
		ef.pack()
		
		self.bUpload = Button(blf, text="Upload", command=self.doUpload, width=6)
		self.bUpload.pack()

		blf.pack(fill='x')
		
		if self.app.printing or self.app.sdprinting:
			self.bPrint.config(state=DISABLED)
			self.bUpload.config(state=DISABLED)
			
		if not self.app.GCodeFile:
			self.bUpload.config(state=DISABLED)
			
		blf = Frame(bf)
		self.bExit = Button(blf, text='Exit', command=self.doExit, width=6) 
		self.bExit.pack()
		blf.pack()

		if self.startFile:
			self.tree.selection_set(self.startFile)
			
		self.top.geometry("360x300+100+100")

	def delTop(self):
		self.top.destroy()
		self.top = None
	
	def treeSelect(self, *arg):
		s = self.tree.selection()[0]
		
		try:
			d = s.split(':')[0]
		except:
			d = ""
			
		if len(d) == 0:
			d = '(root)'
			
		self.upDir.config(text="Dir: " + d)
		
		if self.app.printing or self.app.sdprinting or not self.app.GCodeFile:
			self.bUpload.config(state=DISABLED)
		else:
			self.bUpload.config(state=NORMAL)
			
		if ':' in s: # a file is chosen
			if self.app.printing or self.app.sdprinting:
				self.bPrint.config(state=DISABLED)
			else:
				self.bPrint.config(state=NORMAL)
			self.bDelete.config(state=NORMAL)
			
		else: # a directory is chosen
			self.bPrint.config(state=DISABLED)
			self.bDelete.config(state=DISABLED)


	def loadDir(self, d, did):
		d.resetDir()
		nd = d.nextDir()
		while (nd):
			myid = did + '/' + nd.dirName()
			self.tree.insert(did, 'end', myid, text=nd.dirName())
			self.loadDir(nd, myid)
			nd = d.nextDir()
			
		d.resetFile()
		f = d.nextFile()
		while (f):
			myid = did + ':' + f[0]
			self.fileMap[myid] = f[1]
			self.tree.insert(did, 'end', myid, text=f[0])
			if self.startFile == None:
				self.startFile = myid
			f = d.nextFile()		
		
	def doExit(self): 
		self.top.destroy()
		self.top = None

	def doPrint(self): 
		s = self.tree.selection()[0]
		if s in self.fileMap:
			fn = self.fileMap[s].lower()
			self.log.logMsg("Starting print of SD file %s" % fn)
			self.printer.send_now("M23 %s" % fn)  # select the file
			self.printer.send_now("M24") # start the print
			self.app.sdprinting = True
			self.app.setToolbarSDPrint()
			self.top.destroy()
			self.top = None
		
	def doDelete(self):
		s = self.tree.selection()[0]
		if s in self.fileMap:
			fn = self.fileMap[s].lower()
			self.log.logMsg("Deleting file %s" % fn)
			self.printer.send_now("M30 %s" % fn)
			self.refresh()
		
	def doUpload(self):
		bn = self.entry.get()

		try:		
			d = self.tree.selection()[0].split(':')[0]
		except:
			d = ""
			
		if len(d) != 0:
			d += '/'
		
		fn = (d + bn).lower()
		self.log.logMsg("Starting upload to SD file %s" % fn)
		self.printer.send_now("M28 %s" % fn)  # select the file
		self.app.startUpload()
		self.top.destroy()
		self.top = None
Ejemplo n.º 19
0
class GUIBuscador(Tk):

	def __init__(self, master = None):
		Tk.__init__(self, master)
		self.gui(master)
		self.dir = 'D:\Talker\Talker\Biblia'
		self.direc = glob("%s\*" % self.dir)

	def gui(self, master):
		self.frm = Frame(master)
		self.frm.pack(side = LEFT, expand = YES, fill = BOTH)
		self.left_side(self.frm)

		self.frm = Frame(master)
		self.frm.pack(side = RIGHT, expand = YES, fill = BOTH)
		self.right_side(self.frm)

	def left_side(self, master):
		self.nombre = Entry(master, justify = CENTER, bd = 3, font = ('Ravie', 11), textvariable = self.NameVar)
		self.nombre.pack(side = TOP, fill = X)
		self.nombre.bind("<Key>", self.Enter)
		self.texto = Entry(master, justify = CENTER, bd = 3, font = ('Ravie', 11), textvariable = self.TextVar)
		self.texto.pack(side = TOP, fill = X)
		self.texto.bind("<Key>", self.Enter)
		self.tag = Entry(master, justify = CENTER, bd = 3, font = ('Ravie', 11), textvariable = self.TagsVar)
		self.tag.pack(side = TOP, fill = X)
		self.tag.bind("<Key>", self.Enter)
		self.tree = Treeview(master)
		self.tree.pack(side = LEFT, expand = YES, fill = BOTH)
		self.tree.bind("<Double-1>", self.OnDoubleClick)

	def right_side(self, master):
		self.text = Text(master, bg = 'skyblue', bd = 5, 
					font = ('consolas', 12), fg = 'red')
		self.text.pack(expand = YES, side = LEFT, fill = BOTH)
		self.yscroller = Scrollbar(master, command = self.text.yview)
		self.yscroller.pack(side = RIGHT, fill = Y)
		self.text['yscrollcommand'] = self.yscroller

	def OnDoubleClick(self, tree):
		try:
			item = self.tree.selection()[0]
			self.tree.item.open(item)
		except IndexError:
			pass

	def Enter(self, event):
		if event.char == ord(13):
			self.buscar()

	def buscar(self):
		name = NameVar.get()
		text = TextVar().get()
		etiqueta = TagsVar.get().split(',')
		self.aciertos = []
		for carpeta in self.direc:
			root = tree.insert("", 1, name[-3], text = name[-3])
			self.aciertos = []
			for versiculo in glob("%s\*" % carpeta):
				with open(versiculo, 'r') as nota:
					texto = nota.readlines()
					etiquetas = texto[-1].split(',')
					if name != '':
						versiculo = versiculo.replace(".txt", "")
						if re.search('%s' % name, versiculo):
							pass
						else:
							continue
					if etiqueta != []:
						for i in etiquetas:
							if i in etiqueta:
								break
						else:
							continue
					if text != '':
						for line in texto:
							if re.search(r'%s' % text, line):
								break
						else:
							continue
					tree.insert(raiz, "end", name, text = name[-1])
					self.aciertos.append(versiculo)
			if self.aciertos == []:
				self.tree.delete(root)
Ejemplo n.º 20
0
#设置每列宽度和对齐方式
tree.column('c1', width=70, anchor='center')
tree.column('c2', width=40, anchor='center')
tree.column('c3', width=40, anchor='center')
tree.column('c4', width=120, anchor='center')
tree.column('c5', width=100, anchor='center')
tree.column('c6', width=90, anchor='center')

#设置每列表头标题文本
tree.heading('c1', text='姓名')
tree.heading('c2', text='性别')
tree.heading('c3', text='年龄')
tree.heading('c4', text='部门')
tree.heading('c5', text='电话')
tree.heading('c6', text='QQ')
tree.pack(side=tkinter.LEFT, fill=tkinter.Y)

#Treeview组件与垂直滚动条结合
scrollBar.config(command=tree.yview)

#定义并绑定Treeview组件的鼠标单击事件


def treeviewClick(event):
    pass


tree.bind('<Button-1>', treeviewClick)

#插入演示数据
Ejemplo n.º 21
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        #INSTANCIAS
        global cc, nombre, pago, ref, cod, desc, valor, resultado, total, tiempo, mes, anio, fechapago
        #INSTANCIAS DE LOS WIDGETS
        global e1, e2, e3, e4, e5, tree, l8, lb

        cc = IntVar()
        nombre = StringVar()
        pago = StringVar()
        ref = StringVar()
        cod = StringVar()
        desc = StringVar()
        valor = DoubleVar()

        tiempo = datetime.date.today()
        anio = time.strftime("%Y")
        mes = time.strftime("%B")
        fechapago = StringVar()

        total = 0.0
        resultado = DoubleVar()

        tbancos = [
            'Bancolombia', "Banco Bogotá", "Banco Agrario", "Banco Occidente"
        ]

        lupa = PhotoImage(file='img/lupa.png')

        tbanktype = ['Corriente', 'Ahorro']
        fpago = ['Efectivo', 'Transferencia']

        #BUSQUEDA = ["Nombre","CC/Nit"]
        busqueda = StringVar()
        busqueda.trace("w", lambda name, index, mode: buscar())
        dato = StringVar()

        #WIDGETS

        #========================= HEADER ==============================

        self.titleL = Label(self, text="GASTOS", font="bold")
        self.titleL.pack(pady=20, side=TOP)

        #========================== WRAPPER ============================

        self.wrapper = Frame(self)
        self.wrapper.pack(side=LEFT, fill=Y)
        #Esto centro el wrapper
        #self.wrapper.pack(side=LEFT, fill=BOTH, expand=True)

        #======================== BENEFICIARIO =======================

        self.lf1 = LabelFrame(self.wrapper, text="Beneficiario")
        self.lf1.pack(fill=X, ipady=5)

        self.f0 = Frame(self.lf1)
        self.f0.pack(pady=5, fill=X)  #-----------------------------------

        l1 = Label(self.f0, text='CC/Nit:')
        l1.pack(side=LEFT)

        e1 = Entry(self.f0, textvariable=cc)
        e1.pack(side=LEFT)
        e1.bind('<Return>', buscarB)

        b0 = Button(self.f0,
                    text='Buscar:',
                    image=lupa,
                    command=topBeneficiarios)
        b0.pack(side=LEFT)

        l2 = Label(self.f0, text='Nombre:')
        l2.pack(side=LEFT)
        e2 = Entry(self.f0, textvariable=nombre)
        e2.pack(side=LEFT, fill=X, expand=1)

        self.f1 = Frame(self.lf1)
        self.f1.pack(pady=5, fill=X)  #-----------------------------------

        l3 = Label(self.f1, text='Forma de Pago:')
        l3.pack(side=LEFT)
        Cbx = Combobox(self.f1, textvariable=pago, values=fpago, width=15)
        Cbx.set('Efectivo')
        Cbx.pack(side=LEFT)

        l4 = Label(self.f1, text='Ref. Bancaria:')
        l4.pack(side=LEFT)
        e3 = Entry(self.f1, textvariable=ref)
        e3.pack(side=LEFT, fill=X, expand=1)

        b1 = Button(self.f1, text='Buscar:', image=lupa)
        b1.image = lupa
        b1.pack(side=LEFT)

        #======================== CONCEPTO ========================

        self.lf2 = LabelFrame(self.wrapper, text="Concepto")
        self.lf2.pack(fill=X, ipady=5)

        self.f2 = Frame(self.lf2)
        self.f2.pack(pady=5, fill=X)  #-------------------------------

        l5 = Label(self.f2, text='Código:')
        l5.pack(side=LEFT)
        e4 = Entry(self.f2, textvariable=cod)
        e4.pack(side=LEFT)
        e4.bind('<Return>', buscarC)

        b2 = Button(self.f2,
                    text='Buscar:',
                    image=lupa,
                    command=topCtasContables)
        b2.pack(side=LEFT)

        self.f3 = Frame(self.lf2)
        self.f3.pack(pady=5, fill=X)  #-------------------------------

        l6 = Label(self.f3, text='Descripción:')
        l6.pack(side=LEFT)
        e5 = Entry(self.f3, textvariable=desc, state=DISABLED)
        e5.pack(side=LEFT, fill=X, expand=1)

        l7 = Label(self.f3, text='Valor:')
        l7.pack(side=LEFT)
        e6 = Entry(self.f3, width=15, textvariable=valor)
        e6.pack(side=LEFT)

        b3 = Button(self.f3, text='Agregar:', command=agregar)
        b3.pack(side=LEFT)

        #-------------------------- TREEVIEW ---------------------------

        self.f4 = Frame(self.wrapper)
        self.f4.pack(pady=5, fill=X)

        tree = Treeview(self.f4,
                        height=4,
                        show="headings",
                        columns=('col1', 'col2', 'col3'))
        tree.pack(side=LEFT, fill=X, expand=1)
        tree.column('col1', width=20, anchor='center')
        tree.column('col2', width=200, anchor='center')
        tree.column('col3', width=10, anchor='center')

        tree.heading('col1', text='Código')
        tree.heading('col2', text='Concepto')
        tree.heading('col3', text='Valor')

        scroll = Scrollbar(self.f4, orient=VERTICAL, command=tree.yview)
        tree.configure(yscrollcommand=scroll.set)
        tree.bind("<Delete>", borrar)

        #-------------------------- RESULTADOS ---------------------------

        self.f5 = Frame(self.wrapper)
        self.f5.pack(pady=5, fill=X)  #-------------------

        l8 = Label(self.f5,
                   textvariable=resultado,
                   fg="red",
                   bg="white",
                   anchor='e',
                   font="bold, 22",
                   relief=SUNKEN)
        l8.pack(fill=X, side=RIGHT, expand=1)

        #-------------------------- FOOTER ---------------------------

        self.fBtn = Frame(self.wrapper)
        self.fBtn.pack()  #-------------------------------

        clean = Button(self.fBtn,
                       text='Cancelar',
                       bg='navy',
                       foreground='white',
                       activebackground='red3',
                       activeforeground='white',
                       command=limpiar)
        clean.pack(side=RIGHT)

        add = Button(self.fBtn,
                     text='Grabar',
                     bg='navy',
                     foreground='white',
                     activebackground='red3',
                     activeforeground='white',
                     command=grabar)
        add.pack(side=RIGHT)

        #========================= ASIDE ===========================

        self.aside = Frame(self)
        self.aside.pack(side=TOP, fill=BOTH)

        self.wrap1 = Frame(self.aside)
        self.wrap1.pack()

        self.viewer = Label(self.wrap1, text="LISTA DE GASTOS")
        self.viewer.pack()

        scroll = Scrollbar(self.wrap1, orient=VERTICAL)
        scroll.pack(side=RIGHT, fill=Y)

        lb = Listbox(self.wrap1,
                     yscrollcommand=scroll.set,
                     height=20,
                     width=30)
        scroll.config(command=lb.yview)
        lb.pack(fill=BOTH)

        self.wrap2 = Frame(self.aside)
        self.wrap2.pack()

        load = Button(self.wrap2,
                      text='Cargar lista',
                      bg='navy',
                      foreground='white',
                      activebackground='red3',
                      activeforeground='white',
                      command=cargar_lista)
        load.pack(fill=X)

        delete = Button(self.wrap2,
                        text='Borrar',
                        bg='navy',
                        foreground='white',
                        activebackground='red3',
                        activeforeground='white',
                        command=None)
        delete.pack(fill=X)

        edit = Button(self.wrap2,
                      text='Modificar',
                      bg='navy',
                      foreground='white',
                      activebackground='red3',
                      activeforeground='white',
                      command=None)
        edit.pack(fill=X)

        buscador = Label(self.wrap2, text="Buscar por Número:")
        buscador.pack()
        E = Entry(self.wrap2, textvariable=busqueda, width=24)
        E.pack()
        E.bind("<KeyRelease>", caps)
Ejemplo n.º 22
0
keywords.heading("#0", text="Word")
keywords.heading("Frequency", text="Frequency")
keywords.column("#0", anchor=tk.CENTER)
keywords.column("Frequency", anchor=tk.CENTER)
keywordIndex={}
top10Words=topWords[-10:]

tree_i=0
for index,row in top10Words.iteritems():
    treeind=keywords.insert(parent="",index=0,text=str(index), values=(str(row)))
    keywordIndex[tree_i]=treeind
    tree_i+=1
    
rightPan.add(keywords)
keywords.pack()


#Sample    
lab4 =tk.Label(rightPan, text="Categorization Sample",font='arial 10 bold')
rightPan.add(lab4)
lab4.pack()


scrollbar = tk.Scrollbar(rightPan)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

listbox = tk.Text(rightPan,wrap=tk.WORD,width=55,height=40)
listbox.pack()

# attach listbox to scrollbar
Ejemplo n.º 23
0
	def __init__(self, parent, controller):
		Frame.__init__(self, parent)
		
		global e0, e1, e2, e3, e4, e5, e6, e7, e8, CbxVlr, observaciones, scroll, tree, pdfB, add
		global cc, arrend, inmueble, codigo, tel, valor
		global Cbx, meses, mes1, mes2, tiempo, fechapago, anio, mes
		global prop, nit, tp, subtotal, iva, total
				
		#VARIABLES
		tiempo = datetime.date.today()
		anio = time.strftime("%Y")
		mes = time.strftime("%B")
		fechapago = StringVar()
		
		cc = StringVar()
		arrend = StringVar()
		
		inmueble = StringVar()
		codigo = StringVar()
		tel = StringVar()
		valor = DoubleVar()
		
		prop = StringVar()
		nit = StringVar()
		tp = StringVar()
		
		subtotal = DoubleVar()
		iva = DoubleVar()
		total = DoubleVar()
		
		mes1 = StringVar()
		mes2 = StringVar()
		meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]

		#WIDGETS
		
		#=========================== HEADER ============================
		
		self.titleL = Label(self, text="FACTURA INQUILINO", font="bold")
		self.titleL.pack(pady=20, side=TOP)
		
		#========================= WRAPPER 1 ===========================
		
		wrapper = Frame (self)
		wrapper.pack(fill='both')

		#======================= DATOS GENERALES =======================
		
		self.lf = LabelFrame(wrapper, text="Datos generales")
		self.lf.pack(side=LEFT)#-------------------------------

		self.f0 = Frame(self.lf)
		self.f0.pack(pady=5,fill=X)#---------------------------

		self.ccnitL = Label(self.f0, text='CC/Nit:')
		self.ccnitL.pack(side=LEFT)
		e0 = Entry(self.f0, textvariable=cc, width=30)
		e0.pack(side=LEFT)
		
		self.b1 = Button (self.f0, text='Buscar', command=buscar)
		self.b1.pack(side=LEFT)

		self.f1 = Frame(self.lf)
		self.f1.pack(pady=5,fill=X)#---------------------------
		
		self.nombreL = Label(self.f1, text='Nombre:')
		self.nombreL.pack(side=LEFT)
		e1 = Entry(self.f1, textvariable=arrend, width=50, state=DISABLED)
		e1.pack(side=LEFT,fill=X)

		self.f2 = Frame(self.lf)
		self.f2.pack(pady=5,fill=X)#---------------------------
		
		self.inmuebleL = Label(self.f2, text='Inmueble:')
		self.inmuebleL.pack(side=LEFT)
		e2 = Entry(self.f2, textvariable=inmueble, state=DISABLED, width=48)
		e2.pack(side=LEFT,fill=X)
		
		self.f3 = Frame(self.lf)
		self.f3.pack(pady=5,fill=X)#---------------------------
		
		self.inmuebleL = Label(self.f3, text='Código: ')
		self.inmuebleL.pack(side=LEFT)
		e3 = Entry(self.f3, textvariable=codigo, state=DISABLED, width=5)
		e3.pack(side=LEFT,fill=X)
		
		self.tel = Label(self.f3, text='Teléfono: ')
		self.tel.pack(side=LEFT)
		e4 = Entry(self.f3, textvariable=tel, state=DISABLED, width=15)
		e4.pack(side=LEFT,fill=X)
		
		self.precio = Label(self.f3, text='Arriendo $: ')
		self.precio.pack(side=LEFT)
		e5 = Entry(self.f3, textvariable=valor, state=DISABLED, width=15)
		e5.pack(side=LEFT,fill=X)
		
		#======================= DATOS PROPIETARIO =======================
		
		wrap = Frame(wrapper)
		wrap.pack(side=RIGHT)
		
		lf = LabelFrame(wrap, text="Propietario")
		lf.pack()#-------------------------
		#lf.pack_forget()#-------------------------
		
		f0 = Frame(lf)
		f0.pack(pady=5,fill=X)#---------------------------
		
		nombreL = Label(f0, text='Nombre: ')
		nombreL.pack(side=LEFT)
		e6 = Entry(f0, textvariable=prop, width=48, state=DISABLED)
		e6.pack(side=LEFT,fill=X)
		
		f1 = Frame(lf)
		f1.pack(pady=5,fill=X)#---------------------------

		ccnitL = Label(f1, text='CC/Nit: ')
		ccnitL.pack(side=LEFT)
		e7 = Entry(f1, textvariable=nit, state=DISABLED, width=48)
		e7.pack(side=LEFT)
		
		f2 = Frame(wrap)
		f2.pack(pady=5,fill=X)#---------------------------
		
		self.lb = Label(f2, text=None)
		self.lb.pack(side=LEFT)
		
		f3 = Frame(wrap)
		f3.pack(pady=5,fill=X)#---------------------------
		
		"""
		self.inmuebleL = Label(f2, text='Tipo Persona: ')
		self.inmuebleL.pack(side=LEFT)
		e8 = Entry(f2, textvariable=tp, state=DISABLED, width=40)
		e8.pack(side=LEFT,fill=X)
		"""
		
		l = Label(f3, text='SubTotal ')
		l.pack(side=LEFT)
		e8 = Entry(f3, textvariable=subtotal, state=DISABLED, width=12)
		e8.pack(side=LEFT,fill=X)
		
		l = Label(f3, text='IVA ')
		l.pack(side=LEFT)
		e9 = Entry(f3, textvariable=iva, state=DISABLED, width=12)
		e9.pack(side=LEFT,fill=X)
		
		l = Label(f3, text='Total ')
		l.pack(side=LEFT)
		e10 = Entry(f3, textvariable=total, state=DISABLED, width=12)
		e10.pack(side=LEFT,fill=X)
		
		f4 = Frame(wrap)
		f4.pack(pady=5,fill=X)#---------------------------
		
		#========================= FACTURACIÓN =========================
		
		self.lf1 = LabelFrame(self, text="Periodo a facturar")
		self.lf1.pack(anchor=W,pady=5,fill=X)#-------------------------

		self.f2 = Frame(self.lf1)
		self.f2.pack(pady=5,fill=X)#---------------------------

		self.mesiniL = Label(self.f2, text='Mes inicial:')
		self.mesiniL.pack(padx=5,side=LEFT)

		CbxVlr = Combobox(self.f2, textvariable=mes1, values=meses, width=10, state=DISABLED)
		CbxVlr.set(mes)
		CbxVlr.pack(side=LEFT)

		self.emptyL = Label(self.f2)###VACIO###
		self.emptyL.pack(padx=5, side=LEFT)
	
		self.yeariniL = Label(self.f2, text='Año:')
		self.yeariniL.pack(side=LEFT)
		self.yeariniE = Entry(self.f2, textvariable=fechapago, width=8, state=DISABLED)
		fechapago.set(anio)
		self.yeariniE.pack(side=LEFT)

		self.mesfinL = Label(self.f2, text='Mes final:')
		self.mesfinL.pack(padx=5,side=LEFT)

		self.mesfinCbx = Combobox(self.f2, textvariable=mes2, values=meses, width=10)
		self.mesfinCbx.set(mes)
		self.mesfinCbx.pack(side=LEFT)

		self.emptyL = Label(self.f2)###VACIO###
		self.emptyL.pack(padx=5, side=LEFT)

		self.yearfinL = Label(self.f2, text='Año:')
		self.yearfinL.pack(side=LEFT)
		self.yearfinE = Entry(self.f2, textvariable=fechapago, width=8)
		fechapago.set(anio)
		self.yearfinE.pack(side=LEFT)

		self.emptyL = Label(self.f2)###VACIO###
		self.emptyL.pack(padx=5, side=LEFT)
		
		pdfB = Button(self.f2, text="Facturar", command=agregar, state=DISABLED)
		pdfB.pack(side=LEFT)

		#========================== TREEVIEW ===========================
		
		self.f3 = Frame(self)
		self.f3.pack(pady=5,fill=X)#------------------------------------
		
		tree = Treeview(self.f3, height=4, show="headings", columns=('col1','col2'))
		tree.pack(side=LEFT, fill=X, expand=1)
		
		tree.column('col1', width=250, anchor='center')
		tree.column('col2', width=5, anchor='center')
		
		tree.heading('col1', text='Descripción')
		tree.heading('col2', text='Valor')
		
		scroll = Scrollbar(self.f3,orient=VERTICAL,command=tree.yview)
		tree.configure(yscrollcommand=scroll.set)
		tree.bind("<Delete>", borrar)
		
		#======================== OBSERVACIONES ========================

		self.f4 = Frame(self)
		self.f4.pack(pady=5,fill=X)#--------------------

		self.notesL = Label(self.f4, text='Observaciones:')
		self.notesL.pack(side=LEFT)

		self.f5 = Frame(self)
		self.f5.pack(pady=5,fill=X)#-------------------

		observaciones = Text(self.f5, height=5)
		observaciones.pack(fill=X, side=LEFT, expand=1)
		
		#=========================== BOTONES ===========================
		
		footer = Frame(self)
		footer.pack()#-------------------------------
		
		clean = Button(footer, text='Cancelar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=cancelar)
		clean.pack(side=RIGHT)
		
		add = Button(footer, text='Grabar', bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=grabar, state=DISABLED)
		add.pack(side=RIGHT)
Ejemplo n.º 24
0
	def __init__(self, parent, controller):
		Frame.__init__(self, parent)
		
		global codigo, descripcion, tree, busqueda, info
		global e3
		
		lupa = PhotoImage(file='img/lupa.png')
		
		codigo = StringVar()
		descripcion = StringVar()
		busqueda = StringVar()
		info = IntVar()
		
		#WIDGETS
		
		#=========================== HEADER ============================
		
		self.titleL = Label(self, text="CUENTAS CONTABLES", font="bold")
		self.titleL.pack(pady=20, side=TOP)
		
		#=========================== WRAPPER ===========================
		
		self.wrapper = Frame (self)
		self.wrapper.pack(side=TOP, fill=Y)
		#self.wrapper.pack(side=LEFT, fill=Y) #UBICA EL FORM A LA IZQ
		
		self.f0 = Frame(self.wrapper)
		self.f0.pack(pady=5, fill=X)#-----------------------------------
		
		l1 = Label (self.f0, text="Código:")
		l1.pack(side=LEFT)
		e1 = Entry (self.f0, textvariable=codigo, width=20)
		e1.pack(side=LEFT)
		e1.bind("<KeyRelease>", caps)
		e1.focus_set()
		
		self.f2 = Frame(self.wrapper)
		self.f2.pack(pady=5, fill=X)#-----------------------------------
		
		l2 = Label (self.f2, text="Descripción: ")
		l2.pack(side=LEFT)
		e2 = Entry (self.f2, textvariable=descripcion, width=60)
		e2.pack(side=LEFT, fill=X, expand=1)
		e2.bind("<KeyRelease>", caps)
		
		self.f3 = Frame(self.wrapper)
		self.f3.pack(pady=5, fill=X)#-----------------------------------
		
		b1 = Button (self.f3, text="Cargar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=cargar)
		b1.pack(side=RIGHT)
		
		b2 = Button (self.f3, text="Agregar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=agregar)
		b2.pack(side=RIGHT)
		
		#========================== TREEVIEW ===========================
		
		self.f4 = Frame(self.wrapper)
		self.f4.pack(pady=5, fill=X)#-----------------------------------
		
		tree = Treeview(self.f4, show="headings", columns=('col1','col2'))
		tree.pack(side=LEFT, fill=X, expand=1)
		tree.column('col1', width=0, anchor='center')
		tree.column('col2', width=150, anchor='w')
		
		tree.heading('col1', text='Código')
		tree.heading('col2', text='Descripción')
		
		self.scroll = Scrollbar(self.f4,orient=VERTICAL,command=tree.yview)
		tree.configure(yscrollcommand=self.scroll.set)
		
		self.f5 = Frame(self.wrapper)
		self.f5.pack(pady=5, fill=X)#-----------------------------------
		
		self.delete = Button (self.f5, text="Eliminar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=borrar)
		self.delete.pack(side=RIGHT)
		
		e3 = Entry(self.f5, textvariable=busqueda)
		e3.pack(side=LEFT)
		e3.bind("<KeyRelease>", caps)
		
		b3 = Button(self.f5, text='BUSCAR', image=lupa, command=buscar)
		b3.image = lupa
		b3.pack(side=LEFT)
		
		R1 = Radiobutton(self.f5, text="Código", variable=info, value=1)
		R1.pack(side=LEFT)
		R2 = Radiobutton (self.f5, text="Desc", variable=info, value=2)
		R2.pack(side=LEFT)
		info.set(1)
Ejemplo n.º 25
0
class PickerGUI():
    """ This class maintains the TK Inter user interface and contains all the
        data from ontology. Data can be loaded from (and store to) .rdf using
        RDFReader class or from JSON (that is much faster). """
    def __init__(self, master, annotationEffect):
        self.fileName = ""
        self.namespace = None
        self.aEffect = annotationEffect
        self.root = master
        self.root.bind('<Escape>', self.close)
        self.leftFrame = Tkinter.Frame(master)
        self.middleFrame = Tkinter.Frame(master)
        self.rightFrame = Tkinter.Frame(master)
        self.leftFrame.pack(side=Tkinter.LEFT, padx=10, pady=10)
        self.middleFrame.pack(side=Tkinter.LEFT)
        self.rightFrame.pack(side=Tkinter.LEFT)
        self.bottomLeftFrame = Tkinter.Frame(self.leftFrame)
        self.bottomMiddleFrame = Tkinter.Frame(self.middleFrame)
        self.bottomRightFrame = Tkinter.Frame(self.rightFrame)
        self.menuBar = Tkinter.Menu(master)
        self.fileMenu = Tkinter.Menu(self.menuBar, tearoff=0)
        self.fileMenu.add_command(label="Load Ontology",
                                  accelerator="Ctrl+L",
                                  command=self.loadOntology)
        self.fileMenu.add_command(label="Save to Ontology",
                                  accelerator="Ctrl+S",
                                  command=self.saveOntology)
        self.menuBar.add_cascade(label="File", menu=self.fileMenu)
        self.fileMenuUndo = Tkinter.Menu(self.menuBar, tearoff=0)
        self.fileMenuUndo.add_command(label="Undo",
                                      accelerator="Ctrl+Z",
                                      command=self.undoOperation)
        self.root.bind_all("<Control-l>", self.loadOntology)
        self.root.bind_all("<Control-s>", self.saveOntology)
        self.root.bind_all("<Control-z>", self.undoOperation)
        self.menuBar.add_cascade(label="Edit", menu=self.fileMenuUndo)
        # Treeview to choose Ontology Entities to annotate new elements
        self.treeEntityPicker = Treeview(self.leftFrame)
        self.treeEntityPicker.heading("#0", text="Entity/Subject")
        self.treeEntityPicker.column("#0",
                                     width=c.BASIC_WIDTH,
                                     stretch=Tkinter.NO)
        # Treeview to choose Object Properties
        self.treePropertyPicker = Treeview(self.middleFrame)
        self.treePropertyPicker.heading("#0", text="Properties")
        self.treePropertyPicker.column("#0",
                                       width=c.ENLARGERD_WIDTH,
                                       stretch=Tkinter.NO)
        # Treeview to choose range individuals of property
        self.treeRangePicker = Treeview(self.rightFrame)
        self.treeRangePicker.heading("#0", text="Object")
        self.treeRangePicker.column("#0",
                                    width=c.BASIC_WIDTH,
                                    stretch=Tkinter.NO)
        self.buttonAdd = Tkinter.Button(self.bottomLeftFrame)
        self.buttonAdd["text"] = "Add"
        self.buttonAddProperty = Tkinter.Button(self.bottomRightFrame)
        self.buttonAddProperty["text"] = "Add Prop."
        self.buttonEditProperty = Tkinter.Button(self.bottomRightFrame)
        self.buttonEditProperty["text"] = "Edit Prop."
        self.buttonRemoveProperty = Tkinter.Button(self.bottomRightFrame)
        self.buttonRemoveProperty["text"] = "Delete Prop."
        self.buttonSeparateAdd = Tkinter.Button(self.bottomLeftFrame)
        self.buttonSeparateAdd["text"] = "Add Separately"
        self.buttonReplace = Tkinter.Button(self.bottomLeftFrame)
        self.buttonReplace["text"] = "Replace"
        self.buttonRemove = Tkinter.Button(self.bottomLeftFrame)
        self.buttonRemove["text"] = "Remove"
        self.buttonClear = Tkinter.Button(self.bottomMiddleFrame)
        self.buttonClear["text"] = "Clear Views"
        # define options for opening or saving a file
        self.file_opt = options = {}
        options["defaultextension"] = ".rdf"
        options["filetypes"] = [("RDF files", ".rdf")]
        options["parent"] = master
        options["title"] = "Load a RDF Ontology"
        self.resetVariables()

    def prepare(self, master):
        self.treeEntityPicker.pack(pady=15)
        self.treePropertyPicker.pack(pady=15)
        self.treePropertyPicker.bind("<ButtonRelease-1>", self.propertySelect)
        # Handle double click on Property Tree
        self.treePropertyPicker.bind("<Double-1>", self.propertyClick)
        self.treeRangePicker.pack(pady=15)
        self.bottomLeftFrame.pack(fill=Tkinter.X)
        self.bottomMiddleFrame.pack(fill=Tkinter.X)
        self.bottomRightFrame.pack(fill=Tkinter.X, padx=25)
        self.buttonAdd.pack(side=Tkinter.LEFT)
        self.buttonSeparateAdd.pack(side=Tkinter.LEFT)
        self.buttonReplace.pack(side=Tkinter.LEFT)
        self.buttonAddProperty.pack(side=Tkinter.LEFT)
        self.buttonEditProperty.pack(side=Tkinter.LEFT)
        self.buttonRemoveProperty.pack(side=Tkinter.LEFT)
        self.buttonRemove.pack(side=Tkinter.LEFT)
        self.buttonClear.pack(side=Tkinter.BOTTOM)
        self.buttonAdd.bind("<ButtonRelease-1>", self.buttonAddClick)
        self.buttonAdd.bind("<Return>", self.buttonAddClick)
        self.buttonSeparateAdd.bind("<ButtonRelease-1>",
                                    self.buttonSeparateAddClick)
        self.buttonSeparateAdd.bind("<Return>", self.buttonSeparateAddClick)
        self.buttonAddProperty.bind("<ButtonRelease-1>",
                                    self.buttonAddPropertyClick)
        self.buttonAddProperty.bind("<Return>", self.buttonAddPropertyClick)
        self.buttonEditProperty.bind("<ButtonRelease-1>",
                                     self.buttonEditPropertyClick)
        self.buttonEditProperty.bind("<Return>", self.buttonEditPropertyClick)
        self.buttonRemoveProperty.bind("<ButtonRelease-1>",
                                       self.buttonRemovePropertyClick)
        self.buttonRemoveProperty.bind("<Return>",
                                       self.buttonRemovePropertyClick)
        self.buttonReplace.bind("<ButtonRelease-1>", self.buttonReplaceClick)
        self.buttonReplace.bind("<Return>", self.buttonReplaceClick)
        self.buttonRemove.bind("<ButtonRelease-1>", self.buttonRemoveClick)
        self.buttonRemove.bind("<Return>", self.buttonRemoveClick)
        self.buttonClear.bind("<ButtonRelease-1>", self.buttonClearClick)
        self.buttonClear.bind("<Return>", self.buttonClearClick)
        master.config(menu=self.menuBar)
        self.loadSerializedOntology(self.treeEntityPicker)

    def resetVariables(self):
        # Keys: classHierarchy, instances; Values: temporary data
        # (to be serialized and saved)
        self.tempData = {}
        # Key: Class Name; Value: List of IDs of instances of that class
        self.instancesbyClass = {}
        # Key: Property Name; Values: Entities that belong to its range
        self.rangesByProperty = {}
        # Key: Property Name; Values: Entities that belong to its domain
        self.domainsByProperty = {}
        self.ontologyTree = None
        self.lastId = -1
        self.defaultName = ""
        self.defaultTypeValue = ""
        self.defaultTypeValue = ""
        self.undoStack = []
        self.selectedEntities = None
        self.selectedRange = None
        self.selectedProperties = None
        # Keys: properties; Values: occurrences of the property
        # i.e. (s,p,o) triples
        self.objectProperties = {}
        # (s,p,o) triples with object properties to be added to the ontology
        self.objectPropertiesToAdd = []
        self.objectPropertiesToRemove = []
        # Key: TreeView element ID. #Value: (s,p,o) triple.
        self.propertiesByTreeID = {}
        self.dataTypeProperties = {}
        self.dataTypePropertiesToAdd = []
        self.dataTypePropertiesToRemove = []

    def buttonAddClick(self, event):
        """ Button handler for adding entities. """
        self.prepareSelectedEntities()
        close = self.aEffect.addAnnotation(separateAdd=False)
        if close:
            self.closeGUI(isInstanceListChanged=True)

    def buttonSeparateAddClick(self, event):
        """ Button handler for adding entities separately. """
        self.prepareSelectedEntities()
        close = self.aEffect.addAnnotation(separateAdd=True)
        if close:
            self.closeGUI(isInstanceListChanged=True)

    def buttonAddPropertyClick(self, event):
        """ Button handler for adding properties. """
        selectedProperty, tags, rowID = self.prepareSelectedProperty(
            limitObjects=False)
        if self.validateProperty(selectedProperty, tags):
            serialize = self.aEffect.addProperty(selectedProperty, tags)
            if serialize:
                self.serialize()
                self.refreshPropertyTree(self.treePropertyPicker)

    def buttonEditPropertyClick(self, event):
        """ Button handler for editing properties. Removes the previous
            (s,p,o) triple and adds a new one. """
        selectedProperty, tags, rowID = self.prepareSelectedProperty()
        if self.validateProperty(selectedProperty, tags):
            serialize = self.aEffect.editProperty(selectedProperty, tags,
                                                  rowID)
            if serialize:
                self.serialize()
                self.refreshPropertyTree(self.treePropertyPicker)

    def buttonRemovePropertyClick(self, event):
        """ Button handler for removing properties. """
        selectedProperties, tags, rowIDs = \
            self.getSelectedProperty(multiselect=True)

        for p in selectedProperties:
            if not self.validateProperty(p, ""):
                return
        for p, tagList in tags.iteritems():
            if not self.validateProperty("", tagList):
                return
        ser = self.aEffect.removeProperty(selectedProperties, tags, rowIDs)
        if ser:
            self.serialize()
            self.refreshPropertyTree(self.treePropertyPicker)

    def validateProperty(self, property, tags):
        """" Validate that the selected property can be chosen
        :param property: The property name
        :param tags: A list of tags of a selected tree row, containing
        the property name in the case of an instance
        :return: boolean Whether the property is valid
        """
        valid = True
        invalidProperties = [
            c.HAS_SVG_PROPERTY, c.HAS_X_COORD_PR, c.HAS_Y_COORD_PR
        ]
        if property in invalidProperties:
            valid = False
            tkMessageBox.showwarning(c.PROP, c.PROP_INVALID_PROP % property)
        elif tags:
            for tag in tags:
                if tag in invalidProperties:
                    tkMessageBox.showwarning(c.PROP, c.PROP_INVALID_PROP % tag)
                    valid = False
                    break
        return valid

    def prepareSelectedProperty(self, limitObjects=True):
        """ Returns the selected property and ensures that instances of its
            domain (for its range, use validateSelectedRange) have been
            selected.
        :param limitObjects: True if only one object can be selected
        :return: selected property
        """

        selectedProperty, tags, rowID = self.getSelectedProperty()
        if selectedProperty:
            validEntity = self.prepareSelectedEntities(allowOnlyInstances=True)
            if validEntity:
                if len(self.selectedEntities) > 0:
                    if limitObjects and len(self.selectedEntities) > 1:
                        tkMessageBox.showwarning(c.PROP, c.PROP_MORE_SUBJ)
                    else:
                        # TODO: validate that subject and object are instances
                        # and are within the domain and range of the property
                        return selectedProperty, tags, rowID
                else:
                    tkMessageBox.showwarning(c.PROP, c.PROP_NO_SUBJ)
        return None, None, None

    def getSelectedProperty(self, multiselect=False):
        """ Fetches the selected Property from the middle TreeView and handles
            incorrect selections. Returns a triple with the property name
            (as in the Treeview), its tags and the row ID on the TreeView.
        :param multiselect: Is set to 'True' if selection of multiple
            properties is allowed, 'False' otherwise.
        """

        selectedProperty = None
        tags = None
        rowID = None
        selectedProperties = self.treePropertyPicker.selection()
        if len(selectedProperties) == 0:
            tkMessageBox.showwarning(c.PROP, c.PROP_NO_PROP)
        elif multiselect:
            rowIDs = {}
            properties = []
            tags = {}
            for rowID in selectedProperties:
                p = self.treePropertyPicker.item(rowID, "text")
                properties.append(p)
                tags[p] = self.treePropertyPicker.item(rowID, "tags")
                rowIDs[p] = rowID
            return properties, tags, rowIDs
        elif len(selectedProperties) > 1:
            tkMessageBox.showwarning(c.PROP, c.PROP_MORE_PROP)
        else:
            rowID = selectedProperties[0]
            selectedProperty = self.treePropertyPicker.item(rowID, "text")
            tags = self.treePropertyPicker.item(rowID, "tags")
        return selectedProperty, tags, rowID

    def buttonReplaceClick(self, event):
        """ Button handler for replace svg elements in annotation. """
        self.prepareSelectedEntities()
        close = self.aEffect.replaceAnnotation()
        if close:
            self.closeGUI(isInstanceListChanged=True)

    def buttonRemoveClick(self, event):
        """ Button handler for moving svg elements from annotation. """
        self.prepareSelectedEntities()
        close = self.aEffect.removeAnnotation(None, fromUndo=False)
        if close:
            self.closeGUI(isInstanceListChanged=True)

    def undoOperation(self, *args):
        """ Button handler for undo operation. """
        self.prepareSelectedEntities()
        close = self.aEffect.undoAnnotation()
        if close:
            self.closeGUI(isInstanceListChanged=True)

    def buttonClearClick(self, event):
        """ Button handler for clearing tree view and set
            it into default state. """
        self.treeEntityPicker.delete(*self.treeEntityPicker.get_children())
        self.populatePropertyTree(self.treeEntityPicker, [])
        self.treeRangePicker.delete(*self.treeRangePicker.get_children())

    def propertyClick(self, event):
        """ Load the individuals that belong to the range of the selected
            Property on the right-hand TreeView, and to its domain on the
            left-hand TreeView.
        """

        selectedProperty, tags, rowID = self.getSelectedProperty()
        if selectedProperty and c.TREE_TAG_PROPERTIES_HEADER not in tags:
            self.treeRangePicker.delete(*self.treeRangePicker.get_children())
            self.treeEntityPicker.delete(*self.treeEntityPicker.get_children())
            if c.TREE_TAG_INSTANCE in tags:
                # Auto-expand branches of domain and range of selected property
                propertyTriple = self.propertiesByTreeID[rowID]
                self.selectedEntities = [propertyTriple[c.SUBJECT_INDEX]]
                if c.TREE_TAG_OBJECT_PROPERTY in tags:
                    # Auto select range only for object properties
                    self.selectedRange = [propertyTriple[c.OBJECT_INDEX]]
                else:
                    self.selectedRange = []
                # Fetch property name from tags
                for tag in tags:
                    if tag not in c.TREE_TAGS:
                        selectedProperty = tag
                        break

            if selectedProperty in self.rangesByProperty:
                rangeEntities = self.rangesByProperty[selectedProperty]
            else:
                rangeEntities = None
            if selectedProperty in self.domainsByProperty:
                domainEntities = self.domainsByProperty[selectedProperty]
            else:
                domainEntities = None

            self.populatePropertyTree(self.treeEntityPicker,
                                      domainEntities,
                                      selectPrevious="subject")
            if c.TREE_TAG_DATATYPE_PROPERTY in tags:
                self.treeRangePicker.delete(
                    *self.treeRangePicker.get_children())
            else:
                self.populatePropertyTree(self.treeRangePicker,
                                          rangeEntities,
                                          selectPrevious="object")

    def propertySelect(self, event):
        """ Take note of selected properties. """
        selectedPropertyIDs = self.treePropertyPicker.selection()
        self.selectedProperties = [
            self.treePropertyPicker.item(rowID, "text")
            for rowID in selectedPropertyIDs
        ]

    def populatePropertyTree(self,
                             treeViewInstance,
                             entityList,
                             selectPrevious="none"):
        """ Populate an Entity & Individuals TreeView according to the range
            or domain of a property (passed as a list of entities).
            For each entity of the list, its children (entities or individuals)
            are added to the TreeView.
        :param treeViewInstance: View of the tree.
        :param entityList: List of entities.
        :param selectPrevious: This should be "object", "subject" or "none".
        """

        subtrees = []
        if entityList:
            for entity in entityList:
                subtree = self.getSubTreeFromEntity(entity, self.ontologyTree)
                if subtree:
                    subtrees.append(subtree)
        if subtrees:
            for tree in subtrees:
                self.stack = ['']
                self.subTreeFromFileRecursive(tree, treeViewInstance,
                                              selectPrevious)
        else:
            self.stack = ['']
            self.subTreeFromFileRecursive(self.ontologyTree, treeViewInstance,
                                          selectPrevious)

    def getSubTreeFromEntity(self, entity, entityTree):
        """ Returns a subTree with the given entity as the root.
        :param entity: Searched entity for a root of a tree.
        :param entityTree: Tree structure that should be searched.
        :return: subtree with the entity as a root.
        """

        nodeQueue = entityTree[:]
        while nodeQueue:
            element = nodeQueue.pop(0)
            if isinstance(element[0], basestring):
                if element[0] == entity:
                    return element
            iternodes = iter(element)
            next(iternodes)
            for n in iternodes:
                nodeQueue.append(n)
        return []

    def prepareSelectedEntities(self, allowOnlyInstances=False):
        """ Initializes the selectedEntities and selectedRange properties
            (Entities and/or Instances)  according to the user's selection on
            the treeView.
        :param allowOnlyInstances: 'True' if only instances should be added.
        return: 'True' if preparation process finishes correctly,
            'False' otherwise.
        """

        selectedSubjectIDs = self.treeEntityPicker.selection()
        selectedEntities = []
        correct = True
        for s in selectedSubjectIDs:
            text = self.treeEntityPicker.item(s, "text")
            tags = self.treeEntityPicker.item(s, "tags")
            # Select all children of "Instances" group
            if c.TREE_TAG_INSTANCES_HEADER in tags:
                for child in self.treeEntityPicker.get_children(s):
                    text = self.treeEntityPicker.item(child, "text")
                    selectedEntities.append(text)
            else:
                if allowOnlyInstances and c.TREE_TAG_ENTITY in tags:
                    tkMessageBox.showwarning(c.SELECT, c.SELECT_INST)
                    correct = False
                elif text not in selectedEntities:
                    selectedEntities.append(text)
        self.selectedEntities = selectedEntities
        selectedObjectIDs = self.treeRangePicker.selection()
        selectedRange = []
        for o in selectedObjectIDs:
            text = self.treeRangePicker.item(o, "text")
            tags = self.treeRangePicker.item(o, "tags")
            # Select all children of "Instances" group
            if c.TREE_TAG_INSTANCES_HEADER in tags:
                for child in self.treeRangePicker.get_children(o):
                    text = self.treeRangePicker.item(child, "text")
                    selectedRange.append(text)
            else:
                if allowOnlyInstances and c.TREE_TAG_ENTITY in tags:
                    tkMessageBox.showwarning(c.SELECT, c.SELECT_INST)
                    correct = False
                elif text not in selectedRange:
                    selectedRange.append(text)
        self.selectedRange = selectedRange
        return correct

    def saveOntology(self, *args):
        """ This method saves the ontology. It takes data from JSON and
            stores it in the rdf file.
        """

        if not self.instancesbyClass:
            tkMessageBox.showwarning(c.SAVE, c.SAVE_NOT_LOADED)
            return

        if tkMessageBox.askyesno(c.SAVE, c.SAVE_TO_ORIGINAL):
            fileName = self.fileName
        else:
            fileName = tkFileDialog.askopenfilename(**self.file_opt)

        if fileName:
            self.readerOperation(fileName,
                                 self.namespace,
                                 serialize=False,
                                 save=True)

            filePath = os.path.join(os.path.expanduser("~"), c.JSON_FILENAME)
            if os.path.exists(filePath):
                os.remove(filePath)
            self.closeGUI(isInstanceListChanged=False)
        else:
            tkMessageBox.showwarning(c.SAVE, c.SAVE_NOT_CHOSEN)

    def loadOntology(self, *args):
        """ Ask user to choose rdf file. Then load the ontology onto GUI
            and serialize it to a temp file.
        """

        if self.ontologyTree and tkMessageBox.askyesno(c.LOAD, c.LOAD_SAVING):
            self.saveOntology()
            tkMessageBox.showwarning(c.LOAD, c.LOAD_CHOOSING)

        self.resetVariables()
        filePath = os.path.join(os.path.expanduser("~"), c.JSON_FILENAME)
        if os.path.exists(filePath):
            os.remove(filePath)

        namespace = None
        fileName = tkFileDialog.askopenfilename(**self.file_opt)

        if fileName:
            self.fileName = fileName
            candidateSet = self.getCandidateSetOfPrefixes(fileName)
            namespace = self.resolveNamespace(candidateSet)
            if not namespace:
                # User cancels the process or enter empty namespace
                return
            self.namespace = namespace

            self.readerOperation(fileName,
                                 namespace,
                                 serialize=True,
                                 save=False)

            # Detect if the ontology is not loaded properly
            if self.ontologyTree == [c.RDF_ROOT_NAME]:
                tkMessageBox.showwarning(c.LOAD, c.LOAD_NO_TREE)

    def readerOperation(self, fileName, namespace, serialize=True, save=False):
        """ Function created instance of a reader class and loads the data
            into appropriate variables or saves them into rdf file.
        :param fileName: Original fileName of .rdf file.
        :param namespace: Namespace of the original .rdf file.
        :param serialize: If it is 'True' than loaded data are saved into JSON
        :param save: If it is 'True' than data from JSON
            are stored into .rdf file
        """

        try:
            reader = RDFReader(fileName, namespace)
            if save:
                self.addDefaultProperties(reader)
            self.treeEntityPicker.delete(*self.treeEntityPicker.get_children())
            self.treePropertyPicker.delete(
                *self.treePropertyPicker.get_children())
            self.treeRangePicker.delete(*self.treeRangePicker.get_children())
            self.ontologyTree = reader.generateSubTree(c.RDF_ROOT_NAME,
                                                       self.treeEntityPicker)
            self.instancesbyClass = reader.instancesbyClass
            self.initializeTriples(reader, "object")
            self.initializeTriples(reader, "datatype")
            self.domainsByProperty = reader.domainsByProperty
            self.rangesByProperty = reader.rangesByProperty
            self.treeConfiguration(self.treeEntityPicker)
            self.treeConfiguration(self.treeRangePicker)
            self.initializePropertyTree(self.treePropertyPicker)
            self.lastId = reader.getLastId()
            if serialize:
                self.serialize()
            if save:
                self.savingOperations(reader)
        except IOError as e:
            tkMessageBox.showwarning(c.FILE, c.FILE_ERROR % e.strerror)
            self.closeGUI()

    def initializeTriples(self, reader, type):
        """ Initialize instances of properties. Allowed types:
            object, datatype.
        :param reader: Reader instance with data.
        :param type: Type of the data.
        """

        if type == "object":
            properties = reader.objectProperties
        else:
            # type == "datatype":
            properties = reader.dataTypeProperties

        for property in properties:
            triples = reader.getPropertyInstances(property)
            if type == "object":
                self.objectProperties[property] = []
            else:
                self.dataTypeProperties[property] = []
            for s, p, o in triples:
                subject = s.split('#')[1]
                obj = o.split('#')
                # Some objects (e.g. SVG paths) have no NS
                obj = obj[1 if len(obj) > 1 else 0]
                if type == "object":
                    # Cast to lists so they can be serialized
                    self.objectProperties[property].append(
                        [subject, property, obj])
                else:
                    self.dataTypeProperties[property].append(
                        [subject, property, obj])

    def savingOperations(self, reader):
        """
        Save current data into an .rdf file.
        :param reader: Instance of the reader class.
        """

        self.loadSerializedInstances()
        # Check all 'remove' operations performed; maybe elements need
        # to be removed from the ontology

        self.loadSerializedInstances()
        for operation in self.undoStack:
            for atomicAction in operation:
                if atomicAction["type"] == "remove":
                    instance = atomicAction["instanceId"]
                    entity = atomicAction["entityName"]
                    if entity not in self.instancesbyClass or instance not in \
                            self.instancesbyClass[entity]:
                        # Whole annotation removed; check if exists in ontology
                        # and if so, delete it
                        if reader.hasInstance(entity, instance):
                            reader.removeInstance(instance)
                    else:
                        svgElements = atomicAction["SVGElements"]
                        for svgElement in svgElements:
                            if reader.hasSVGElement(instance, svgElement):
                                reader.removeSVGElementProperty(
                                    instance, svgElement)

        for entity, annotations in self.instancesbyClass.iteritems():
            if reader.hasEntity(entity):  # Ensure entity belongs to ontology
                for annotation, svgElements in annotations.iteritems():
                    if not reader.hasInstance(entity, annotation):
                        reader.addInstance(entity, annotation)

                    svg = SVGParser(self.aEffect.document.getroot())
                    cPnt = svg.countCentralPointForListOfElements(svgElements)
                    if cPnt is not None:
                        reader.addCoordinatesXY(annotation, cPnt[0], cPnt[1])

                    h, w = svg.computeDimForListOfElements(svgElements)
                    if h is not None:
                        reader.addLengthAndWidth(annotation, h, w)

                    for svgElement in svgElements:
                        reader.addSVGElementProperty(annotation, svgElement)

        for triple in self.objectPropertiesToRemove:
            reader.removeObjectProperty(triple[c.SUBJECT_INDEX],
                                        triple[c.PROPERTY_INDEX],
                                        triple[c.OBJECT_INDEX])
        for triple in self.objectPropertiesToAdd:
            reader.addObjectProperty(triple[c.SUBJECT_INDEX],
                                     triple[c.PROPERTY_INDEX],
                                     triple[c.OBJECT_INDEX])

        for triple in self.dataTypePropertiesToRemove:
            reader.removeDatatypeProperty(triple[c.SUBJECT_INDEX],
                                          triple[c.PROPERTY_INDEX],
                                          triple[c.OBJECT_INDEX])
        for triple in self.dataTypePropertiesToAdd:
            reader.addDatatypeProperty(triple[c.SUBJECT_INDEX],
                                       triple[c.PROPERTY_INDEX],
                                       triple[c.OBJECT_INDEX])

        reader.saveOntology()

    def getCandidateSetOfPrefixes(self, fileName):
        """ This method tries to find the correct prefix of ontology directly
            from .rdf file.
        :param fileName: Name of the file to be searched.
        :return: Candidate set of prefixes that are used in ontology without
            common ones.
        """

        tree = etree.parse(fileName)
        root = tree.getroot()
        setOfPrefixes = set()

        for name in root.nsmap:
            setOfPrefixes.add(self.removeLastHTag(root.nsmap[name]))

        # namespace generated by the Protege
        inkex.NSS['owl'] = c.OWL_PREFIX
        ontNS = root.xpath(".//owl:Ontology", namespaces=inkex.NSS)
        if ontNS is not None and len(ontNS) > 0 and ontNS[0] is not None:
            if c.RDF_NS_ATTRIBUTE in ontNS[0].attrib:
                cand = self.removeLastHTag(ontNS[0].attrib[c.RDF_NS_ATTRIBUTE])
                setOfPrefixes.add(cand)

        return setOfPrefixes - c.COMMON_PREFIXES

    def resolveNamespace(self, candidateNSSet):
        """ Method allows to resolve the selection of namespaces. It solves
            the cases when nothing is is found, one is found or multiple
            namespaces exists.
        :param candidateNSSet: Candidate set of namespaces.
        :return: Final name of the namespace.
        """

        if len(candidateNSSet) == 0:
            fName = tkSimpleDialog.askstring(c.NSNAME, c.NSNAME_NO_NS)
            if fName is not None and not fName:
                tkMessageBox.showwarning(c.NSNAME, c.NSNAME_NOT_ADDED)
                fName = c.DEFAULT_NS
        elif len(candidateNSSet) == 1:
            el = next(iter(candidateNSSet))
            if tkMessageBox.askokcancel(c.NSNAME, c.NSNAME_DETECTED % el):
                fName = el
            else:
                fName = tkSimpleDialog.askstring(c.NSNAME, c.NSNAME_ENTER)
                if fName is not None and not fName:
                    tkMessageBox.showwarning(c.NSNAME, c.NSNAME_NOT_ADDED)
                    fName = c.DEFAULT_NS
        else:
            description = "\n".join(candidateNSSet)
            el = next(iter(candidateNSSet))

            fName = tkSimpleDialog.askstring(c.NSNAME,
                                             c.NSNAME_MULTIPLE % description,
                                             initialvalue=el)
        return fName

    def removeLastHTag(self, str):
        """ Removes the last hashtag form the string.
        :param str: String to be changed.
        :return: String without the last hashtag.
        """

        if str.endswith("#"):
            return str[:-1]
        return str

    def treeConfiguration(self, treeInstance):
        """ Method configures the tree and set colors for different type of
            entities and instances in the tree.
        :param treeInstance: instance of the tree.
        """

        treeInstance.tag_configure(c.TREE_TAG_ENTITY, background="white")
        treeInstance.tag_configure(c.TREE_TAG_INSTANCE, background="grey")
        treeInstance.tag_configure(c.TREE_TAG_HIGHLIGHT, background="yellow")

    def subTreeFromFileRecursive(self,
                                 treeList,
                                 treeViewInstance,
                                 selectPrevious="none"):
        """ Method creates tree from the treeList.
        :param treeList: List with data from whom the tree is generated.
        :param treeViewInstance:
        :param selectPrevious: This should be "object", "subject" or "none".
        """

        if selectPrevious != "none":
            selected = self.previousSelectedEntities(selectPrevious)
        for i in iter(treeList):
            if isinstance(i, basestring):
                parentID = self.stack[-1]
                # Insert element into GUI ViewTree
                childID = treeViewInstance.insert(parentID,
                                                  'end',
                                                  text=i,
                                                  tags=(c.TREE_TAG_ENTITY, ))
                if selectPrevious != "none" and i in selected:
                    self.expandBranches(treeViewInstance, childID)
                # Insert instances of current Entity
                if i in self.instancesbyClass:
                    self.insertInstancesInTree(self.instancesbyClass[i],
                                               treeViewInstance, childID,
                                               selectPrevious)
                self.stack.append(childID)
            else:
                self.subTreeFromFileRecursive(i, treeViewInstance,
                                              selectPrevious)
        if self.stack:
            self.stack.pop()

    def expandBranches(self, treeViewInstance, rowID):
        """ Expand all branches from the root to the given one.
        :param treeViewInstance: View of the tree.
        :param rowID: Id of the searched row.
        """

        treeViewInstance.item(rowID, open=True)
        tempStack = self.stack[:]  # Slice clone
        while tempStack:
            treeViewInstance.item(tempStack.pop(), open=True)
        self.setFocus(treeViewInstance, rowID)

    def insertInstancesInTree(self,
                              instanceList,
                              treeViewInstance,
                              parentID,
                              selectPrevious="none"):
        """ Insert instances from instanceList into treeView.
        :param instanceList: List of instances.
        :param treeViewInstance: View of the tree.
        :param parentID: Id of the parent in the tree view.
        :param selectPrevious: This should be "object", "subject" or "none".
        """

        localParentID = parentID
        # Only in case that there is a lot of instances
        if len(instanceList) > c.MAX_INSTANCES_IN_DIR:
            localParentID = \
                treeViewInstance.insert(parentID, 'end', text=c.INSTANCES_NAME,
                                        tags=(c.TREE_TAG_INSTANCE,
                                              c.TREE_TAG_INSTANCES_HEADER, ))

        for instance in sorted(instanceList.keys()):
            if set(self.aEffect.selected).intersection(instanceList[instance]):
                tag = c.TREE_TAG_HIGHLIGHT
            else:
                tag = c.TREE_TAG_INSTANCE

            rowID = treeViewInstance.insert(localParentID,
                                            'end',
                                            text=instance,
                                            tags=(tag, ))
            # Expand all branches to instance if it was previously selected
            if selectPrevious != 'none' and instance in \
                    self.previousSelectedEntities(selectPrevious):
                self.expandBranches(treeViewInstance, localParentID)
                # If instances are grouped, expand "Instances" header
                if parentID != localParentID:
                    treeViewInstance.item(parentID, open=True)
                self.setFocus(treeViewInstance, rowID)

    def initializePropertyTree(self, treeViewInstance):
        """ Method initializes tree of properties.
        :param treeViewInstance: View of the tree.
        """
        if self.objectProperties:
            oID = treeViewInstance.insert(
                '',
                'end',
                text='Object Properties',
                tags=(c.TREE_TAG_PROPERTIES_HEADER, ))
        if self.dataTypeProperties:
            dID = treeViewInstance.insert(
                '',
                'end',
                text='Datatype Properties',
                tags=(c.TREE_TAG_PROPERTIES_HEADER, ))
        self.addPropertiesToTreeView(treeViewInstance,
                                     self.objectProperties,
                                     oID,
                                     type=c.TREE_TAG_OBJECT_PROPERTY)
        self.addPropertiesToTreeView(treeViewInstance,
                                     self.dataTypeProperties,
                                     dID,
                                     type=c.TREE_TAG_DATATYPE_PROPERTY)

    def addPropertiesToTreeView(self, treeViewInstance, props, headerID, type):
        """ Insert properties from the instanceList into treeView.
        :param treeViewInstance: View of the tree.
        :param props: Properties to be added.
        :param headerID: Id of the header for adding properties.
        :param type: Type of the property.
        """
        selected = self.previousSelectedProperties()
        for property in props:
            textAdd = property
            parID = treeViewInstance.insert(headerID,
                                            'end',
                                            text=textAdd,
                                            tags=(c.TREE_TAG_PROPERTY, type))
            triples = props[property]
            if selected and textAdd in selected:
                self.expandPropertyBranches(treeViewInstance, [headerID],
                                            parID)
            for triple in triples:
                textAdd = "%s -> %s" % (triple[c.SUBJECT_INDEX],
                                        triple[c.OBJECT_INDEX])
                childID = treeViewInstance.insert(parID,
                                                  'end',
                                                  text=textAdd,
                                                  tags=(c.TREE_TAG_INSTANCE,
                                                        type, property))
                self.propertiesByTreeID[childID] = [
                    triple[c.SUBJECT_INDEX], property, triple[c.OBJECT_INDEX]
                ]
                if selected and textAdd in selected:
                    self.expandPropertyBranches(treeViewInstance,
                                                [headerID, parID], childID)

    def expandPropertyBranches(self, treeViewInstance, ancestorIDs, childID):
        """ Method for expanding branches in the property tree view.
        :param treeViewInstance: View of the tree.
        :param ancestorIDs: ID of the ancestor.
        :param childID: ID of the child.
        """

        for id in ancestorIDs:
            treeViewInstance.item(id, open=True)
        treeViewInstance.item(childID, open=True)
        self.setFocus(treeViewInstance, childID)

    def setFocus(self, treeViewInstance, rowID):
        """ Method for expanding setting focus on specific in the property
            row in the tree view.
        :param treeViewInstance: View of the tree.
        :param rowID: ID of the row that should be focused.
        """

        treeViewInstance.focus(rowID)
        treeViewInstance.selection_set(rowID)
        treeViewInstance.focus_set()

    def refreshPropertyTree(self, treeViewInstance):
        """ Reload all properties and feed the given TreeView with them.
        :param treeViewInstance: View of the tree.
        """

        treeViewInstance.delete(*treeViewInstance.get_children())
        if self.objectProperties or self.dataTypeProperties:
            self.initializePropertyTree(treeViewInstance)
        else:
            tkMessageBox.showwarning(c.PROP, c.PROP_NOTHING_FOUND)

    def loadSerializedOntology(self, treeViewInstance):
        """ Tries to load a serialized ontology and other relevant data
            from a json file.
        :param treeViewInstance: View of the tree.
        """

        filePath = os.path.join(os.path.expanduser("~"), "viso.json")
        if os.path.exists(filePath):
            with open(filePath, 'r') as f:
                try:
                    self.tempData = json.load(f)
                    self.ontologyTree = self.tempData["classHierarchy"]
                    self.stack = ['']
                    self.instancesbyClass = self.tempData["instances"]
                    self.defaultName = self.tempData["defaultName"]
                    self.defaultTypeValue = self.tempData["defaultValue"]
                    self.defaultTypeValue = self.tempData["defaultValue"]
                    self.fileName = self.tempData["fileName"]
                    self.namespace = self.tempData["namespace"]
                    self.lastId = self.tempData["lastId"]
                    self.undoStack = self.tempData["undoStack"]
                    self.subTreeFromFileRecursive(self.ontologyTree,
                                                  treeViewInstance,
                                                  selectPrevious="subject")
                    self.treeConfiguration(self.treeEntityPicker)
                    self.treeConfiguration(self.treeRangePicker)
                    self.objectProperties = self.tempData["objectProperties"]
                    self.dataTypeProperties = \
                        self.tempData["dataTypeProperties"]
                    self.domainsByProperty = self.tempData["domains"]
                    self.rangesByProperty = self.tempData["ranges"]
                    self.objectPropertiesToAdd = \
                        self.tempData["propertyTriples"]
                    self.objectPropertiesToRemove = \
                        self.tempData["propertyTriplesToRemove"]
                    self.dataTypePropertiesToAdd = \
                        self.tempData["dataTypePropertyTriples"]
                    self.dataTypePropertiesToRemove = \
                        self.tempData["dataTypePropertyTriplesToRemove"]
                    self.initializePropertyTree(self.treePropertyPicker)
                except ValueError:
                    self.ontologyTree = None
                finally:
                    self.stack = None
                    f.close()

    def loadSerializedInstances(self):
        """ Load the current instance information (intancesByClass,
            domains, ranges) from the JSON file.
        """

        filePath = os.path.join(os.path.expanduser("~"), "viso.json")
        if os.path.exists(filePath):
            with open(filePath, 'r') as f:
                try:
                    self.tempData = json.load(f)
                    self.instancesbyClass = self.tempData["instances"]
                    self.domainsByProperty = self.tempData["domains"]
                    self.rangesByProperty = self.tempData["ranges"]
                    self.objectProperties = self.tempData["objectProperties"]
                    self.dataTypeProperties = \
                        self.tempData["dataTypeProperties"]
                    self.objectPropertiesToAdd = \
                        self.tempData["propertyTriples"]
                    self.dataTypePropertiesToAdd = \
                        self.tempData["dataTypePropertyTriples"]
                    self.dataTypePropertiesToRemove = \
                        self.tempData["dataTypePropertyTriplesToRemove"]
                    self.objectPropertiesToRemove = \
                        self.tempData["propertyTriplesToRemove"]
                    self.namespace = self.tempData["namespace"]
                except ValueError as e:
                    tkMessageBox.showwarning(c.FILE,
                                             c.FILE_SER_ERROR % e.strerror)
                finally:
                    f.close()

    def previousSelectedEntities(self, type="subject"):
        """ Returns the selected Entities/Instances previously selected
            by the user on the last time the GUI was closed.
        :param type: This should be "object", "subject" or "none".
        """

        if type == "subject":
            if self.selectedEntities:
                selected = self.selectedEntities
            elif "selectedEntities" in self.tempData:
                selected = self.tempData["selectedEntities"]
            else:
                selected = []
        elif type == "object":
            if self.selectedRange:
                selected = self.selectedRange
            elif "selectedRanges" in self.tempData:
                selected = self.tempData["selectedRanges"]
            else:
                selected = []
        else:
            selected = []
        return selected

    def previousSelectedProperties(self):
        """ Returns the last properties selected by the user. """
        if self.selectedProperties:
            selected = self.selectedProperties
        elif "selectedProperties" in self.tempData:
            selected = self.tempData["selectedProperties"]
        else:
            selected = []
        return selected

    def instanceExists(self, instance):
        """ Checks if instance exist.
        :param instance: Instance to be checked.
        :return: 'True' if instance already exist, 'False' otherwise.
        """

        for entity in self.instancesbyClass:
            if instance in self.instancesbyClass[entity]:
                return True
        return False

    def addDefaultProperties(self, reader):
        """ Check if the ontology has the required properties.
            If not, add them and inform the user.
        :param reader: Instance of the RDFReader class that allows to store
            properties into .rdf file.
        """

        default_properties = [
            c.HAS_SVG_PROPERTY, c.COOR_PROPERTY, c.X_COOR_PROPERTY,
            c.Y_COOR_PROPERTY
        ]
        added = []
        for property in default_properties:
            if not reader.hasProperty(property, "datatype"):
                added.append(property)
                reader.addProperty(property, "datatype")
        if added:
            tkMessageBox.showwarning(c.PROP,
                                     c.PROP_DATA_NOT_FOUND % ', '.join(added))
            reader.saveOntology()

    def close(self, event):
        self.closeGUI(isInstanceListChanged=True)

    def closeGUI(self, isInstanceListChanged):
        """ Closes the gui.
        :param isInstanceListChanged: True if something was changed and
            serialization should be done.
        """

        if isInstanceListChanged:
            self.serialize()

        self.root.destroy()

    def serialize(self):
        """ Serialize Ontology into JSON file in the user's home folder. """
        serializedInfo = {}
        if self.ontologyTree:
            serializedInfo["classHierarchy"] = self.ontologyTree
        else:
            tkMessageBox.showwarning(c.FILE, c.FILE_JSON_ERROR)
        serializedInfo["fileName"] = self.fileName
        serializedInfo["namespace"] = self.namespace
        serializedInfo["instances"] = self.instancesbyClass
        serializedInfo["objectProperties"] = self.objectProperties
        serializedInfo["dataTypeProperties"] = self.dataTypeProperties
        serializedInfo["ranges"] = self.rangesByProperty
        serializedInfo["domains"] = self.domainsByProperty
        serializedInfo["lastId"] = self.lastId
        serializedInfo["undoStack"] = self.undoStack
        serializedInfo["selectedEntities"] = [] if not self.selectedEntities \
            else self.selectedEntities
        serializedInfo["selectedRanges"] = [] if not self.selectedRange \
            else self.selectedRange
        serializedInfo["selectedProperties"] = [] if not self.selectedProperties \
            else self.selectedProperties
        serializedInfo["propertyTriples"] = self.objectPropertiesToAdd
        serializedInfo["propertyTriplesToRemove"] = \
            self.objectPropertiesToRemove
        serializedInfo["dataTypePropertyTriples"] = \
            self.dataTypePropertiesToAdd
        serializedInfo["dataTypePropertyTriplesToRemove"] = \
            self.dataTypePropertiesToRemove
        serializedInfo["defaultName"] = self.defaultName
        serializedInfo["defaultValue"] = self.defaultTypeValue
        serializedInfo["defaultValue"] = self.defaultTypeValue
        serialized = json.dumps(serializedInfo)
        filePath = os.path.join(os.path.expanduser("~"), c.JSON_FILENAME)
        try:
            f = open(filePath, 'w+')
            f.write(serialized)
        except IOError as e:
            tkMessageBox.showwarning(c.FILE, c.FILE_JSON_FOLDER)
            raise e
        finally:
            f.close()
Ejemplo n.º 26
0
	def __init__(self, parent, controller):
		Frame.__init__(self, parent)
		
		global docID, nombre, refbanco, tree, busqueda, info, delete
		global e3
		
		lupa = PhotoImage(file='img/lupa.png')
		
		docID = StringVar()
		nombre = StringVar()
		refbanco = StringVar()
		busqueda = StringVar()
		info = IntVar()
		
		#WIDGETS
		
		#=========================== HEADER ============================
		
		l0 = Label(self, text="BENEFICIARIOS", font="bold")
		l0.pack(pady=20, side=TOP)
		
		#=========================== WRAPPER ===========================
		
		wrapper = Frame (self)
		wrapper.pack(side=TOP, fill=Y)
		#wrapper.pack(side=LEFT, fill=Y) #UBICA EL FORM A LA IZQ
		
		f1 = Frame(wrapper)
		f1.pack(pady=5, fill=X)#-----------------------------------
		
		l1 = Label (f1, text="CC/Nit: ")
		l1.pack(side=LEFT)
		e1 = Entry (f1, textvariable=docID, width=20)
		e1.pack(side=LEFT)
		e1.bind("<KeyRelease>", caps)
		e1.focus_set()
		
		f2 = Frame(wrapper)
		f2.pack(pady=5, fill=X)#-----------------------------------
		
		l2 = Label (f2, text="Nombre: ")
		l2.pack(side=LEFT)
		e2 = Entry (f2, textvariable=nombre, width=60)
		e2.pack(side=LEFT, fill=X, expand=1)
		e2.bind("<KeyRelease>", caps)
		
		f3 = Frame(wrapper)
		f3.pack(pady=5, fill=X)#-----------------------------------
		
		l3 = Label (f3, text="Referencia Bancaria: ")
		l3.pack(side=LEFT)
		e3 = Entry (f3, textvariable=refbanco, width=60)
		e3.pack(side=LEFT, fill=X, expand=1)
		e3.bind("<KeyRelease>", caps)
		
		f4 = Frame(wrapper)
		f4.pack(pady=5, fill=X)#-----------------------------------
		
		b1 = Button (f4, text="Cargar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=cargar)
		b1.pack(side=RIGHT)
		
		b2 = Button (f4, text="Agregar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=agregar)
		b2.pack(side=RIGHT)
		
		#========================== TREEVIEW ===========================
		
		f5 = Frame(wrapper)
		f5.pack(pady=5, fill=X)#-----------------------------------
		
		tree = Treeview(f5, show="headings", columns=('col1','col2'))
		tree.pack(side=LEFT, fill=X, expand=1)
		tree.column('col1', width=0, anchor='center')
		tree.column('col2', width=150, anchor='w')
		
		tree.heading('col1', text='CC/Nit')
		tree.heading('col2', text='Nombre Completo')
		
		scroll = Scrollbar(f5,orient=VERTICAL,command=tree.yview)
		tree.configure(yscrollcommand=scroll.set)
		
		f6 = Frame(wrapper)
		f6.pack(pady=5, fill=X)#-----------------------------------
		
		delete = Button (f6, text="Eliminar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=borrar)
		delete.pack(side=RIGHT)
		
		e4 = Entry(f6, textvariable=busqueda)
		e4.pack(side=LEFT)
		e4.bind("<KeyRelease>", caps)
		
		b4 = Button(f6, text='BUSCAR', image=lupa, command=buscar)
		b4.image = lupa
		b4.pack(side=LEFT)
		
		R1 = Radiobutton(f6, text="CC/nit", variable=info, value=1)
		R1.pack(side=LEFT)
		R2 = Radiobutton (f6, text="Nombre", variable=info, value=2)
		R2.pack(side=LEFT)
		info.set(1)
Ejemplo n.º 27
0
class Tree(Treeview):
    """ Класс, формирующий таблицу """
    def __init__(self, root, frame, num, logit, all_values, list_styles_names):
        Treeview.__init__(self, root)
        self.root = root
        self.num = num
        self.frame = frame
        self.name = "MOXA-%s" % str(self.num)
        self.tree = Treeview(frame, style=list_styles_names[num])
        self.tree["columns"] = ("one", "two", "three")
        self.tree.heading("#0", text="")
        self.tree.column("#0", minwidth=0, width=5, stretch=NO)
        self.tree.heading("one", text="Port")
        self.tree.column("one", minwidth=0, width=30, stretch=NO)
        self.tree.column("two", minwidth=0, width=name_column, stretch=NO)
        self.tree.heading("three", text="State")
        self.tree.column("three", minwidth=0, width=state_column, stretch=YES)
        self.tree['height'] = 32
        self.tree.tag_configure('green',
                                background='gray7',
                                foreground='green2')
        self.tree.tag_configure('red',
                                background='gray7',
                                foreground='tomato2')
        self.tree.tag_configure('blue',
                                background='gray7',
                                foreground='RoyalBlue')
        self.tree.tag_configure('yellow',
                                background='gray7',
                                foreground='yellow')
        self.tree.tag_configure('ready',
                                background='gray7',
                                foreground='white')
        self.tree.tag_configure(
            'focus',
            background='yellow',
        )
        self.tree.bind("<Motion>", self.mycallback)
        self.last_focus = None
        self.tree.pack(side=LEFT)
        self.logit = logit
        self.moxa = all_values[self.num][0]
        self.wraplength = 180
        for key in self.moxa.keys():
            self.tree.insert("",
                             "end",
                             values=(str(key), self.moxa[key], "<><><>"),
                             tags=("green", ))

    def mycallback(self, event):
        """ Функция, отображающая комментарий при наведении мыши на канал """

        _iid = self.tree.identify_row(event.y)
        if _iid != self.last_focus:
            if self.last_focus:
                try:
                    if self.tw:
                        self.tw.destroy()
                except:
                    pass

            if _iid:
                row = self.tree.item(_iid)
                key = row["values"][0]
                if os.path.isfile('comments/comment_%s_%s.txt' %
                                  (self.num, key)):
                    with open('comments/comment_%s_%s.txt' % (self.num, key),
                              'a+') as comment:
                        file_log = comment.read()
                        param = self.tree.bbox(_iid)
                        x = (param[0] + space_X) * self.num
                        y = param[1] + space_Y
                        self.tw = tk.Toplevel()
                        self.tw.wm_overrideredirect(True)
                        self.tw.wm_geometry("+%d+%d" % (x, y))
                        label = tk.Label(self.tw,
                                         text=file_log,
                                         justify='left',
                                         background="yellow2",
                                         relief='solid',
                                         borderwidth=1,
                                         wraplength=self.wraplength,
                                         font=tkFont.Font(family=main_font,
                                                          size=size_font))
                        label.pack()
                self.last_focus = _iid
Ejemplo n.º 28
0
        def __init__(self, parent, controller):
                Frame.__init__(self, parent)

		global codigo, ctacontable, nombre, desc, tree
		
		lupa = PhotoImage(file='img/lupa.png')
		
		codigo = StringVar()
		ctacontable = StringVar()
		nombre = StringVar()
		desc = StringVar()
		
		#WIDGETS
		
		#=========================== HEADER ============================
		
		self.titleL = Label(self, text="CONCEPTO DE GASTOS", font="bold")
		self.titleL.pack(pady=20, side=TOP)
		
		#=========================== WRAPPER ===========================
		
		self.wrapper = Frame (self)
		self.wrapper.pack(side=TOP, fill=Y)
		
		self.f0 = Frame(self.wrapper)
		self.f0.pack(pady=5, fill=X)#-----------------------------------
		
		l1 = Label (self.f0, text="Código:")
		l1.pack(side=LEFT)
		e1 = Entry (self.f0, textvariable=codigo, width=60)
		e1.pack(side=LEFT)
		e1.bind("<KeyRelease>", caps)
		
		self.f2 = Frame(self.wrapper)
		self.f2.pack(pady=5, fill=X)#-----------------------------------
		
		l2 = Label (self.f2, text="Cuenta Contable: ")
		l2.pack(side=LEFT)
		
		e2 = Entry (self.f2, textvariable=ctacontable, width=60)
		e2.pack(side=LEFT, fill=X, expand=1)
		
		b0 = Button (self.f2, text="Buscar", image=lupa, command=buscar)
		b0.image=lupa
		b0.pack(side=LEFT)
		
		self.f3 = Frame(self.wrapper)
		self.f3.pack(pady=5, fill=X)#-----------------------------------
		
		self.nombre = Label (self.f3, text="Nombre: ")
		self.nombre.pack(side=LEFT)
		self.nombreE = Entry (self.f3, textvariable=nombre, state=DISABLED)
		self.nombreE.pack(side=LEFT, fill=X, expand=1)
		
		self.f4 = Frame(self.wrapper)
		self.f4.pack(pady=5, fill=X)#-----------------------------------
		
		self.descL = Label (self.f4, text="Descripción: ")
		self.descL.pack(side=LEFT)
		self.descE = Entry (self.f4, textvariable=desc)
		self.descE.pack(side=LEFT, fill=X, expand=1)
		self.descE.bind("<KeyRelease>", caps)
		
		self.f5 = Frame(self.wrapper)
		self.f5.pack(pady=5, fill=X)#-----------------------------------
		
		b1 = Button (self.f5, text="Cargar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=cargar)
		b1.pack(side=RIGHT)
		
		b2 = Button (self.f5, text="Agregar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=agregar)
		b2.pack(side=RIGHT)
		
		self.f6 = Frame(self.wrapper)
		self.f6.pack(pady=5, fill=X)#-----------------------------------
		
		tree = Treeview(self.f6, show="headings", columns=('col1','col2', 'col3', 'col4'))
		tree.pack(side=LEFT, fill=X, expand=1)
		tree.column('col1', width=2, anchor='center')
		tree.column('col2', width=150, anchor='center')
		tree.column('col3', width=10, anchor='center')
		tree.column('col4', width=150, anchor='center')
		
		tree.heading('col1', text='Código')
		tree.heading('col2', text='Descripción')
		tree.heading('col3', text='Cta Contable')
		tree.heading('col4', text='Nombre')
		
		self.scroll = Scrollbar(self.f6,orient=VERTICAL,command=tree.yview)
		tree.configure(yscrollcommand=self.scroll.set)
		
		self.f7 = Frame(self.wrapper)
		self.f7.pack(pady=5, fill=X)#-----------------------------------
		
		self.delete = Button (self.f7, text="Eliminar", bg='navy', foreground='white', activebackground='red3', activeforeground='white', command=borrar)
		self.delete.pack(side=RIGHT)
Ejemplo n.º 29
0
class Display:
    def __init__(self, controller):
        self.controller = controller

        self.currIndex = 0

        # initialize the GUI
        self.app = Tk()
        self.app.title('Jack Magee\'s Pub')

        self.tree = Treeview(self.app, height=30)
        
        # name the tree columns, not sure if they have to be named numbers but that's how the example did it
        self.tree["columns"]=("one", "two", "three", "four")
        
        # set the column widths
        self.tree.column("one", width=200)
        self.tree.column("two", width=300)
        self.tree.column("three", width=200)
        self.tree.column("four", width=200)

        # set the column headings
        self.tree.heading("#0", text= "ID")
        self.tree.heading("one", text="Name")
        self.tree.heading("two", text="Order")
        self.tree.heading("three", text="Price")
        self.tree.heading("four", text="Respond (double-click)")

        self.tree.pack()
        
        # register handler for double-clicks
        self.tree.bind("<Double-1>", self.OnDoubleClick)

    def mainloop(self):
        self.app.mainloop()

    # this is like making tree entries buttons
    def OnDoubleClick(self, event):
        # get the pressed item
        item = self.tree.selection()[0]
        # get the item's text
        response =  self.tree.item(item,"text")

        # this is the only response we are sending for now
        if response == 'rdy':
            # get the parent directory whose text is the customer id
            parent = self.tree.parent(item)
            customer_id = self.tree.item(parent,"text")
            # remove it from the tree
            self.tree.delete(parent)
            # send the message to the customer
            self.controller.send_msg(customer_id, response)

    # add a new order to the tree
    def takeOrder(self, customer_id, name, order, price):
        # just a row identifier
        thisRow = str(self.currIndex)

        # insert the i.d. and name at the top level
        self.tree.insert("", self.currIndex, thisRow, text=customer_id, values=(name, "", "", ""))
        # insert the "button" for sending notification to clients
        self.tree.insert(thisRow, 0, text='rdy', values=("", "", "", "Ready For Pick Up"))

        # this is a hacky solution to get multiline orders to appear because treeviews will 
        # crop anything more than 1 line so I just make a new entry for every line
        multiline_order = order.split('\n')
        this_line = 1
        for line in multiline_order[:-1]:   # exclude the last end line
            if this_line == 1:  # the first line has the name of the order and it's price
                self.tree.insert(thisRow, 1, text="order",values=("", order, price, ""))
            else: # just keep printing the extra options, sides, and add ons
                self.tree.insert(thisRow, this_line, text="order",values=("", line, "", ""))
            this_line += 1

        self.currIndex += 1
Ejemplo n.º 30
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        global e0, e1, e2, e3, e4, e5, e6, e7, e8, CbxVlr, observaciones, scroll, tree, pdfB, add
        global cc, arrend, inmueble, codigo, tel, valor
        global Cbx, meses, mes1, mes2, tiempo, fechapago, anio, mes
        global prop, nit, tp, subtotal, iva, total

        #VARIABLES
        tiempo = datetime.date.today()
        anio = time.strftime("%Y")
        mes = time.strftime("%B")
        fechapago = StringVar()

        cc = StringVar()
        arrend = StringVar()

        inmueble = StringVar()
        codigo = StringVar()
        tel = StringVar()
        valor = DoubleVar()

        prop = StringVar()
        nit = StringVar()
        tp = StringVar()

        subtotal = DoubleVar()
        iva = DoubleVar()
        total = DoubleVar()

        mes1 = StringVar()
        mes2 = StringVar()
        meses = [
            "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio",
            "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
        ]

        #WIDGETS

        #=========================== HEADER ============================

        self.titleL = Label(self, text="FACTURA INQUILINO", font="bold")
        self.titleL.pack(pady=20, side=TOP)

        #========================= WRAPPER 1 ===========================

        wrapper = Frame(self)
        wrapper.pack(fill='both')

        #======================= DATOS GENERALES =======================

        self.lf = LabelFrame(wrapper, text="Datos generales")
        self.lf.pack(side=LEFT)  #-------------------------------

        self.f0 = Frame(self.lf)
        self.f0.pack(pady=5, fill=X)  #---------------------------

        self.ccnitL = Label(self.f0, text='CC/Nit:')
        self.ccnitL.pack(side=LEFT)
        e0 = Entry(self.f0, textvariable=cc, width=30)
        e0.pack(side=LEFT)

        self.b1 = Button(self.f0, text='Buscar', command=buscar)
        self.b1.pack(side=LEFT)

        self.f1 = Frame(self.lf)
        self.f1.pack(pady=5, fill=X)  #---------------------------

        self.nombreL = Label(self.f1, text='Nombre:')
        self.nombreL.pack(side=LEFT)
        e1 = Entry(self.f1, textvariable=arrend, width=50, state=DISABLED)
        e1.pack(side=LEFT, fill=X)

        self.f2 = Frame(self.lf)
        self.f2.pack(pady=5, fill=X)  #---------------------------

        self.inmuebleL = Label(self.f2, text='Inmueble:')
        self.inmuebleL.pack(side=LEFT)
        e2 = Entry(self.f2, textvariable=inmueble, state=DISABLED, width=48)
        e2.pack(side=LEFT, fill=X)

        self.f3 = Frame(self.lf)
        self.f3.pack(pady=5, fill=X)  #---------------------------

        self.inmuebleL = Label(self.f3, text='Código: ')
        self.inmuebleL.pack(side=LEFT)
        e3 = Entry(self.f3, textvariable=codigo, state=DISABLED, width=5)
        e3.pack(side=LEFT, fill=X)

        self.tel = Label(self.f3, text='Teléfono: ')
        self.tel.pack(side=LEFT)
        e4 = Entry(self.f3, textvariable=tel, state=DISABLED, width=15)
        e4.pack(side=LEFT, fill=X)

        self.precio = Label(self.f3, text='Arriendo $: ')
        self.precio.pack(side=LEFT)
        e5 = Entry(self.f3, textvariable=valor, state=DISABLED, width=15)
        e5.pack(side=LEFT, fill=X)

        #======================= DATOS PROPIETARIO =======================

        wrap = Frame(wrapper)
        wrap.pack(side=RIGHT)

        lf = LabelFrame(wrap, text="Propietario")
        lf.pack()  #-------------------------
        #lf.pack_forget()#-------------------------

        f0 = Frame(lf)
        f0.pack(pady=5, fill=X)  #---------------------------

        nombreL = Label(f0, text='Nombre: ')
        nombreL.pack(side=LEFT)
        e6 = Entry(f0, textvariable=prop, width=48, state=DISABLED)
        e6.pack(side=LEFT, fill=X)

        f1 = Frame(lf)
        f1.pack(pady=5, fill=X)  #---------------------------

        ccnitL = Label(f1, text='CC/Nit: ')
        ccnitL.pack(side=LEFT)
        e7 = Entry(f1, textvariable=nit, state=DISABLED, width=48)
        e7.pack(side=LEFT)

        f2 = Frame(wrap)
        f2.pack(pady=5, fill=X)  #---------------------------

        self.lb = Label(f2, text=None)
        self.lb.pack(side=LEFT)

        f3 = Frame(wrap)
        f3.pack(pady=5, fill=X)  #---------------------------
        """
		self.inmuebleL = Label(f2, text='Tipo Persona: ')
		self.inmuebleL.pack(side=LEFT)
		e8 = Entry(f2, textvariable=tp, state=DISABLED, width=40)
		e8.pack(side=LEFT,fill=X)
		"""

        l = Label(f3, text='SubTotal ')
        l.pack(side=LEFT)
        e8 = Entry(f3, textvariable=subtotal, state=DISABLED, width=12)
        e8.pack(side=LEFT, fill=X)

        l = Label(f3, text='IVA ')
        l.pack(side=LEFT)
        e9 = Entry(f3, textvariable=iva, state=DISABLED, width=12)
        e9.pack(side=LEFT, fill=X)

        l = Label(f3, text='Total ')
        l.pack(side=LEFT)
        e10 = Entry(f3, textvariable=total, state=DISABLED, width=12)
        e10.pack(side=LEFT, fill=X)

        f4 = Frame(wrap)
        f4.pack(pady=5, fill=X)  #---------------------------

        #========================= FACTURACIÓN =========================

        self.lf1 = LabelFrame(self, text="Periodo a facturar")
        self.lf1.pack(anchor=W, pady=5, fill=X)  #-------------------------

        self.f2 = Frame(self.lf1)
        self.f2.pack(pady=5, fill=X)  #---------------------------

        self.mesiniL = Label(self.f2, text='Mes inicial:')
        self.mesiniL.pack(padx=5, side=LEFT)

        CbxVlr = Combobox(self.f2,
                          textvariable=mes1,
                          values=meses,
                          width=10,
                          state=DISABLED)
        CbxVlr.set(mes)
        CbxVlr.pack(side=LEFT)

        self.emptyL = Label(self.f2)  ###VACIO###
        self.emptyL.pack(padx=5, side=LEFT)

        self.yeariniL = Label(self.f2, text='Año:')
        self.yeariniL.pack(side=LEFT)
        self.yeariniE = Entry(self.f2,
                              textvariable=fechapago,
                              width=8,
                              state=DISABLED)
        fechapago.set(anio)
        self.yeariniE.pack(side=LEFT)

        self.mesfinL = Label(self.f2, text='Mes final:')
        self.mesfinL.pack(padx=5, side=LEFT)

        self.mesfinCbx = Combobox(self.f2,
                                  textvariable=mes2,
                                  values=meses,
                                  width=10)
        self.mesfinCbx.set(mes)
        self.mesfinCbx.pack(side=LEFT)

        self.emptyL = Label(self.f2)  ###VACIO###
        self.emptyL.pack(padx=5, side=LEFT)

        self.yearfinL = Label(self.f2, text='Año:')
        self.yearfinL.pack(side=LEFT)
        self.yearfinE = Entry(self.f2, textvariable=fechapago, width=8)
        fechapago.set(anio)
        self.yearfinE.pack(side=LEFT)

        self.emptyL = Label(self.f2)  ###VACIO###
        self.emptyL.pack(padx=5, side=LEFT)

        pdfB = Button(self.f2,
                      text="Facturar",
                      command=agregar,
                      state=DISABLED)
        pdfB.pack(side=LEFT)

        #========================== TREEVIEW ===========================

        self.f3 = Frame(self)
        self.f3.pack(pady=5, fill=X)  #------------------------------------

        tree = Treeview(self.f3,
                        height=4,
                        show="headings",
                        columns=('col1', 'col2'))
        tree.pack(side=LEFT, fill=X, expand=1)

        tree.column('col1', width=250, anchor='center')
        tree.column('col2', width=5, anchor='center')

        tree.heading('col1', text='Descripción')
        tree.heading('col2', text='Valor')

        scroll = Scrollbar(self.f3, orient=VERTICAL, command=tree.yview)
        tree.configure(yscrollcommand=scroll.set)
        tree.bind("<Delete>", borrar)

        #======================== OBSERVACIONES ========================

        self.f4 = Frame(self)
        self.f4.pack(pady=5, fill=X)  #--------------------

        self.notesL = Label(self.f4, text='Observaciones:')
        self.notesL.pack(side=LEFT)

        self.f5 = Frame(self)
        self.f5.pack(pady=5, fill=X)  #-------------------

        observaciones = Text(self.f5, height=5)
        observaciones.pack(fill=X, side=LEFT, expand=1)

        #=========================== BOTONES ===========================

        footer = Frame(self)
        footer.pack()  #-------------------------------

        clean = Button(footer,
                       text='Cancelar',
                       bg='navy',
                       foreground='white',
                       activebackground='red3',
                       activeforeground='white',
                       command=cancelar)
        clean.pack(side=RIGHT)

        add = Button(footer,
                     text='Grabar',
                     bg='navy',
                     foreground='white',
                     activebackground='red3',
                     activeforeground='white',
                     command=grabar,
                     state=DISABLED)
        add.pack(side=RIGHT)
Ejemplo n.º 31
0
class ReciboCaja(Frame):
        def __init__(self, parent, controller):
                Frame.__init__(self, parent)

		lupa = PhotoImage(file='img/lupa.png')
		
		#VARIABLES
		tcontrato = ['Vivienda', 'Comercial']
		aplica = StringVar()
		
		#WIDGETS
		
		#========================= HEADER ===========================
		
		self.header = Label(self, text="RECIBO DE CAJA", font="bold")
		self.header.pack(pady=20, side=TOP)
		
		#========================== WRAPPER ==========================
		
		self.wrapper = Frame (self)
		self.wrapper.pack(side=TOP, fill=Y)
		#self.wrapper.pack(side=LEFT, fill=Y)#Este ubica el forma a la IZA
		
		#================ NOTEBOOK =============>
		
		self.nb = Notebook(self.wrapper)
		
		#-----------------------> TAB 1
		
		self.tab1 = Frame (self.nb)
		self.tab1.pack()
		
		self.f0 = Frame(self.tab1)#-------------------------------------
		self.f0.pack(pady=5,fill=X)

		self.R1 = Radiobutton(self.f0, text="Arrendatario", variable=aplica, value='Arrendatario')
		self.R1.pack(padx=20,side=LEFT)
		self.R2 = Radiobutton (self.f0, text="Propietario", variable=aplica, value='Propietario')
		self.R2.pack(padx=20,side=LEFT)
		self.R3 = Radiobutton (self.f0, text="Tercero", variable=aplica, value='Tercero')
		self.R3.pack(padx=20,side=LEFT)
		
		self.f1 = Frame(self.tab1)#-------------------------------------
		self.f1.pack(pady=5,fill=X)
		
		self.cc = Label(self.f1, text='CC/Nit: ')
		self.cc.pack(side=LEFT)
		self.ccE = Entry(self.f1)
		self.ccE.pack(side=LEFT)
		
		self.b1 = Button(self.f1, text='Buscar', image=lupa)
		self.b1.image=lupa
		self.b1.pack(side=LEFT)

		self.f2 = Frame(self.tab1)
		self.f2.pack(pady=5,fill=X)#------------------------------------
		
		self.nombre = Label(self.f2, text='Nombre:')
		self.nombre.pack(side=LEFT)
		self.nombrE = Entry(self.f2, width=5, state=DISABLED)
		self.nombrE.pack(side=LEFT, fill=X, expand=1)
		
		self.f3 = Frame(self.tab1)
		self.f3.pack(pady=5,fill=X)#------------------------------------
		
		self.inmueble = Label(self.f3, text='Inmueble:')
		self.inmueble.pack(side=LEFT)
		
		self.inmuebleCbx = Combobox(self.f3, values=NONE, width=10)
		self.inmuebleCbx.set('')
		self.inmuebleCbx.pack(side=LEFT, fill=X, expand=1)
		
		self.b2 = Button(self.f3, text='Agregar', image=lupa)
		self.b2.image=lupa
		self.b2.pack(side=LEFT)
		
		self.f4 = Frame(self.tab1)
		self.f4.pack(pady=5,fill=X)#------------------------------------
		
		self.fpago = Label(self.f4, text='Forma de Pago:')
		self.fpago.pack(side=LEFT)
		
		self.fpagoCbx = Combobox(self.f4, values=NONE, width=10)
		self.fpagoCbx.set('')
		self.fpagoCbx.pack(side=LEFT)
		
		self.b3 = Button(self.f4, text='Crear novedad', state=DISABLED)
		self.b3.pack(side=LEFT)

		#========================== TREEVIEW ===========================
		
		self.f5 = Frame(self.tab1)
		self.f5.pack(pady=5,fill=X)#------------------------------------
		
		self.tree = Treeview(self.f5, height=4, show="headings", columns=('col1','col2','col3'))
		self.tree.pack(side=LEFT, fill=X, expand=1)
		self.tree.column('col1', width=20, anchor='center')
		self.tree.column('col2', width=200, anchor='center')
		self.tree.column('col3', width=10, anchor='center')
		
		self.tree.heading('col1', text='CC')
		self.tree.heading('col2', text='Descripción')
		self.tree.heading('col3', text='Valor')
		
		self.scroll = Scrollbar(self.f3,orient=VERTICAL,command=self.tree.yview)
		self.tree.configure(yscrollcommand=self.scroll.set)

		self.f6 = Frame(self.tab1)
		self.f6.pack(pady=5,fill=X)#--------------------

		self.notesL = Label(self.f6, text='Observaciones:')
		self.notesL.pack(side=LEFT)

		self.f7 = Frame(self.tab1)
		self.f7.pack(pady=5,fill=X)#-------------------

		self.notesT = Text(self.f7, height=5)
		self.notesT.pack(fill=X, side=LEFT, expand=1)
		
		#-----------------------> TAB 2
		
		self.tab2 = Frame (self.nb)
		self.tab2.pack()
		
		#-----------------------> TAB 3
		
		self.tab3 = Frame (self.nb)
		self.tab3.pack()
	
		#---------------------------------------------------------------
		
		self.nb.add (self.tab1, text="Datos Generales")
		self.nb.add(self.tab2, text="Referencia de Pago", state=DISABLED)
		self.nb.add(self.tab3, text="Referencias Bancarias", state=DISABLED)
		
		self.nb.pack()
		
		#---------------------------------------------------------------
		
		self.fBtn = Frame(self.wrapper)
		self.fBtn.pack()#-------------------------------
	
		self.queryB = Button(self.fBtn, text='Consultar')
		self.queryB.pack(side=RIGHT)
		self.deleteB = Button(self.fBtn, text='Borrar')
		self.deleteB.pack(side=RIGHT)
		self.updateB = Button(self.fBtn, text='Actualizar')
		self.updateB.pack(side=RIGHT)
		self.addB = Button(self.fBtn, text='Agregar')
		self.addB.pack(side=RIGHT)
		
		#========================= ASIDE ===========================
		"""
Ejemplo n.º 32
0
    def __init__(self, parent, controller):
        Frame.__init__(self, parent)

        global codigo, ctacontable, nombre, desc, tree

        lupa = PhotoImage(file='img/lupa.png')

        codigo = StringVar()
        ctacontable = StringVar()
        nombre = StringVar()
        desc = StringVar()

        #WIDGETS

        #=========================== HEADER ============================

        self.titleL = Label(self, text="CONCEPTO DE GASTOS", font="bold")
        self.titleL.pack(pady=20, side=TOP)

        #=========================== WRAPPER ===========================

        self.wrapper = Frame(self)
        self.wrapper.pack(side=TOP, fill=Y)

        self.f0 = Frame(self.wrapper)
        self.f0.pack(pady=5, fill=X)  #-----------------------------------

        l1 = Label(self.f0, text="Código:")
        l1.pack(side=LEFT)
        e1 = Entry(self.f0, textvariable=codigo, width=60)
        e1.pack(side=LEFT)
        e1.bind("<KeyRelease>", caps)

        self.f2 = Frame(self.wrapper)
        self.f2.pack(pady=5, fill=X)  #-----------------------------------

        l2 = Label(self.f2, text="Cuenta Contable: ")
        l2.pack(side=LEFT)

        e2 = Entry(self.f2, textvariable=ctacontable, width=60)
        e2.pack(side=LEFT, fill=X, expand=1)

        b0 = Button(self.f2, text="Buscar", image=lupa, command=buscar)
        b0.image = lupa
        b0.pack(side=LEFT)

        self.f3 = Frame(self.wrapper)
        self.f3.pack(pady=5, fill=X)  #-----------------------------------

        self.nombre = Label(self.f3, text="Nombre: ")
        self.nombre.pack(side=LEFT)
        self.nombreE = Entry(self.f3, textvariable=nombre, state=DISABLED)
        self.nombreE.pack(side=LEFT, fill=X, expand=1)

        self.f4 = Frame(self.wrapper)
        self.f4.pack(pady=5, fill=X)  #-----------------------------------

        self.descL = Label(self.f4, text="Descripción: ")
        self.descL.pack(side=LEFT)
        self.descE = Entry(self.f4, textvariable=desc)
        self.descE.pack(side=LEFT, fill=X, expand=1)
        self.descE.bind("<KeyRelease>", caps)

        self.f5 = Frame(self.wrapper)
        self.f5.pack(pady=5, fill=X)  #-----------------------------------

        b1 = Button(self.f5,
                    text="Cargar",
                    bg='navy',
                    foreground='white',
                    activebackground='red3',
                    activeforeground='white',
                    command=cargar)
        b1.pack(side=RIGHT)

        b2 = Button(self.f5,
                    text="Agregar",
                    bg='navy',
                    foreground='white',
                    activebackground='red3',
                    activeforeground='white',
                    command=agregar)
        b2.pack(side=RIGHT)

        self.f6 = Frame(self.wrapper)
        self.f6.pack(pady=5, fill=X)  #-----------------------------------

        tree = Treeview(self.f6,
                        show="headings",
                        columns=('col1', 'col2', 'col3', 'col4'))
        tree.pack(side=LEFT, fill=X, expand=1)
        tree.column('col1', width=2, anchor='center')
        tree.column('col2', width=150, anchor='center')
        tree.column('col3', width=10, anchor='center')
        tree.column('col4', width=150, anchor='center')

        tree.heading('col1', text='Código')
        tree.heading('col2', text='Descripción')
        tree.heading('col3', text='Cta Contable')
        tree.heading('col4', text='Nombre')

        self.scroll = Scrollbar(self.f6, orient=VERTICAL, command=tree.yview)
        tree.configure(yscrollcommand=self.scroll.set)

        self.f7 = Frame(self.wrapper)
        self.f7.pack(pady=5, fill=X)  #-----------------------------------

        self.delete = Button(self.f7,
                             text="Eliminar",
                             bg='navy',
                             foreground='white',
                             activebackground='red3',
                             activeforeground='white',
                             command=borrar)
        self.delete.pack(side=RIGHT)
Ejemplo n.º 33
0
        def __init__(self, parent, controller):
                Frame.__init__(self, parent)
		
		global info, tree
		
		#VARIABLES
		info = IntVar()
		
		#WIDGETS
		
		#========================= HEADER ===========================
		
		self.header = Label(self, text="ADMINISTRADOR DE DOCUMENTOS", font="bold")
		self.header.pack(pady=20, side=TOP)
		
		#========================= WRAPPER 1 ===========================
		
		self.wrapper = Frame (self)
		self.wrapper.pack(side=LEFT, fill=Y)

		#======================== DOCUMENTOS DE ========================
		
		self.f0 = Frame(self.wrapper)
		self.f0.pack(pady=5,fill=X)#------------------------------------

		self.lf1 = LabelFrame(self.f0, text="Documentos de")#---------->

		self.f1 = Frame(self.lf1)
		self.f1.pack(pady=5, side=LEFT)
		
		self.pR1 = Radiobutton(self.f1, text="Propietario", variable=info, value=1, command=select)
		self.pR1.grid(row=0, column=0, sticky=W)
		self.aR2 = Radiobutton (self.f1, text="Arrendatario", variable=info, value=2, command=select)
		self.aR2.grid(row=1, column=0, sticky=W)
		self.tR3 = Radiobutton (self.f1, text="Tercero", variable=info, value=3, command=select)
		self.tR3.grid(row=2, column=0, sticky=W)
		
		self.lf1.pack(side=LEFT)#<--------------------------------------
		
		#====================== FECHAS DE BÚSQUEDA =====================
		
		self.lf2 = LabelFrame(self.f0, text="Fechas de búsqueda")#------>

		self.f2 = Frame(self.lf2)
		self.f2.pack(pady=5)#---------------------------
		
		self.deL = Label(self.f2, text='De:')
		self.deL.pack(side=LEFT)
		
		self.deCbx = Combobox(self.f2, width=32)
		self.deCbx.set('')
		self.deCbx.pack(side=LEFT)
		
		self.f3 = Frame(self.lf2)
		self.f3.pack(pady=5)#---------------------------
		
		self.hastaL = Label(self.f3, text='Hasta:')
		self.hastaL.pack(side=LEFT)
		
		self.hastaCbx = Combobox(self.f3, width=30)
		self.hastaCbx.set('')
		self.hastaCbx.pack(side=LEFT)

		self.lf2.pack(side=LEFT, fill=X)#<---------------------------

		#========================= WRAPPER 2 ===========================
		
		self.wrapper2 = Frame (self.wrapper)
		self.wrapper2.pack(pady=5,fill=X)
		
		#========================= BENEFICIARIO ========================
		
		self.box1 = Frame(self.wrapper2)
		self.box1.pack(side=LEFT)
		
		#---------------------------------------------------------------
		
		self.f4 = Frame(self.box1)
		self.f4.pack()
		
		self.l1 = Label(self.f4, text="Beneficiario")
		self.l1.pack()

		tree = Treeview(self.f4, height=7, show="headings", columns=('col1','col2'))
		tree.pack(side=LEFT, fill=X, expand=1)
		tree.column('col1', width=100, anchor='center')
		tree.column('col2', width=180, anchor='center')
		
		tree.heading('col1', text='CC')
		tree.heading('col2', text='Nombres')
		
		self.scroll = Scrollbar(self.f4,orient=VERTICAL,command=tree.yview)
		tree.configure(yscrollcommand=self.scroll.set)

		self.f5 = Frame(self.box1)#----------------------------------
		self.f5.pack()
		
		self.lf3 = LabelFrame(self.f5, text="Factura Propietario")#---->
		
		self.e1 = Entry(self.lf3, width=12).pack(side=LEFT)
		self.anularCk = Checkbutton(self.lf3, text="Anular").pack(side=LEFT)
		self.viewB = Button(self.lf3, text='Visualizar').pack(side=LEFT)
		
		self.lf3.pack(side=LEFT)#<--------------------------------------
		
		#========================== FACTURAS ==========================
		
		self.box2 = Frame(self.wrapper2)
		self.box2.pack(side=LEFT)
		
		#---------------------------------------------------------------
		
		self.f6 = Frame(self.box2)
		self.f6.pack()
		
		self.l2 = Label(self.f6, text="Facturas")
		self.l2.pack()

		self.tree = Treeview(self.f6, height=7, show="headings", columns=('col1','col2'))
		self.tree.pack(side=LEFT, fill=X, expand=1)
		self.tree.column('col1', width=100, anchor='center')
		self.tree.column('col2', width=100, anchor='center')
		
		self.tree.heading('col1', text='Número')
		self.tree.heading('col2', text='Valor')
		
		self.scroll = Scrollbar(self.f6,orient=VERTICAL,command=self.tree.yview)
		self.tree.configure(yscrollcommand=self.scroll.set)
		
		self.f7 = Frame(self.box2)#----------------------------------
		self.f7.pack()
		
		self.lf4 = LabelFrame(self.f7, text="Factura Arrendatario")#---->
		
		self.e1 = Entry(self.lf4, width=12).pack(side=LEFT)
		self.anularCk = Checkbutton(self.lf4, text="Anular").pack(side=LEFT)
		self.viewB = Button(self.lf4, text='Ver', width=5).pack(side=LEFT)
		
		self.lf4.pack(side=LEFT)#<--------------------------------------
		
		#========================== RECIBOS ==========================
		
		self.box3 = Frame(self.wrapper2)
		self.box3.pack(side=LEFT)
		
		#---------------------------------------------------------------
		
		self.f8 = Frame(self.box3)
		self.f8.pack()
		
		self.l3 = Label(self.f8, text="Recibos de caja")
		self.l3.pack()

		self.tree = Treeview(self.f8, height=7, show="headings", columns=('col1','col2'))
		self.tree.pack(side=LEFT, fill=X, expand=1)
		self.tree.column('col1', width=100, anchor='center')
		self.tree.column('col2', width=100, anchor='center')
		
		self.tree.heading('col1', text='Número')
		self.tree.heading('col2', text='Valor')
		
		self.scroll = Scrollbar(self.f8,orient=VERTICAL,command=self.tree.yview)
		self.tree.configure(yscrollcommand=self.scroll.set)
		
		self.f9 = Frame(self.box3)#----------------------------------
		self.f9.pack()
		
		self.lf5 = LabelFrame(self.f9, text="Recibos de caja")#---->
		
		self.e1 = Entry(self.lf5, width=12).pack(side=LEFT)
		self.anularCk = Checkbutton(self.lf5, text="Anular").pack(side=LEFT)
		self.viewB = Button(self.lf5, text='Ver', width=5).pack(side=LEFT)
		
		self.lf5.pack(side=LEFT)#<--------------------------------------
		
		#===================== COMPROBANTE DE PAGO =====================
		
		self.box4 = Frame(self.wrapper2)
		self.box4.pack(side=LEFT)
		
		#---------------------------------------------------------------
		
		self.f10 = Frame(self.box4)
		self.f10.pack()
		
		self.l4 = Label(self.f10, text="Comprobantes de pago")
		self.l4.pack()

		self.tree = Treeview(self.f10, height=7, show="headings", columns=('col1','col2'))
		self.tree.pack(side=LEFT, fill=X, expand=1)
		self.tree.column('col1', width=100, anchor='center')
		self.tree.column('col2', width=100, anchor='center')
		
		self.tree.heading('col1', text='Número')
		self.tree.heading('col2', text='Valor')
		
		self.scroll = Scrollbar(self.f10,orient=VERTICAL,command=self.tree.yview)
		self.tree.configure(yscrollcommand=self.scroll.set)
		
		self.f11 = Frame(self.box4)#----------------------------------
		self.f11.pack()
		
		self.lf6 = LabelFrame(self.f11, text="Pagos")#---->
		
		self.e1 = Entry(self.lf6, width=12).pack(side=LEFT)
		self.anularCk = Checkbutton(self.lf6, text="Anular").pack(side=LEFT)
		self.viewB = Button(self.lf6, text='Ver', width=5).pack(side=LEFT)
		
		self.lf6.pack(side=LEFT)#<--------------------------------------
Ejemplo n.º 34
0
class Statistics(Toplevel):	
	def __init__(self,parent):
		Toplevel.__init__(self,parent)
		self.title("Статистика")	
		self.transient(parent)
		self.parent = parent

	#fields for parameters of search-----------------------------------------------------------------------------------
		paramframe = Frame(self,relief=GROOVE,width=200,bd=1)
		paramframe.pack(side=LEFT,fill=BOTH)

		Label(paramframe, text="Что вывести",width=20,height=2).grid(row=0,column=0,columnspan=2)
		what = Combobox(paramframe,state='readonly',values = [u"Расходы",u"Доходы",u"Всё"],height=5)
		what.set(u"Расходы")
		what.grid(row=1,column=0,columnspan=2)
		self.what = what		
		
		Label(paramframe, text="За период",height=2).grid(row=2,column=0,columnspan=2)
		when = Combobox(paramframe,state='readonly',values=[u"Сегодня",u"3 дня",u"5 дней",u"Неделю",u"3 недели",u"Месяц",u"Всё время"],height=5)
		when.set(u"Сегодня")
		when.grid(row=3,column=0,columnspan=2)
		self.when = when
		
		Label(paramframe,text="Упорядочить по",height=2).grid(row=4,column=0,columnspan=2)
		orderby = Combobox(paramframe,state='readonly',values=[u"Дата",u"Cумма",u"Категория"],height=3)
		orderby.set(u"Дата")
		orderby.grid(row=5,column=0,columnspan=2)
		
		self.orderby = orderby		

		Button(paramframe,text="Вывести",command=(lambda: self.getStatistics())).grid(row=6,column=0,columnspan=2)		

		Label(paramframe,text="Итого: ",height=20).grid(row=7,column=0)
		self.summarylbl = Label(paramframe,text='0.0',height=20)
		self.summarylbl.grid(row=7,column=1)


	#end ------------------------------------------------------------------------------------------------------------------
		
	#table -------------------------------------------------------------------------------------------------------------
		
		self.viewframe = Frame(self,relief=GROOVE,width=200,bd=1)
		self.viewframe.pack(side=RIGHT,fill=BOTH,expand=YES)

	#end ------------------------------------------------------------------------------------------------------------------

		self.geometry("%dx%d+%d+%d" % (1000,500,225,125))
		self.wait_window(self)
	
	def getStatistics(self):
		when = self.when.current()
		dateRange = ''
		
		if when == 0:
		#today
			dateRange = datetime.date.today()
		elif when == 1:
		#3 days
			dateRange = datetime.date.today() - datetime.timedelta(days=3)
		elif when == 2:
		#5 days
			dateRange = datetime.date.today() - datetime.timedelta(days=5)
		elif when == 3:
		#1 week
			dateRange = datetime.date.today() - datetime.timedelta(weeks=1)
		elif when == 4:
		#3 weeks
			dateRange = datetime.date.today() - datetime.timedelta(weeks=3)
		elif when == 5:
		#1 month
			dateRange = datetime.date.today() - datetime.timedelta(weeks=4)
		elif when == 6:
		#all 
			dateRange = '2012-01-01'
		
		orderby = self.orderby.current()
		if orderby == 0:
		#date
			orderby = 4
		elif orderby == 1:
		#summ
			orderby = 2
		elif orderby == 2:
		#c.title
			orderby = 6
			
		global payments
		payments.getPayments(1,str(dateRange))
		
		if hasattr(self, 'tree'):
			self.tree.destroy()
			
		self.tree = Treeview(self.viewframe,selectmode="extended",columns=('summ', 'comment', 'date','mul','category_title'))
		self.tree.heading('#0',text='№')
		self.tree.column('#0',width=15,anchor='center')
		
		
		self.tree.column('summ', width=60, anchor='center')
		self.tree.column('comment', anchor='center')
		self.tree.column('date', width=60, anchor='center')
		self.tree.column('mul', width=7, anchor='center')
		self.tree.column('category_title',  anchor='center')
		
		self.tree.heading('summ', text='Сумма')
		self.tree.heading('comment', text='Комметарий')
		self.tree.heading('date', text='Дата')
		self.tree.heading('mul', text='Количество')
		self.tree.heading('category_title', text='Категория')
		
		i=1
		summary = 0.0
		for row in payments.paymetsList:
			self.tree.insert('', i,str(i), text=str(i))
			self.tree.set(str(i),'summ',row['summ'])
			self.tree.set(str(i),'comment',row['comment'])
			self.tree.set(str(i),'date',row['date'])
			self.tree.set(str(i),'mul',row['mul'])
			self.tree.set(str(i),'category_title',row['category_title'])
			i+=1
			summary+=row['summ']*row['mul']
		
		self.summarylbl.config(text=str(summary))
		self.tree.pack(side=TOP, fill=BOTH, expand=YES)
		
		s = Scrollbar(self.tree, orient=VERTICAL, command=self.tree.yview)
		self.tree.configure(yscrollcommand=s.set)
		s.pack(side=RIGHT,fill=Y)