示例#1
0
 def __init__(self, tkRoot, app, masterComp, parentNode, logger):
     BaseView.__init__(self, tkRoot, app, logger)
     # master (upper level view) component on which this view was issued
     self.masterComp = masterComp
     
     self.parentNode = parentNode
                          
     self.window = Toplevel(self.tkRoot)
     self.window.title("%s" % parentNode.keyForIsObject)
     
     # self.window.bind("<<close-window>>", self.__onClose) # doesn't work
     self.window.protocol("WM_DELETE_WINDOW", self.__onClose)
     
     text = ScrolledText(self.window, width = RobView.GUI_WIDTH,
                         height = RobView.GUI_HEIGHT, background='white')
     text.pack(fill = Y)
     
     # information from ROB (DataChannel) IS object (criteria results)
     # .valueOfIsObject is a bit misleading since it's criteria results
     # checks based on particular values (attributes) within the IS object
     m = ("ROB '%s':\n\n%s" %
          (parentNode.keyForIsObject, parentNode.valueOfIsObject))
     text.insert(END, m)
     
     text.configure(state = DISABLED) # disable edit now, not before insert
     
     # need to store this view under full name (not only under 
     # self.masterComp.name as the other views), since there may be 
     # a number of views named e.g. 'DataChannel0'
     self.app.addActiveView(self.parentNode.keyForIsObject, self)
示例#2
0
class Credits(tkSimpleDialog.Dialog):
    def body(self, master):
        self.image = Tk.PhotoImage(file=GIFFILE)
        self.icon = Tk.Label(master, image=self.image)
        self.icon.pack(side=Tk.TOP)
        label = Tk.Label(master, text=crnotice1)
        label.pack(side=Tk.TOP)
        font = "Helvetica " + TITLEFONTSIZE
        label = Tk.Label(master,
                         font=font,
                         text="Credits",
                         justify=Tk.CENTER,
                         foreground='blue')
        label.pack(side=Tk.TOP)
        font = "Helvetica " + AXISFONTSIZE
        self.infoText = ScrolledText(master,
                                     relief=Tk.FLAT,
                                     padx=3,
                                     pady=3,
                                     background='white',
                                     foreground="blue",
                                     wrap='word',
                                     width=70,
                                     height=12,
                                     font=font,
                                     tabs=("4c"))
        self.infoText.pack(expand=0, fill=Tk.X, side=Tk.BOTTOM)
        self.infoText.delete('0.0', Tk.END)
        self.infoText.insert('0.0', getCredits())
        self.infoText.configure(state=Tk.DISABLED)
示例#3
0
class TraceFrame(Frame):

    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)

        self.t = ScrolledText(self, wrap="word")
        self.t.configure(background="light cyan")
        self.t.configure(height = 10)
        self.t.tag_config("in", foreground="forest green")
        self.t.tag_config("err", foreground="orange red")
        self.t.tag_config("time", foreground="sea green")
        self.t.tag_config("curr", foreground="black")
        self.t.tag_config("out", foreground="firebrick")
        self.t.pack(side="top", fill="both", expand=True)



    def add_To_Trace(self, st, tag):
        '''
        :param st: txte a afficher
        :param tag:  type de texte a afficher
        :return:
        '''
        self.t.insert(INSERT, st, tag)
        self.t.see(END)

    def clear_Trace(self):
        '''
        Efface la zone de texte
        :return:
        '''
        self.t.delete('1.0', 'end')
示例#4
0
class Run_UI:
        def __init__(self,root):
                #creating the title and window dimensions
                root.iconbitmap('Images\img.ico')
                root.title("Never Miss Class")
                root.maxsize(width=450,height=300)
                root.minsize(width=450,height=300) 
                centre_screen(root,225,150)
                #creating a canvas to place widgets on
                self.main_canvas = Canvas(root,width = 450, height =300,highlightthickness=0)
                self.main_canvas.pack()                        
                self.text_field = ScrolledText(self.main_canvas,width=52,height=18)
                #You have to set the state to normal to make changes to it. Disabling it makes it uneditable
                self.text_field.configure(state='normal')
                #deleting anything previously in the text field
                self.text_field.delete(1.0,END)
                #putting stuff in the text field. Works just like appending onto a list. 
                self.text_field.insert(END, "The program is now running in the background. \n")

                #open the current day's database file
                today = datetime.datetime.now().weekday() 
                weekdays = {0:"Monday",1:"Tuesday",2:"Wednesday",3:"Thursday",4:"Friday"}
                
                f = open(weekdays[today]+".txt", "r")
                classes = []
                for line in f:
                        classes.append(line.strip("\n").split("|"))                       
                f.close()                        
                
                # sort the 2d list by class times, and sort the class names and URLs
                # in the same way so the times and names stay together
                insert_sort(classes[1], classes[0], classes[2])
                
                # set up default names for any classes the user has not named
                for i in range(len(classes[2])):
                        if classes[2][i] == "":
                                classes[2][i] = "Class " + str(i)                
                
                # print out the sorted schedule
                self.text_field.insert(END, "Here is "+weekdays[today]+"'s schedule: \n")
                self.text_field.insert(END, ("{0:25}{1:>10}").format("Class Name", "Class Time \n"))
                self.text_field.insert(END, "-" * 35 + "\n")

                # iterate through the list of URLs
                for i in range(len(classes[0])):
                        # for every non-empty url, print the associated name and date of the class
                        if classes[0][i] != "":
                                self.text_field.insert(END, ("{0:25}{1:>10}").format(classes[2][i], classes[1][i] + "\n"))
                
                # disable the text field after writing to it
                self.text_field.configure(state='disabled')                 
                self.text_field.place(x=5,y=5)
示例#5
0
    def build_dlg(self):
        top = self.top
        top.resizable(0, 1)

        frame = Tkinter.Frame(top)
        text = ScrolledText(frame, height=13, width=50, background='white')
        text.insert('1.0', self.help_text)
        text.configure(state='disabled')
        text.grid(column=0, row=0, sticky='nesw')
        frame.columnconfigure(0, weight=1)
        frame.rowconfigure(0, weight=1)

        button = Tkinter.Button(frame, text=_('Close'), command=self.cancel)
        button.grid(column=0, row=1)

        frame.pack(expand=1, fill='both')
示例#6
0
class aAbout(tkSimpleDialog.Dialog):
    """ The application's about box """
    def __init__(self, master=None):
        tkSimpleDialog.Dialog.__init__(self, master)

    def buttonbox(self):
        # Stolen from tkSimpleDialog.py
        # add standard button box. override if you don't want the
        # standard buttons
        box = Tk.Frame(self)
        w = Tk.Button(box, text="OK", width=10)
        w.pack(side=Tk.RIGHT, padx=5, pady=5)
        self.bind("<Return>", self.ok)
        box.pack(side=Tk.BOTTOM, fill=X)

    def body(self, master):
        self.resizable(0, 0)
        self.catIconImage = Tk.PhotoImage(file=GIFFILE)  # statt file=
        self.catIcon = Tk.Label(master, image=self.catIconImage)
        self.catIcon.pack(side=Tk.TOP)
        label = Tk.Label(master, text=crnotice1)
        label.pack(side=Tk.TOP)
        font = "Helvetica " + TITLEFONTSIZE
        label = Tk.Label(master, font=font, text=crnotice2, justify=Tk.CENTER)
        label.pack(side=Tk.TOP)
        color = 'green'
        font = "Helvetica " + AXISFONTSIZE
        self.infoText = ScrolledText(
            master,
            relief=Tk.FLAT,
            padx=3,
            pady=3,
            background=color,
            #foreground="black",
            wrap='word',
            width=60,
            height=12,
            font=font)
        self.infoText.pack(expand=0, fill=X, side=Tk.BOTTOM)
        self.infoText.delete('0.0', Tk.END)
        self.infoText.insert('0.0', getLicense())
        self.infoText.configure(state=Tk.DISABLED)
        self.title("STARS - About")

    def ok(self):
        print 'ok'
示例#7
0
class aAbout(tkSimpleDialog.Dialog):
    """ The application's about box """
    def __init__(self, master=None):
	    tkSimpleDialog.Dialog.__init__(self, master)
 
    def buttonbox(self):
	# Stolen from tkSimpleDialog.py
        # add standard button box. override if you don't want the
        # standard buttons
        box = Tk.Frame(self)
        w = Tk.Button(box, text="OK", width=10)
        w.pack(side=Tk.RIGHT, padx=5, pady=5)
        self.bind("<Return>", self.ok)
        box.pack(side=Tk.BOTTOM,fill=X)

   
    def body(self, master):
        self.resizable(0,0)
        self.catIconImage = Tk.PhotoImage(file=GIFFILE) # statt file=
        self.catIcon = Tk.Label(master, image=self.catIconImage)
        self.catIcon.pack(side=Tk.TOP)
        label = Tk.Label(master, text=crnotice1)
        label.pack(side=Tk.TOP)
        font = "Helvetica "+TITLEFONTSIZE
        label = Tk.Label(master, font=font, text=crnotice2,
                justify=Tk.CENTER)
        label.pack(side=Tk.TOP)
        color = 'green'
        font = "Helvetica "+AXISFONTSIZE
        self.infoText = ScrolledText(master, relief=Tk.FLAT, 
                         padx=3, pady=3,
                         background=color, 
                         #foreground="black",
                         wrap='word',
                         width=60, height=12,
                         font=font)
        self.infoText.pack(expand=0, fill=X, side=Tk.BOTTOM)
        self.infoText.delete('0.0', Tk.END)
        self.infoText.insert('0.0', getLicense())	
        self.infoText.configure(state=Tk.DISABLED)
        self.title("STARS - About")


    def ok(self):
        print 'ok'
示例#8
0
class Licensing( Frame ):
    BUTTON_TEXT = "Copy to clipboard"

    def __init__( self, master ):
        Frame.__init__( self, master )
        COMPOSITOR.register_view( self )
        self._setup_view()
        self.on_model_updated( COMPOSITOR.OTHER_UPDATED )

    def _setup_view( self ):
        self.rowconfigure( 0, weight = 1 )
        self.columnconfigure( 0, weight = 1 )

        self.license_box = ScrolledText( self, state = DISABLED )
        self.license_box.grid( row = 0, column = 0, sticky = W + E + N + S, padx = 5, pady = 5 )

        self.clipboard_button = Button( self, text = self.BUTTON_TEXT, command = self._on_copy_pressed )
        self.clipboard_button.grid( row = 1, column = 0, sticky = N + E )

    def _on_copy_pressed( self ):
        self.license_box.clipboard_clear()
        self.license_box.clipboard_append( self.license_box.get( '0.0', END ) )
        self.clipboard_button.configure( text = "Copied!", state = DISABLED )
        self.after( 2500, lambda: self.clipboard_button.configure( text = self.BUTTON_TEXT, state = NORMAL ) )

    def on_model_updated( self, reason ):
        if reason not in [COMPOSITOR.OTHER_UPDATED, COMPOSITOR.SELECTED_TYPE_CHANGED, COMPOSITOR.LAYER_ADDED, COMPOSITOR.LAYER_REMOVED, COMPOSITOR.SHEET_SELECTED, COMPOSITOR.LAYER_ORDER_CHANGED]:
            return

        # The compositor changed state, so make sure we're up to date, too.
        self.license_box.configure( state = NORMAL )

        # clear the existing text
        self.license_box.delete( 1.0, END )

        sheets = COMPOSITOR.get_selected_sheets().values()
        license_text = LICENSING.get_formatted_licensing( sheets )

        self.license_box.insert( END, license_text )
        self.license_box.configure( state = DISABLED )

    def destroy( self ):
        COMPOSITOR.deregister_view( self )
        Frame.destroy( self )
示例#9
0
class Credits(tkSimpleDialog.Dialog):
    def body(self, master):
        self.image = Tk.PhotoImage(file=GIFFILE)
        self.icon = Tk.Label(master, image=self.image)
        self.icon.pack(side=Tk.TOP)
        label = Tk.Label(master, text= crnotice1)
        label.pack(side=Tk.TOP)
        font = "Helvetica "+TITLEFONTSIZE
        label = Tk.Label(master, font=font,text= "Credits",
                justify=Tk.CENTER, foreground='blue')
        label.pack(side=Tk.TOP)
        font = "Helvetica "+AXISFONTSIZE
        self.infoText = ScrolledText(master, relief=Tk.FLAT, 
                         padx=3, pady=3,
                         background='white', 
                         foreground="blue",
                         wrap='word',
                         width=70, height=12,
                         font=font,
                         tabs=("4c"))
        self.infoText.pack(expand=0, fill=Tk.X, side=Tk.BOTTOM)
        self.infoText.delete('0.0', Tk.END)
        self.infoText.insert('0.0', getCredits())	
        self.infoText.configure(state=Tk.DISABLED)
示例#10
0
    socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    socket.connect((host, 8090))
except:
    print "Connection Failed. Please try again later"
    sys.exit()

# The following is the gui programming part to create a
# window to display the incoming messages, and accept user input to send to
# chat server
root = Tk()
root.title("Admin Client v.0.1")

# Display textbox (15 rows by 80 columns)
displayT = ScrolledText(root, height=15, width=80)
displayT.insert(END, "")
displayT.configure(state="disabled")
displayT.pack()

# User input textbox (at the lower part of the window, only 2 rows x 80 column)
inputT = Text(root, height=2, width=80, bg='#ffa64d')
inputT.insert(END, "")
inputT.bind('<KeyRelease>', inputKeyup)

inputT.pack(side=LEFT)
sendbutton = Button(root, text="Send")
sendbutton.bind('<Button-1>', sendmsg)
sendbutton.pack()
quitbutton = Button(root, text="Quit")
quitbutton.bind('<Button-1>', quit)
quitbutton.pack()
inputT.focus_set()  # ensure focus on the input textbox
示例#11
0
    fd.close()
    return blks


root = Tk()
root.configure(background='black')
root.title("Merge Join Algorithm with Given Queries")
root.resizable(width=False, height=False)
frame = Frame(root)
queryvar = StringVar()
ql = StringVar()
frame.grid(row=2, column=0, columnspan=4)
text = ScrolledText(frame, wrap="word")
text.grid(row=2)
text.config(font=("Courier", 12))
text.configure(background='white', foreground='black')
d = "C:/Users/skuch/Desktop/Courses/8340_DB2/Project/Tables/"
branchNYC = readBlocks(d + "NewYork_Branch.txt", 7)
text.insert(INSERT, "\n")
#text.insert(INSERT, len(branchNYC))

accountNYC = readBlocks(d + 'NewYork_Account.txt', 10)
text.insert(INSERT, "\n")
#text.insert(INSERT, len(accountNYC))

depositorNYC = readBlocks(d + 'NewYork_Depositor.txt', 15)
text.insert(INSERT, "\n")
#text.insert(INSERT, len(depositorNYC))

customerHOU = readBlocks(d + 'Houston_Customer.txt', 8)
text.insert(INSERT, "\n")
示例#12
0
    def build_dlg(self):
        from Sketch.Plugins.Objects.Lib.autoshapes.icons import icons

        top = self.top
        frame = Tkinter.Frame(top)
        text = ScrolledText(frame, background='#ffffff', height=10, width=40)
        self.text = text

        def NOOP():
            pass

        def add(text, bitmap, fun=NOOP):
            button = ShapeBtn(text, bitmap)
            button.config(command=fun)
            text.window_create("end", window=button)

        def newline(text):
            pass
            #text.insert('end', '\n')

        add(text, icons.uparrow, lambda s=self: s.insert('arrow', 270))
        add(text, icons.rightarrow, lambda s=self: s.insert('arrow', 180))
        add(text, icons.downarrow, lambda s=self: s.insert('arrow', 90))
        add(text, icons.leftarrow, lambda s=self: s.insert('arrow', 0))
        newline(text)
        add(text, icons.vdoublearrow, lambda s=self: \
            s.insert('doublearrow', 90))
        add(text, icons.hdoublearrow, lambda s=self: \
            s.insert('doublearrow', 0))
        newline(text)
        add(text, icons.thinleftturn1, lambda s=self: s.insert('thinturn'))
        add(text, icons.thinrightturn1, lambda s=self: \
            s.insert('thinturn', 180))
        add(text, icons.thinleftturn2, lambda s=self: \
            s.insert_toggle_dir('thinturn'))
        add(text, icons.thinrightturn2, lambda s=self: \
            s.insert_toggle_dir('thinturn', 180))
        add(text, icons.leftthinhalfturn, lambda s=self: \
            s.insert('thinhalfturn'))
        add(text, icons.rightthinhalfturn, lambda s=self: \
            s.insert('thinhalfturn', 180))
        newline(text)

        add(text, icons.scalebar, lambda s=self: s.insert('scalebar'))
        add(text, icons.happy, lambda s=self: s.insert('smiley'))
        add(text, icons.sad, lambda s=self: s.insert_sad())
        newline(text)

        add(text, icons.cube, lambda s=self: s.insert('cube'))
        add(text, icons.cylinder, lambda s=self: s.insert('cylinder'))
        add(text, icons.triangle, lambda s=self: s.insert_triangle())
        add(text, icons.hexagon, lambda s=self: s.insert_hexagon())
        newline(text)

        add(text, icons.star1, lambda s=self: s.insert_star(10, 20, 6))
        add(text, icons.star2, lambda s=self: s.insert_star(15, 20, 6))
        add(text, icons.star3, lambda s=self: s.insert_star(5, 20, 8))
        newline(text)

        add(text, icons.angle, lambda s=self: s.insert('angle'))
        add(text, icons.measure, lambda s=self: s.insert('measure'))
        #add(text, icons.roundedangle, lambda s=self:s.insert('roundedangle'))

        add(text, icons.raster, lambda s=self: s.insert('raster'))
        add(text, icons.tangent, lambda s=self: s.insert('tangent'))
        add(text, icons.divide, lambda s=self: s.insert('divide'))
        add(text, icons.intersection, lambda s=self: s.insert('intersection'))
        newline(text)

        add(text, icons.circle1, lambda s=self: s.insert('circle1'))
        add(text, icons.circle2, lambda s=self: s.insert('circle2'))
        add(text, icons.circle3, lambda s=self: s.insert('circle3'))
        add(text, icons.arc, lambda s=self: s.insert('arc'))
        add(text, icons.rim, lambda s=self: s.insert('rim'))
        newline(text)

        add(text, icons.vconnection, lambda s=self: s.insert('vconnection'))
        add(text, icons.hconnection, lambda s=self: s.insert('hconnection'))
        add(text, icons.dconnection, lambda s=self: s.insert('dconnection'))
        newline(text)

        text.configure(state='disabled')
        text.grid(column=0, row=0, sticky='ewns')
        frame.rowconfigure(0, weight=1)
        frame.columnconfigure(0, weight=1)

        bottom = Tkinter.Frame(frame)
        button = Tkinter.Button(bottom, text=_('Close'), \
                                command=self.close_dlg)
        button.pack(side='right')

        if _debug:
            button = Tkinter.Button(bottom, text=_('Shell'), \
                                    command=self.open_shell)
            button.pack(side='left')

        bottom.grid(column=0, row=1, sticky='ew')
        frame.pack(fill='both', expand=1)
        self.frame = frame
示例#13
0
class gui:

    def __init__(self):
        self.master = Tk()
        self.master.geometry("800x600+100+10")
        self.master.title("WIReS - Web Information Retrieval System")
        self.master.configure(background='white')
        self.master.resizable(width=FALSE, height=FALSE)

    ########################################################################################################
    def guimain(self):

        global query
        query = StringVar(None)

        def devs():
            tkMessageBox.showinfo("DEVELOPERS", '''BS COMPUTER SCIENCE 302
CAVITE STATE UNIVERSITY - ROSARIO CAMPUS

Lamberto A. Bruno. Jr.
Jomari R. Iringan
            ''')

        def help():
            tkMessageBox.showinfo("HELP", '''CONTACT US:
Bruno ( 0905-511-9881 )
Joms ( 0906-870-2976 )

EMAIL US:
[email protected]
            ''')

        def priv():
            tkMessageBox.showinfo("PRIVACY", '''For privacy terms and policies please see
https://www.google.com/policies/privacy/
            ''')

        def clearBtn():
            self.searchEntry.delete(0,END)
            self.searchEntry.focus_set()
            return



        self.label1 = Label(self.master, text="WIReS", font=('Impact',70),bg='white')
        self.label2 = Label(self.master, text="   SEARCH ENGINE", bg ='#008080', fg='white', font=('arial',7))
        self.lineLabel = Label(self.master,text="____________________________",fg='red',bg='red', font =('arial',7))
        self.helpBtn = Button(self.master, text="HELP", font=('Courier',10),command = help)
        self.privBtn = Button(self.master, text="PRIVACY", font=('Courier',10),command = priv)
        self.devsBtn = Button(self.master, text="DEVS", font=('Courier',10),command = devs)
        self.searchEntry = Entry(self.master, width='50', relief='groove', borderwidth='5', font=('Calibri',15), textvariable=query)
        self.searchButton = Button(self.master, text="SEARCH!", width='30')
        self.clearButton = Button(self.master, text="CLEAR FIELD", command = clearBtn)
        #locs
        self.label1.place(x=300,y=150)
        self.label2.place(x=455,y=250)
        self.lineLabel.place(x=310,y=250)
        self.searchEntry.place(x=180,y=320)
        self.searchButton.place(x=400,y=400)
        self.clearButton.place(x=250, y=400)
        self.devsBtn.place(x=690,y=570)
        self.helpBtn.place(x=738,y=570)
        self.privBtn.place(x=618, y=570)

        self.searchEntry.focus_set()

        self.searchButton.bind("<Button-1>",self.searchBtn)
        self.searchEntry.bind("<Return>", self.searchBtn)


    def searchBtn(self, event):
        try:
            global xTime
            global query
            xTime = StringVar()
            query = StringVar(None)
            search_ = Search()
            query = self.searchEntry.get()
            if query not in (None, '', ' '):
                start_time = time.time()
                global title_url
                title_url = [None]
                raw = search_.fetch_url(query)
                title_url = search_.process_url(raw)
                self.master.withdraw()
                xTime = (time.time() - start_time)
                self.guiresults()
            else:
                tkMessageBox.showinfo('Info', 'You must put a keyword')
        except Exception as e:
                tkMessageBox.showinfo('Info', 'No Internet Connection Try Again Later')
                exit()

####################

    def guiresults(self):

        global q_String
        q_String = StringVar()
        graph = Graph()
        html_parse = htmlParser()
        

        def showGraph():        
            raws = StringVar()
            raws = self.result_label.get(1.0, END)
            
            graph.plot_word(raws)

        def showPos():
            raws = StringVar()
            raws = self.result_label.get(1.0, END)
            graph.plot_pos(raws)


        def clearBtn1():
            self.searchEntry1.delete(0,END)
            self.searchEntry1.focus_set()
            return
        start_time = time.time()
        self.masters = Tk()
        self.masters.geometry("1100x700+100+10")
        self.masters.title("WIReS - Web Information Retrieval System")
        self.masters.configure(background='white')
        self.masters.resizable(width=FALSE, height=FALSE)

        self.searchEntry1 = Entry(self.masters, width='50', relief='groove', borderwidth='5', font=('Calibri',15))
        self.searchButton = Button(self.masters, text="SEARCH!", width='25')
        self.clearButton1 = Button(self.masters, text="CLEAR FIELD", width='25',command = clearBtn1)
        self.labelss = Label(self.masters, text="SEARCH RESULTS:", bg ='#008080', fg='white', font=('arial',10))
        self.timeLabel = Label(self.masters, text="SEARCH COMPLETED AT ", font=('arial',8))
        self.resultframe = LabelFrame(self.masters,text="PAGE RESULT",height=520, width=990,relief = "groove", bg ="white")
        self.resultframe1 = LabelFrame(self.masters,height=540, width=990,relief = "groove", bg ="white")
        self.result_label = ScrolledText(self.resultframe,width = 120, height = 32,bg = 'white', undo = True)
        self.graphButton = Button(self.masters, text="WORD OCCURENCE(GRAPH)", width='25',command = showGraph)
        self.posButton = Button(self.masters, text="PART OF SPEECH(GRAPH)", width='25', command = showPos)

        #URL
        self.labelres1 = Label(self.resultframe1, text = title_url[0][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres1= Label(self.resultframe1, text = title_url[0][1], fg="blue", cursor="hand2", bg="white")
        self.labelres2 = Label(self.resultframe1, text = title_url[1][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres2 = Label(self.resultframe1, text = title_url[1][1], fg="blue", cursor="hand2", bg="white")
        self.labelres3 = Label(self.resultframe1, text = title_url[2][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres3 = Label(self.resultframe1, text = title_url[2][1], fg="blue", cursor="hand2", bg="white")
        self.labelres4 = Label(self.resultframe1, text = title_url[3][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres4 = Label(self.resultframe1, text = title_url[3][1], fg="blue", cursor="hand2", bg="white")
        self.labelres5 = Label(self.resultframe1, text = title_url[4][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres5 = Label(self.resultframe1, text = title_url[4][1], fg="blue", cursor="hand2", bg="white")
        self.labelres6 = Label(self.resultframe1, text = title_url[5][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres6 = Label(self.resultframe1, text = title_url[5][1], fg="blue", cursor="hand2", bg="white")
        self.labelres7 = Label(self.resultframe1, text = title_url[6][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres7 = Label(self.resultframe1, text = title_url[6][1], fg="blue", cursor="hand2", bg="white")
        self.labelres8 = Label(self.resultframe1, text = title_url[7][0], font=('arial 13 bold'), bg="white", cursor="hand2")
        self.linkres8 = Label(self.resultframe1, text = title_url[7][1], fg="blue", cursor="hand2", bg="white")

        #gui2 loc
        self.resultframe1.place(x=15,y=80)
        self.searchEntry1.place(x=15,y=15)
        self.searchButton.place(x=550,y=18)
        self.labelss.place(x=15,y=60)
        self.timeLabel.place(x=15,y=630)


        self.labelres1.place(x=1,y=30)
        self.linkres1.place(x=5,y=60)
        self.labelres2.place(x=1,y=90)
        self.linkres2.place(x=5,y=120)
        self.labelres3.place(x=1,y=150)
        self.linkres3.place(x=5,y=180)
        self.labelres4.place(x=1,y=210)
        self.linkres4.place(x=5,y=240)
        self.labelres5.place(x=1,y=270)
        self.linkres5.place(x=5,y=300)
        self.labelres6.place(x=1,y=330)
        self.linkres6.place(x=5,y=360)
        self.labelres7.place(x=1,y=390)
        self.linkres7.place(x=5,y=420)
        self.labelres8.place(x=1,y=450)
        self.linkres8.place(x=5,y=480)
        self.clearButton1.place(x=800,y=18)


        self.searchEntry1.insert(END,query)

        self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (xTime), font=('arial',8))
        self.timeLabelres.place(x=150,y=630)

        def graphloc():
            self.graphButton.place(x = 550, y=50)
            self.posButton.place(x = 800, y=50)








        #eventfunc
        def callback1(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[0][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()


        def callback2(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[1][1]))
            self.resultframe1.destroy()
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()


        def callback3(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[2][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()

        def callback4(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[3][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()

        def callback5(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[4][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()


        def callback6(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[5][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()


        def callback7(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[6][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()



        def callback8(event):
            start_time = time.time()
            raw = html_parse.clean_html(html_parse.url_opener(title_url[7][1]))
            self.resultframe1.destroy()
            self.resultframe.place(x=15,y=80)
            self.result_label.place(x = 1, y = 1)
            self.result_label.insert(END,raw)
            self.result_label.configure(state = 'disabled')
            self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (time.time() - start_time), font=('arial',8))
            self.timeLabelres.place(x=150,y=630)
            graphloc()


       

        def searchAction(event):
            try:
                global query
                global mTime
                mTime = StringVar(None)
                query = StringVar(None)
                search_ = Search()
                query = self.searchEntry1.get()

                if query not in (None, '', ' '):
                    start_time = time.time()
                    global title_url
                    title_url = [None]
                    raw = search_.fetch_url(query)
                    title_url = search_.process_url(raw)
                    self.masters.withdraw()
                    mTime = (time.time() - start_time)
                    self.guiresults()
                    self.timeLabelres = Label(self.masters, text="--- %s seconds ---" % (mTime), font=('arial',8))
                    self.timeLabelres.place(x=150,y=630)
                    
                else:
                    tkMessageBox.showinfo('Info', 'You must put a keyword')
            except Exception as e:
                    tkMessageBox.showinfo('Info', 'No Internet Connection Try Again Later')
                    exit()

        #eventlink

        self.searchButton.bind("<Button-1>",searchAction)
        self.searchEntry1.bind("<Return>",searchAction)
        self.linkres1.bind("<Button-1>", callback1)
        self.linkres2.bind("<Button-1>", callback2)
        self.linkres3.bind("<Button-1>", callback3)
        self.linkres4.bind("<Button-1>", callback4)
        self.linkres5.bind("<Button-1>", callback5)
        self.linkres6.bind("<Button-1>", callback6)
        self.linkres7.bind("<Button-1>", callback7)
        self.linkres8.bind("<Button-1>", callback8)
        self.labelres1.bind("<Button-1>", callback1)
        self.labelres2.bind("<Button-1>", callback2)
        self.labelres3.bind("<Button-1>", callback3)
        self.labelres4.bind("<Button-1>", callback4)
        self.labelres5.bind("<Button-1>", callback5)
        self.labelres6.bind("<Button-1>", callback6)
        self.labelres7.bind("<Button-1>", callback7)
        self.labelres8.bind("<Button-1>", callback8)
        self.searchEntry1.insert(END,'')
示例#14
0
class Kmers(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.customFont = Font(family="consolas", size=10)
        self.seq = ""
        self.kmer = 2
        self.parent = parent
        self.initUI()

    def initUI(self):

        self.parent.title("Kmers")
        self.pack(fill=BOTH, expand=False)

        Label(self, text="Fichier de la Sequence:").grid(sticky=W + E + S + N,
                                                         row=0,
                                                         column=0,
                                                         padx=5,
                                                         pady=5)
        Label(self, text="Nombre des Kmers:").grid(sticky=W + E + S + N,
                                                   row=1,
                                                   column=0,
                                                   padx=5,
                                                   pady=5)

        self.btn = Button(self, text="Open File", command=self.onOpen)
        self.btn.grid(sticky=E, row=0, column=0, padx=5, pady=5)

        self.e1 = tkinter.Entry(self, state="disabled")
        self.e1.configure(width=12)
        self.e1.grid(sticky=E, row=1, column=0, padx=5, pady=5)

        self.btn2 = Button(self,
                           text="Calcule",
                           state="disabled",
                           command=self.onCalcule)
        self.btn2.grid(sticky=W + E + S + N, row=1, column=1, padx=5, pady=5)

        lbl = Label(self, text="Infos")
        #lbl.grid(sticky=W, row=2, column=0, padx=5)

        self.v = tkinter.IntVar()
        self.v = 2
        r1 = tkinter.Radiobutton(self,
                                 text="Euclidenne",
                                 variable=self.v,
                                 value=1)
        r2 = tkinter.Radiobutton(self,
                                 text="Correlation",
                                 variable=self.v,
                                 value=2)

        r1.grid(sticky=W, row=2, column=0, padx=5)
        r2.grid(sticky=W, row=2, column=1, padx=5)

        lbl2 = Label(self, text="List Kmers")
        lbl2.grid(sticky=W, row=0, column=2, padx=5)

        self.area = ScrolledText(self, wrap=tkinter.WORD)
        self.area.configure(state="disabled",
                            font=self.customFont,
                            height=20,
                            width=50)
        self.area.grid(padx=5, pady=2, row=3, columnspan=2, rowspan=30)

        self.listbox = tkinter.Listbox(self)
        self.listbox.config(height=25, width=58)
        self.listbox.grid(pady=5, row=1, column=2, rowspan=30)

        lbl = Label(self, text="1. Proportion genome")
        lbl.grid(sticky=W + E + S + N, row=0, column=4, padx=5)

        lbl = Label(self, text="Pas:"******"Fenetre:")
        lbl.grid(sticky=W + E + S + N, row=2, column=4, padx=5)

        self.e2 = tkinter.Entry(self, state="disabled")
        self.e2.configure(width=12)
        self.e2.grid(sticky=E, row=1, column=4, padx=5, pady=5)

        self.e3 = tkinter.Entry(self, state="disabled")
        self.e3.configure(width=12)
        self.e3.grid(sticky=E, row=2, column=4, padx=5, pady=5)

        self.btn3 = Button(self,
                           text="Calcule",
                           state="disabled",
                           command=self.onCalcule2)
        self.btn3.grid(sticky=W + E + S + N, row=2, column=5, padx=5, pady=5)

        lbl = Label(self, text="Calcule subparties")
        lbl.grid(sticky=W + E + S + N, row=3, column=4, padx=5)

        lbl = Label(self, text="Pas:"******"Fenetre:")
        lbl.grid(sticky=W + E + S + N, row=5, column=4, padx=5)

        self.e4 = tkinter.Entry(self, state="disabled")
        self.e4.configure(width=12)
        self.e4.grid(sticky=E, row=4, column=4, padx=5, pady=5)

        self.e5 = tkinter.Entry(self, state="disabled")
        self.e5.configure(width=12)
        self.e5.grid(sticky=E, row=5, column=4, padx=5, pady=5)

        self.btn4 = Button(self,
                           text="Calcule",
                           state="disabled",
                           command=self.onCalcule3)
        self.btn4.grid(sticky=W + E + S + N, row=5, column=5, padx=5, pady=5)

        self.imp = tkinter.BooleanVar()
        self.cb = tkinter.Checkbutton(self,
                                      text="Imprimer Partie Genome diferente",
                                      state="disabled",
                                      variable=self.imp,
                                      command=self.onClick)
        self.cb.grid(sticky=W + E + S + N,
                     row=6,
                     column=4,
                     columnspan=2,
                     padx=5,
                     pady=5)

        self.btn5 = Button(self,
                           text="Creer Phylo",
                           state="disabled",
                           command=self.onCalcule4)
        self.btn5.grid(sticky=W + E + S + N,
                       row=7,
                       column=4,
                       columnspan=2,
                       padx=5,
                       pady=5)

        self.btn6 = Button(self,
                           text="Creer Reseau Relations",
                           state="disabled",
                           command=self.onCalcule5)
        self.btn6.grid(sticky=W + E + S + N,
                       row=8,
                       column=4,
                       columnspan=2,
                       padx=5,
                       pady=5)

        lbl = Label(self, text="2. Choisir genome / genome Predicte")
        lbl.grid(sticky=W + E + S + N, row=0, column=7, columnspan=2, padx=5)

        lbl = Label(self, text="Taille morceau")
        lbl.grid(sticky=W + E + S + N, row=1, column=7, padx=5)

        self.e7 = tkinter.Entry(self, state="disabled")
        self.e7.configure(width=12)
        self.e7.grid(sticky=E, row=1, column=8, padx=5, pady=5)

        self.btn7 = Button(self,
                           text="Cherching morceau",
                           state="disabled",
                           command=self.onCalcule6)
        self.btn7.grid(sticky=W + E + S + N,
                       row=2,
                       column=7,
                       columnspan=2,
                       padx=5,
                       pady=5)

        lbl = Label(self, text="3. Experience aleatoire un genome")
        lbl.grid(sticky=W + E + S + N, row=4, column=7, columnspan=2, padx=5)

        lbl = Label(self, text="Taille morceau")
        lbl.grid(sticky=W + E + S + N, row=5, column=7, padx=5)

        self.e8 = tkinter.Entry(self, state="disabled")
        self.e8.configure(width=12)
        self.e8.grid(sticky=E, row=5, column=8, padx=5, pady=5)

        lbl = Label(self, text="Nombre de fois")
        lbl.grid(sticky=W + E + S + N, row=6, column=7, padx=5)

        self.e9 = tkinter.Entry(self, state="disabled")
        self.e9.configure(width=12)
        self.e9.grid(sticky=E, row=6, column=8, padx=5, pady=5)

        self.btn8 = Button(self,
                           text="Lancer l'experience ",
                           state="disabled",
                           command=self.onCalcule7)
        self.btn8.grid(sticky=W + E + S + N,
                       row=7,
                       column=7,
                       columnspan=2,
                       padx=5,
                       pady=5)

        lbl = Label(self, text="3. Experience aleatoire tous les genomes")
        lbl.grid(sticky=W + E + S + N, row=8, column=7, columnspan=2, padx=5)

        lbl = Label(self, text="Taille morceau")
        lbl.grid(sticky=W + E + S + N, row=9, column=7, padx=5)

        self.e10 = tkinter.Entry(self, state="disabled")
        self.e10.configure(width=12)
        self.e10.grid(sticky=E, row=9, column=8, padx=5, pady=5)

        lbl = Label(self, text="Nombre de fois")
        lbl.grid(sticky=W + E + S + N, row=10, column=7, padx=5)

        self.e11 = tkinter.Entry(self, state="disabled")
        self.e11.configure(width=12)
        self.e11.grid(sticky=E, row=10, column=8, padx=5, pady=5)

        self.btn9 = Button(self,
                           text="Lancer l'experience ",
                           state="disabled",
                           command=self.onCalcule8)
        self.btn9.grid(sticky=W + E + S + N,
                       row=11,
                       column=7,
                       columnspan=2,
                       padx=5,
                       pady=5)

    def onOpen(self):
        ftypes = [('Fna files', '*.fna')]
        dlg = filedialog.Open(self, filetypes=ftypes)
        fl = dlg.show()
        n = len(fl.split('/')[-1]) + 1
        path = fl[:-n]
        start = timeit.default_timer()

        onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
        message = "Liste des genomes charges: \n"
        self.sequences = {}
        for f in onlyfiles:
            s = path + '/' + f
            name, genome = lireSeq(s)
            self.sequences[name] = genome
            message = message + name + '\n'
        stop = timeit.default_timer()
        time_total = stop - start

        message += '\n'
        message += ' --> Time reading : ' + str(time_total) + '\n\n'
        self.area.configure(state="normal")
        self.area.insert(END, message)

        self.area.configure(state="disabled")
        self.btn2.configure(state="normal")
        self.e1.configure(state="normal")

    def onCalcule(self):
        k = self.e1.get()
        try:
            self.kmer = int(k)
            self.e1.configure(state="disabled")
            self.btn2.configure(state="disabled")

            self.area.configure(state="normal")
            message = "Kmer calcule : " + str(k) + "\n"
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            start = timeit.default_timer()

            self.dico_k_mers = do_dic_kmers(self.kmer, alphabet_nt)
            try:
                self.dicProfils = do_profils_all_genomes(
                    self.sequences, self.dico_k_mers, self.kmer)
                """
                cont = 0
                for key in self.dicProfils.keys():
                    l = list(self.dicProfils[key].values()).count(0)
                    string = key+ "  Lenght Profil: "+ str(len(self.dicProfils[key])-l)
                    self.listbox.insert(cont, string)
                    cont += 1
                """
            except Exception as e:
                print("ici INI", e)

            stop = timeit.default_timer()
            time_total = stop - start

            message = ' --> Time calculating Profils : ' + str(
                time_total) + '\n\n'

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            self.btn3.configure(state="normal")
            self.e2.configure(state="normal")
            self.e3.configure(state="normal")

            self.btn7.configure(state="normal")
            self.e7.configure(state="normal")
            self.btn8.configure(state="normal")
            self.e8.configure(state="normal")
            self.e9.configure(state="normal")
            self.btn9.configure(state="normal")
            self.e10.configure(state="normal")
            self.e11.configure(state="normal")

        except Exception as e:
            print("ici INI2", e)
            mbox.showwarning("Warning", "Number must be Integer")

    def onCalcule2(self):
        pas = self.e2.get()
        fenetre = self.e3.get()
        self.pas = []
        self.fenetres = []
        self.positions = {}
        self.infoDistances = {}
        self.partieGenomeDif = {}
        self.cont = 0

        try:
            self.cont = 0
            self.pas.append(int(pas))
            self.fenetres.append(int(fenetre))

            self.area.configure(state="normal")
            message = "Proportion Genome : pas: "******" fenetre: " + str(fenetre) + " \n"
            message += "Calcule distance..." + "\n"
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            start = timeit.default_timer()

            self.parties = do_sub_parts(self.dicProfils, self.sequences,
                                        int(pas), int(fenetre),
                                        self.dico_k_mers, self.kmer, self.v)

            pdfFile = path_dir + '/images/FirstParties.pdf'
            pp = PdfPages(pdfFile)

            means = do_mean_sub_parts(self.parties)
            ecarts = do_sd_sub_parts(self.parties, means)

            message = "Position dans le genome avec la max dist: \n"
            try:
                for i in self.parties.keys():
                    self.positions[i] = [
                        self.parties[i].index(max(self.parties[i])) *
                        (int(pas))
                    ]
                    listI = []
                    listI.append(
                        [max(self.parties[i]), means[i] + ecarts[i] * 2])
                    self.infoDistances[i] = listI
                    message += i + ' pos: ' + str(
                        self.positions[i][self.cont]) + "\n"
                message += '\n'
            except Exception as e:
                print("ici 2", e)

            try:
                self.plot_for_each_genome(self.parties, pp, self.pas,
                                          self.positions, self.fenetres,
                                          self.cont, True, means, ecarts)
            except Exception as e:
                print("ici 1", e)

            subprocess.Popen([pdfFile], shell=True)

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            try:
                self.partieGenomeDif = get_partieDif_all_genomes(
                    self.sequences, self.positions, self.pas, int(fenetre),
                    self.cont)
            except Exception as e:
                print("ici 3", e)

            stop = timeit.default_timer()
            time_total = stop - start

            message = ' --> Time calculating sub-parties : ' + str(
                time_total) + '\n\n'

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            self.btn3.configure(state="disabled")
            self.e2.configure(state="disabled")
            self.e3.configure(state="disabled")

            self.btn4.configure(state="normal")
            self.e4.configure(state="normal")
            self.e5.configure(state="normal")

        except Exception as e:
            print("ici 3", e)
            mbox.showwarning("Warning", "Number must be Integer")

    def myplotcode(self, x, y):
        fig = plt.figure(figsize=(40, 40))
        ax = fig.add_subplot(111)
        x_points = range(0, len(x))
        y_points = y
        ax.plot(x_points, y_points, 'b')
        ax.set_xlabel('Parties Genome')
        ax.set_ylabel('Distance')
        ax.set_title('Distribution proportion Genome')
        return fig

    def plot_for_each_genome(self, sub_parts_for_each_genome, pp, pas,
                             positions, fenetres, cont, boolean, means,
                             ecarts):
        try:
            for i in sub_parts_for_each_genome.keys():
                fig = plt.figure()
                ax = fig.add_subplot(111)
                pos = 0
                position = positions[i]
                if boolean:
                    pos = int(position[cont] - (fenetres[cont] / 2))
                else:
                    pos = int(position[-1] - (fenetres[-2] / 2))
                    if pos < 0:
                        pos = 0
                if cont == 0:
                    xVector = range(
                        0,
                        len(sub_parts_for_each_genome[i]) * pas[cont],
                        pas[cont])
                    x_points = xVector
                else:
                    xVector = range(
                        pos,
                        pos + len(sub_parts_for_each_genome[i]) * pas[cont],
                        pas[cont])
                    x_points = xVector

                y_points = sub_parts_for_each_genome[i]
                plt.plot(x_points, y_points, 'b')
                ax.set_xlabel('Position')
                ax.set_ylabel('Distance')
                ax.set_title(i)
                x = x_points
                y = len(x) * [means[i]]
                plt.plot(x, y)
                x = x_points
                y = len(x) * [means[i] + ecarts[i] * 2]
                plt.plot(x, y)
                x = x_points
                y = len(x) * [means[i] - ecarts[i] * 2]
                plt.plot(x, y)
                pp.savefig()
            pp.close()
        except Exception as e:
            print(e)

    def onCalcule3(self):
        pas = self.e4.get()
        fenetre = self.e5.get()
        self.cont += 1
        try:
            if int(fenetre
                   ) == self.fenetres[-1] or int(fenetre) > self.fenetres[-1]:
                mbox.showwarning(
                    "Warning",
                    "La fenetre foit etre de taille inferieure a la derniere fenetre"
                )
                return
            else:
                self.pas.append(int(pas))
                self.fenetres.append(int(fenetre))

            self.area.configure(state="normal")
            message = "Proportion subpartie : pas: "******" fenetre: " + fenetre + " \n"
            message += "Calcule distance..." + "\n"
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            start = timeit.default_timer()

            self.parties = do_sub_parts(self.dicProfils, self.partieGenomeDif,
                                        int(pas), int(fenetre),
                                        self.dico_k_mers, self.kmer, self.v)

            means = do_mean_sub_parts(self.parties)
            ecarts = do_sd_sub_parts(self.parties, means)

            pdfFile = path_dir + '/images/SubParties' + str(self.cont) + '.pdf'
            pp = PdfPages(pdfFile)
            try:
                message = "Position dans le genome avec la max dist: \n"

                for i in self.parties.keys():
                    list_i = self.positions[i]
                    pos = 0
                    pos = int((list_i[-1] - (self.fenetres[-2]) / 2) +
                              self.parties[i].index(max(self.parties[i])) *
                              int(pas))
                    if pos < 0:
                        pos = 0
                    list_i.append(pos)
                    self.positions[i] = list_i
                    listj = self.infoDistances[i]
                    listj.append(
                        [max(self.parties[i]), means[i] + ecarts[i] * 2])
                    self.infoDistances[i] = listj
                    message += i + ' pos: ' + str(pos) + '\n'
                message += '\n'
            except Exception as e:
                print(e)

            try:
                self.plot_for_each_genome(self.parties, pp, self.pas,
                                          self.positions, self.fenetres,
                                          self.cont, False, means, ecarts)
            except Exception as e:
                print("ici 1", e)
            subprocess.Popen([pdfFile], shell=True)

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            try:
                self.partieGenomeDif = get_partieDif_all_genomes(
                    self.sequences, self.positions, self.pas, int(fenetre),
                    self.cont)
                matrice, self.listCles = transfert_study(
                    self.dicProfils, self.partieGenomeDif, self.dico_k_mers,
                    self.kmer, self.v)
                liste_probable_transfert = tranfert_study_result(
                    matrice, self.listCles, self.infoDistances)
                self.relations = file_result(liste_probable_transfert,
                                             "Resultats.txt")
                self.types = []
                for i in self.listCles:
                    self.types.append(i.split(":")[0])
            except Exception as e:
                print("ici 4", e)

            stop = timeit.default_timer()
            time_total = stop - start

            message = ' --> Time calculating sub-parties : ' + str(
                time_total) + '\n\n'

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            self.cb.configure(state="normal")
            self.btn5.configure(state="normal")
            self.btn6.configure(state="normal")
        except Exception as e:
            print("ici 4", e)
            mbox.showwarning("Warning", "Number must be Integer")

    def onClick(self):
        if self.imp.get() == True:
            self.area.configure(state="normal")
            self.area.insert(
                END,
                "Fichier creee et sauvegarde dans le repertoire actuel : Nom fichier : SeqDifs.txt \n\n"
            )
            self.area.configure(state="disabled")
            sequencesDif(self.partieGenomeDif)

    def onCalcule4(self):
        pp = PdfPages(path_dir + '\\images\\Phylogenie.pdf')
        matrice, liste = do_data_matrix(self.dicProfils)
        Z = linkage(matrice, 'ward')
        fig = plt.figure(figsize=(30, 10))
        ax = fig.add_subplot(111)
        ax.set_title('Hierarchical Clustering Dendrogram Genomes')
        ax.set_xlabel('Distance')
        ax.set_ylabel('Genomes')
        dendrogram(Z,
                   leaf_rotation=0.,
                   leaf_font_size=6.,
                   orientation='right',
                   labels=liste)
        fig.show()
        pp.savefig()
        pp.close()
        self.fenetrePlot(fig, "Phylogenie")

    def fenetrePlot(self, fig, title):
        self.plot = tkinter.Toplevel(self)
        self.plot.geometry("700x700+100+100")
        self.plot.wm_title(title)
        self.plot.canvas = FigureCanvasTkAgg(fig, master=self.plot)
        self.plot.canvas.show()
        self.plot.canvas.get_tk_widget().pack()

    def onCalcule5(self):
        reseau2(self.relations, self.listCles, self.types)
        #self.fenetrePlot(graph, title)
        try:
            subprocess.Popen([path_dir + "\\Reseau.pdf"], shell=True)
        except Exception as e:
            print("ici 4", e)

    def onCalcule6(self):
        taille = self.e7.get()
        try:
            self.taille = int(taille)

            key = random.choice(list(self.sequences.keys()))
            genome = self.sequences[key]
            rand = random.randint(0, len(genome) - self.taille)
            randomSeq = genome[rand:rand + self.taille]
            message = 'Genome Aleatoire : \n'
            message += key + '\n'

            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

            profilMorceau = do_profil_genome(randomSeq, self.dico_k_mers,
                                             self.kmer)
            ind = transfert_studyBoutGenome(self.dicProfils, profilMorceau,
                                            self.v)

            message = 'Genome predicte \n'
            message += ind + '\n\n'
            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")

        except Exception as e:
            print("ici 4", e)
            mbox.showwarning("Warning", "Number must be Integer")

    def onCalcule7(self):
        taille = self.e8.get()
        expFois = self.e9.get()
        try:
            self.taille = int(taille)
            self.fois = int(expFois)

            vectResultat, genome = experiment(self.dicProfils, self.sequences,
                                              self.dico_k_mers, self.kmer,
                                              self.fois, self.taille, self.v)
            erreur = errorRate(vectResultat)

            message = 'Genome Aleatoire\n'
            message += genome + '\n'
            message += "Taux d'erreur pour le genome choisi : " + str(
                erreur) + '\n\n'
            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")
        except Exception as e:
            print("ici 4", e)
            mbox.showwarning("Warning", "Number must be Integer")

    def onCalcule8(self):
        taille = self.e10.get()
        expFois = self.e11.get()
        try:
            self.taille = int(taille)
            self.fois = int(expFois)

            erreur, genomes = experiment2(self.dicProfils, self.sequences,
                                          self.dico_k_mers, self.kmer,
                                          self.fois, self.taille, self.v)
            types = []
            for i in genomes:
                types.append(i.split(":")[0])
            fig = plt.figure(figsize=(25, 10))
            width = 0.2
            ax = fig.add_subplot(111)
            ax.set_title("Taux d'erreur predictions")
            ax.set_xlabel('Genomes')
            ax.set_ylabel("Taux d'erreur")
            ind = np.arange(len(genomes))
            plt.bar(ind, erreur, width, color='b')
            plt.xticks(ind + width / 2., types, rotation=45)
            plt.yticks(np.arange(0, 1.5, 0.2))
            fig.show()
            self.fenetrePlot(fig, "Taux d'erreur")

            message = 'Genome aleatoire\n'
            message += 'Calcule pour tous les genomes\n'
            message += 'Prediction des ' + str(
                self.fois) + " bouts aleatoires pour chaque genome \n\n"
            self.area.configure(state="normal")
            self.area.insert(END, message)
            self.area.configure(state="disabled")
        except Exception as e:
            print("ici 4", e)
            mbox.showwarning("Warning", "Number must be Integer")
示例#15
0
    backBtn = tk.Button(window, text="Back Annotate", command=BackAnn)
    backBtn.grid(row=1, column=1, sticky="wens", padx=5, pady=5)

    progress = ttk.Progressbar(window,
                               orient="horizontal",
                               length=100,
                               mode="determinate")
    progress.grid(row=3, column=1, sticky="wens", padx=5)

    if sys.version_info.major < 3:
        from ScrolledText import ScrolledText
    else:
        from tkinter.scrolledtext import ScrolledText

    st = ScrolledText(window, state='disabled', width=60, height=10)
    st.configure(font='TkFixedFont')

    # Make the scroll window resizing...
    tk.Grid.rowconfigure(window, 4, weight=1)
    tk.Grid.columnconfigure(window, 0, weight=1)
    st.grid(row=4, column=0, columnspan=2, sticky="nswe", pady=5, padx=5)

    # Create textLogger
    text_handler = TextHandler(st)

    # Add the handler to logger
    logger = logging.getLogger()
    logger.addHandler(text_handler)
    #set level to print out all. Otherwise this will ignore the debug an info prints.
    logger.root.setLevel(logging.NOTSET)
    st.update()
示例#16
0
    def __init__(self, parent):
        global online
        global callsign
        global callsign_temp
        global command_desc
        global command_raw
        global last_command
        global logger
        global parsed_data
        global tx_power

        global serial_port
        global serial_port_options
        global port_list

        global callsign_entry
        global command_listbox
        global connect_button
        global data_textbox
        global qrcode_label

        # Create main Frame
        tk.Frame.__init__(self, parent)
        self.parent = parent
        self.parent.title("Argo 2 Ground Station")

        # Add UI components

        # Menu Bar
        self.menu_bar = tk.Menu(self)
        self.parent.config(menu=self.menu_bar)

        # File Menu
        self.file_menu = tk.Menu(self.menu_bar)
        self.file_menu.add_command(label="Exit", underline=0, command=on_exit)

        # Receiver Menu
        self.capsule_menu = tk.Menu(self.menu_bar)
        self.capsule_menu.add_command(label="Capsule Status",
                                      underline=0,
                                      command=show_status_window)
        self.capsule_menu.add_separator()
        self.capsule_menu.add_command(label="Send Command",
                                      underline=0,
                                      command=send_command)

        # HabHub Menu
        self.tracking_menu = tk.Menu(self.menu_bar)
        self.tracking_menu.add_command(
            label="Google Maps",
            underline=0,
            command=lambda: webbrowser.open("http://google.com/maps/place/" +
                                            parsed_data[3][1].get(
                                            ) + "," + parsed_data[4][1].get()))
        self.tracking_menu.add_command(
            label="HabHub",
            underline=0,
            command=lambda: webbrowser.open("http://tracker.habhub.org/"))
        self.tracking_menu.add_separator()
        self.tracking_menu.add_checkbutton(label="Online",
                                           underline=0,
                                           offvalue=0,
                                           onvalue=1,
                                           variable=online)

        # Help Menu
        self.help_menu = tk.Menu(self.menu_bar)
        self.help_menu.add_command(label="Help",
                                   underline=0,
                                   command=self.show_help)
        self.help_menu.add_command(label="About",
                                   underline=0,
                                   command=self.show_about)

        # Add Menus to Menu Bar
        self.menu_bar.add_cascade(label="File",
                                  underline=0,
                                  menu=self.file_menu)
        self.menu_bar.add_cascade(label="Capsule",
                                  underline=0,
                                  menu=self.capsule_menu)
        self.menu_bar.add_cascade(label="Tracking",
                                  underline=2,
                                  menu=self.tracking_menu)
        self.menu_bar.add_cascade(label="Help",
                                  underline=0,
                                  menu=self.help_menu)

        # Frames
        left_frame = tk.Frame(self.master)

        # Serial Port Label
        tk.Label(left_frame, text="Port:").grid(row=0, column=0)

        # Serial Port OptionMenu - allow user to choose serial port to connect to
        serial_port = tk.StringVar(self.master)
        port_list = ("", "")
        serial_port_options = tk.OptionMenu(left_frame, serial_port,
                                            *list(port_list))
        serial_port_options.config(width=6)
        serial_port_options.bind('<Button-1>', update_serial_list)
        serial_port_options.grid(row=0, column=1, sticky='w', padx=(10, 0))

        # Serial Port Connect Button
        connect_button = tk.Button(left_frame,
                                   text="Connect",
                                   command=connect_serial)
        connect_button.grid(row=1,
                            column=1,
                            columnspan=2,
                            sticky='w',
                            padx=12,
                            pady=(0, 30))

        # Callsign Label
        tk.Label(left_frame, text="Callsign:").grid(row=2,
                                                    column=0,
                                                    sticky='e')

        # Callsign Entry
        callsign_temp = tk.StringVar(self.master)
        callsign_temp.set("PAN1")
        callsign_entry = tk.Entry(left_frame,
                                  width=12,
                                  textvariable=callsign_temp)
        callsign_entry.grid(row=2, column=1)

        # Callsign Set Button
        callsign = tk.StringVar(self.master)
        callsign.set("PAN1")
        callsign_button = tk.Button(left_frame,
                                    text="Set callsign",
                                    command=set_callsign)
        callsign_button.grid(row=3,
                             column=1,
                             columnspan=2,
                             sticky='w',
                             padx=(7, 0))

        # Online Checkbox - allows user to decide whether to send data to HabHub or not
        self.online_checkbutton = tk.Checkbutton(left_frame,
                                                 text="Offline",
                                                 fg="red",
                                                 variable=online)
        self.online_checkbutton.grid(row=4,
                                     column=1,
                                     columnspan=2,
                                     sticky='w',
                                     padx=(5, 0),
                                     pady=(20, 0))

        # Data Text Box - data recieved from capsule
        data_textbox = ScrolledText(self.master, relief='sunken')
        data_textbox.configure(state=tk.DISABLED,
                               width=64,
                               height=16,
                               wrap=tk.NONE)  # Make data uneditable
        data_textbox.grid(row=0,
                          column=2,
                          columnspan=5,
                          padx=(20, 0),
                          pady=(10, 10))

        #data_scrollbar = tk.Scrollbar(self.master, command=data_textbox.yview)
        #data_scrollbar.grid()

        left_frame.columnconfigure(0, pad=10)
        left_frame.rowconfigure(0, pad=10)
        left_frame.rowconfigure(1, pad=10)
        left_frame.rowconfigure(2, pad=10)
        left_frame.rowconfigure(3, pad=10)
        left_frame.grid(row=0, column=0)

        # Command Listbox
        command_listbox = tk.Listbox(self.master)

        for cmd_num in xrange(0, len(GENERAL_COMMANDS)):
            command_listbox.insert(cmd_num, GENERAL_COMMANDS[cmd_num][0])

        command_listbox.bind('<<ListboxSelect>>', on_select_command)
        command_listbox.grid(row=1, column=0, rowspan=4, sticky='n')

        # Command Entry
        command_raw = tk.StringVar()
        command_entry = tk.Entry(self.master,
                                 width=20,
                                 textvariable=command_raw)
        command_entry.grid(row=1,
                           column=2,
                           padx=(20, 0),
                           pady=(3, 0),
                           sticky='nw')

        # Command Description
        command_desc = tk.StringVar()
        command_desc_label = tk.Label(self.master,
                                      textvariable=command_desc,
                                      justify=tk.LEFT)
        command_desc_label.grid(row=2,
                                column=2,
                                columnspan=4,
                                rowspan=2,
                                padx=(20, 0),
                                sticky='nw')

        # Command TX Power
        tk.Label(self.master, text="TX Power:").grid(row=1,
                                                     column=4,
                                                     sticky='ne',
                                                     pady=(3, 0))

        tx_power = tk.StringVar()
        tx_power.set(20)
        command_power_option = ttk.Combobox(self.master,
                                            width=5,
                                            state='readonly',
                                            textvariable=tx_power)
        command_power_option['values'] = list(reversed(range(5, 23 + 1)))
        command_power_option.grid(row=1, column=5, sticky='ne', pady=(3, 0))

        # Command Buttons (Send Command and Last Command)
        last_command = ""
        last_command_button = tk.Button(
            self.master,
            text="Load Last Command",
            command=lambda: command_raw.set(last_command))
        last_command_button.grid(row=1, column=3, sticky='nw')

        send_command_button = tk.Button(self.master,
                                        text="Send Command",
                                        command=send_command)
        send_command_button.grid(row=1, column=6, sticky='ne')

        # Status Button (show Status Window)
        status_button = tk.Button(self.master,
                                  text="Show Status Window",
                                  command=show_status_window)
        status_button.grid(row=4, column=6, sticky='se')

        # QR Code Label
        tk.Label(self.master, text="Google Maps:").grid(row=2,
                                                        column=6,
                                                        sticky='se',
                                                        pady=(0, 0))
        qrcode = pyqrcode.create('No data yet...')

        # Create XBM image
        qr_xbm = qrcode.xbm(scale=2)

        # Create Tkinter Bitmap
        qr_bmp = tk.BitmapImage(data=qr_xbm)

        # Create label with image
        qrcode_label = tk.Label(self.master, image=qr_bmp)

        # Save reference to change image later
        qrcode_label.image = qr_bmp

        qrcode_label.grid(row=3, column=6, sticky='e')

        # Setup serial check in 100 ms (to repeat forever)
        self.after(100, get_serial_data)
示例#17
0
class LogReader(object):

    def __init__(self, root, **kwargs):
        self.root = root
        self.filenameLog = kwargs.get('filenameLog', None)

        self.ClearDisplay = kwargs.get('ClearDisplay', False)
        ''' By default don't display Filenames and directory '''

        mainstyle = ttk.Style()
#         mainstyle.theme_use(mainstyle.theme_names()[0])
        mainstyle.configure('My.TFrame',
                            background='gray50',
                            foreground='gray97',
                            font="Monospace 12")

        Btnstyle = ttk.Style()
        Btnstyle.configure('My.TButton',
                           background='gray50',
                           foreground='gray97',
                           font="Monospace 12")
        root.title("Log reader v0.1")

        Chkstyle = ttk.Style()
        Chkstyle.configure('My.TCheckbutton',
                           background='gray50',
                           foreground='gray97',
                           font="Monospace 12")

        Chkstyle = ttk.Style()
        Chkstyle.configure('My.TLabel',
                           background='gray50',
                           foreground='gray97',
                           font="Monospace 12")

        root.title("Libretto v0.1")

        self.initParam()

        #======================================================================
        # Main Frame
        #======================================================================
        self.f0 = ttk.Frame(self.root, style='My.TFrame')
        self.f0.pack(expand=True, fill='both')
        LabelUP = ttk.Label(
            self.f0, text="Please select the log file then click on read",
            style='My.TLabel')
        LabelUP.pack(side="top")

        self.fDisp = ttk.Frame(self.f0, style='My.TFrame')
        self.fDisp.pack(expand=True, fill='both', side="right")

        self.fParam = ttk.Frame(self.f0, style='My.TFrame')
        self.fParam.pack(side="left")

        #======================================================================
        # Frame fDisp
        #======================================================================
        # Display stdout
        self.customFont = tkFont.Font(
            family="Helvetica", size=12)
        self.text_area = ScrolledText(
            self.fDisp, font=self.customFont, undo=True, background='gray20', foreground="gray92")
        self.text_area.pack(expand=True, fill='both')
        self.text_area.configure(state='normal')
        self.text_area.yview(END)
        self.text_area.after(0)

        self.text_area.tag_configure("comment",
                                     font="Helvetica 12",
                                     foreground="gray60")
        self.text_area.tag_configure("subsubTitle",
                                     font="Helvetica 12 bold")
        self.text_area.tag_configure("subTitle",
                                     font="Helvetica 14 bold")
        self.text_area.tag_configure("Title",
                                     font="Helvetica 16 bold")
        self.text_area.tag_configure("warn",
                                     font="Helvetica 12 bold",
                                     foreground="red")
        self.text_area.tag_configure("File",
                                     font="Helvetica 10",
                                     foreground="DarkSlateGray1")
        self.text_area.tag_configure("FileOther",
                                     font="Helvetica 10",
                                     foreground="plum")
        self.text_area.tag_configure("Directory",
                                     font="Helvetica 10",
                                     foreground="goldenrod1")
        self.text_area.tag_configure("validate",
                                     font="Helvetica 12 bold",
                                     foreground="OliveDrab1")
        self.text_area.tag_configure("param",
                                     font="Helvetica 12",
                                     foreground="wheat")

        # stdout redirection
        sys.stdout = StdoutRedirector(self.text_area)

        #======================================================================
        # Parameters
        #======================================================================

        # File Selection button
        SelectLogFileBtn = ttk.Button(
            self.fParam, text="Select the log file", style='My.TButton')
        SelectLogFileBtn.grid(row=0, column=0)
        SelectLogFileBtn.configure(command=lambda: self.set_LogFile())
        Label = ttk.Label(self.fParam, text="", style='My.TLabel')
        Label.grid(row=1, column=0)

        # Refresh button
        SelectLogFileBtn = ttk.Button(
            self.fParam, text="Refresh", style='My.TButton')
        SelectLogFileBtn.grid(row=2, column=0)
        SelectLogFileBtn.configure(command=lambda: self.RefreshLog())

        Label = ttk.Label(self.fParam, text="", style='My.TLabel')
        Label.grid(row=9, column=0)

        # Display Files button
        ChkBtnDispFilenames = ttk.Checkbutton(
            self.fParam, text="Display the filenames", style='My.TCheckbutton')
        ChkBtnDispFilenames.grid(row=10, column=0)
        ChkBtnDispFilenames.configure(variable=self.Entry_DispFilenames,
                                      command=lambda: self.set_DispFilenames())

        # Display Comments button
        ChkBtnDispCom = ttk.Checkbutton(
            self.fParam, text="Display the comments", style='My.TCheckbutton')
        ChkBtnDispCom.grid(row=11, column=0)
        ChkBtnDispCom.configure(variable=self.Entry_DispComment,
                                command=lambda: self.set_DispComment())

        # Display Directories button
        ChkBtnDispDir = ttk.Checkbutton(
            self.fParam, text="Display the directories", style='My.TCheckbutton')
        ChkBtnDispDir.grid(row=12, column=0)
        ChkBtnDispDir.configure(variable=self.Entry_DispDir,
                                command=lambda: self.set_DispDir())

        # Display Warnings button
        ChkBtnDispWarn = ttk.Checkbutton(
            self.fParam, text="Display the warnings", style='My.TCheckbutton')
        ChkBtnDispWarn.grid(row=13, column=0)
        ChkBtnDispWarn.configure(variable=self.Entry_DispWarn,
                                 command=lambda: self.set_DispWarn())

        # Display Warnings button
        ChkBtnDispParam = ttk.Checkbutton(
            self.fParam, text="Display the parameters", style='My.TCheckbutton')
        ChkBtnDispParam.grid(row=14, column=0)
        ChkBtnDispParam.configure(variable=self.Entry_DispParam,
                                  command=lambda: self.set_DispParam())

        self.RefreshLog()
        if self.ClearDisplay:
            self.UpdateAllDisp()

    def printExample(self):
        return ["=========================================",
                "= Welcome in the Log Reader        ",
                "=========================================",
                "", "=== This is a big title ! ===",
                "    ~ A little bit different of this sub-Title",
                "        *  And guess what, now a sub-sub-Title ! ",
                "            # right now I am commenting my example",
                "            p_Dodo is a parameter",
                "            BlablablaAudyIsTheBestBlablabla...",
                "            X_something is a most of the time the filename of " +
                " an MRI image or created",
                "            Z_something is the filename of a file which is not an " +
                "mri image (it can be some stats or a matrix)",
                "            D_anotherthing is a directory",
                "    > Well this task seems to be a success",
                "    !! But this is a message you should read"]

    def initParam(self):
        self.logExtension = ("*.txt", "*.log")

        self.LogMessage = None
        self.listHideBal = []
        global DefaultFileNameMRIImage
        global DefaultFileNameMRIMasks
        global DefaultFileNameOther
        global DefaultFileNameMatrix
        global DefaultDirectory
        global DefaultName
        global DefaultWarning
        global DefaultTitle
        global DefaultSubTitle
        global DefaultSubSubTitle
        global DefaultComment
        global DefaultValidate
        global DefaultParameter

        self.DefaultFileNameMRIImage = DefaultFileNameMRIImage
        self.DefaultFileNameMRIMasks = DefaultFileNameMRIMasks
        self.DefaultFileNameOther = DefaultFileNameOther
        self.DefaultFileNameMatrix = DefaultFileNameMatrix
        self.DefaultDirectory = DefaultDirectory
        self.DefaultName = DefaultName
        self.DefaultWarning = DefaultWarning
        self.DefaultTitle = DefaultTitle
        self.DefaultSubTitle = DefaultSubTitle
        self.DefaultSubSubTitle = DefaultSubSubTitle
        self.DefaultComment = DefaultComment
        self.DefaultValidate = DefaultValidate
        self.DefaultParameter = DefaultParameter

        self.DispWarn = True
        self.Entry_DispWarn = IntVar(value=1)
        self.DispParam = True
        self.Entry_DispParam = IntVar(value=1)

        if self.ClearDisplay:
            self.DispFilenames = False
            self.Entry_DispFilenames = IntVar(value=0)
            self.DispComment = False
            self.Entry_DispComment = IntVar(value=0)
            self.DispDir = False
            self.Entry_DispDir = IntVar(value=0)
        else:
            self.DispFilenames = True
            self.Entry_DispFilenames = IntVar(value=1)
            self.DispComment = True
            self.Entry_DispComment = IntVar(value=1)
            self.DispDir = True
            self.Entry_DispDir = IntVar(value=1)

    def DispOrHide(self, DispSomething, listHideBal):
        if DispSomething:
            # update the balise to hide list
            listHideBal = [e for e in self.listHideBal if e not in listHideBal]
        else:
            listHideBal = listHideBal + self.listHideBal
        self.listHideBal = listHideBal
        self.resetDisp()
        self.watchLog(bal=self.listHideBal)

    def set_DispFilenames(self):
        self.DispFilenames = self.Entry_DispFilenames.get()
        listbal0 = [self.DefaultFileNameMRIImage,
                    self.DefaultFileNameMatrix,
                    self.DefaultFileNameMRIMasks,
                    self.DefaultFileNameOther]
        self.DispOrHide(self.DispFilenames, listbal0)

    def set_DispDir(self):
        self.DispDir = self.Entry_DispDir.get()
        listbal0 = [self.DefaultDirectory]
        self.DispOrHide(self.DispDir, listbal0)

    def set_DispComment(self):
        self.DispComment = self.Entry_DispComment.get()
        listbal0 = [self.DefaultComment]
        self.DispOrHide(self.DispComment, listbal0)

    def set_DispWarn(self):
        self.DispWarn = self.Entry_DispWarn.get()
        listbal0 = [self.DefaultWarning]
        self.DispOrHide(self.DispWarn, listbal0)

    def set_DispParam(self):
        self.DispParam = self.Entry_DispParam.get()
        listbal0 = [self.DefaultParameter]
        self.DispOrHide(self.DispParam, listbal0)

    def UpdateAllDisp(self):
        self.set_DispComment()
        self.set_DispDir()
        self.set_DispFilenames()

    def set_LogFile(self):
        self.filenameLog = self.OpenFile(
            self.OriginalDirectory, self.logExtension)
        self.RefreshLog()

    def filterLog(self, str0, bal):
        ''' delete the lines which contain a specific balise '''
        if type(bal) != list:
            if type(bal) != str:
                if not bal:
                    return str0
            else:
                bal = [bal]
        try:
            str1 = DeleteTabulation(str0)
        except:
            str1 = str0

        for e in bal:
            if str1[0:len(e)] == e:
                return None
        return str0

    def loadLog(self):
        ''' load a log '''
        if self.filenameLog:
            with open(self.filenameLog) as f:
                self.LogMessage = f.read().splitlines()
        else:
            self.LogMessage = self.printExample()

    def watchLog(self, bal=None):
        ''' display the log '''
        for line in self.LogMessage:
            l = self.filterLog(line, bal)
            if l:
                print l

    def resetDisp(self):
        ''' '''
        self.text_area.delete('1.0', END)

    def RefreshLog(self):
        self.loadLog()
        self.resetDisp()
        self.watchLog(bal=self.listHideBal)

    def OpenFile(self, initialdir0="", filetype='*.*'):
        if filetype != '*.*':
            filetypes0 = (("Files", filetype),
                          ("All Files", "*.*"))
            name = askopenfilename(initialdir=initialdir0,
                                   filetypes=filetypes0,
                                   title="Choose a file.")
        else:
            name = askopenfilename(initialdir=initialdir0,
                                   title="Choose a file.")
        return name

    def close(self):
        print "close"
        exit()
示例#18
0
                                                  loc=(0, 0))

# ======== User Control Logging Frame ========
frm_log = Frame(mw,
                width=480,
                height=330,
                highlightbackground='gray',
                highlightcolor='black',
                highlightthickness=2)
frm_log.place(x=40, y=430, width=480, height=330)

log_text_area = ScrolledText(
    master=frm_log,
    # wrap=mw.WORD,
    highlightthickness=0)
log_text_area.configure(state='disabled')
log_text_area.pack(fill=BOTH)

log_text_area.bind('<Command-a>', select_all_text)
# log_text_area.bind('<Control-a>', select_all_text)

# ======== Odometry and Measurement Logging Frame ========
frm_pos = Frame(mw,
                width=511,
                height=330,
                highlightbackground='gray',
                highlightcolor='black',
                highlightthickness=2)
frm_pos.place(x=603, y=430, width=511, height=330)

pos_text_area = ScrolledText(
示例#19
0
class Solo_Client:
    def __init__(self, top=None):
        '''This class configures and populates the toplevel window.
           top is the toplevel containing window.'''
        _bgcolor = '#d9d9d9'  # X11 color: 'gray85'
        _fgcolor = '#000000'  # X11 color: 'black'
        _compcolor = '#d9d9d9' # X11 color: 'gray85'
        _ana1color = '#d9d9d9' # X11 color: 'gray85' 
        _ana2color = '#d9d9d9' # X11 color: 'gray85'
        top.iconbitmap(r'icon.ico')
        top.geometry("346x463+655+389")
        top.title("Solo Client")
        top.configure(background="#d9d9d9")
        top.configure(highlightbackground="#d9d9d9")
        top.configure(highlightcolor="black")
        top.resizable(True, True)
        top.bind('<Return>', asend)
        self.menubar = Menu(top,font="TkMenuFont",bg=_bgcolor,fg=_fgcolor)
        top.configure(menu = self.menubar)

        self.Entry1 = Entry(top)
        self.Entry1.place(relx=0.03, rely=0.91, relheight=0.06, relwidth=0.71)
        self.Entry1.configure(background="white")
        self.Entry1.configure(disabledforeground="#a3a3a3")
        self.Entry1.configure(font="TkFixedFont")
        self.Entry1.configure(foreground="#000000")
        self.Entry1.configure(highlightbackground="#d9d9d9")
        self.Entry1.configure(highlightcolor="black")
        self.Entry1.configure(insertbackground="black")
        self.Entry1.configure(selectbackground="#c4c4c4")
        self.Entry1.configure(selectforeground="black")

        self.Button1 = Button(top)
        self.Button1.place(relx=0.78, rely=0.91, height=34, width=67)
        self.Button1.configure(activebackground="#d9d9d9")
        self.Button1.configure(activeforeground="#000000")
        self.Button1.configure(background="#d9d9d9")
        self.Button1.configure(disabledforeground="#a3a3a3")
        self.Button1.configure(foreground="#000000")
        self.Button1.configure(highlightbackground="#d9d9d9")
        self.Button1.configure(highlightcolor="black")
        self.Button1.configure(pady="0")
        self.Button1.configure(text='''Send''')
        self.Button1.configure(command = asend)


        self.Text1 = ScrolledText(top)
        self.Text1.place(relx=0.03, rely=0.02, relheight=0.87, relwidth=0.93)
        self.Text1.configure(background="white")
        self.Text1.configure(font="TkTextFont")
        self.Text1.configure(foreground="black")
        self.Text1.configure(highlightbackground="#d9d9d9")
        self.Text1.configure(highlightcolor="black")
        self.Text1.configure(insertbackground="black")
        self.Text1.configure(insertborderwidth="3")
        self.Text1.configure(selectbackground="#c4c4c4")
        self.Text1.configure(selectforeground="black")
        self.Text1.configure(undo="1")
        self.Text1.configure(width=10)
        self.Text1.configure(wrap=NONE)
示例#20
0
class TextBox:
    def __init__(self):

        self.WIDTH = 600
        self.HEIGHT = 800
        self.FONT = "helvetica"
        self.FONT_SIZE = 12

        # colours specified as RGB fractions
        self.bg_input = [1, 1, 1]
        self.fg_input = [0, 0, 0]

        self.bg_article = [0, 0, 0]
        self.fg_min_article = [0.5, 0.5, 0.5]
        self.fg_max_article = [0.9, 0.9, 0.9]
        self.fg_solution_article = [1, 1, 1]  #[0.3, 0.5, 1.0] #[1, 0.7, 0.4]

        invert = False
        if invert:
            self.bg_input = [1. - v for v in self.bg_input]
            self.fg_input = [1. - v for v in self.fg_input]

            self.bg_article = [1. - v for v in self.bg_article]
            self.fg_min_article = [1. - v for v in self.fg_min_article]
            self.fg_max_article = [1. - v for v in self.fg_max_article]

        self.text = ""  # what is shown in the box
        self.allText = ""  # the text for the entire article
        self.sentences = []  # list of sentences in article
        # dictionary mapping from size to k-hot encoding indicating
        # which sentences are in the summary
        self.solutions = []
        # (not used) how much weight is put on each sentence
        self.weights = []

        self.only_summary = True
        self.summary_size = 1
        self.summary_coherence = 0.0
        self.summary_independence = 0.8

        self.summarizer = Summarizer(parent=self)

        self.root = Tk()

        self.draw(init=True)

        #self.root.mainloop()

    def draw(self, init=False):

        if init:
            # show main article body
            self.tk_article = ScrolledText(self.root)

            # let user paste and enter text
            self.tk_user_input = ScrolledText(self.root)

            self.tk_summary_size_scale = Scale(self.root)
            self.tk_summary_size_scale_label = Label(self.root, text="Length")

            self.tk_summary_coherence_scale = Scale(self.root)
            self.tk_summary_coherence_scale_label = Label(self.root,
                                                          text="Coherence")

            self.tk_summary_independence_scale = Scale(self.root)
            self.tk_summary_independence_scale_label = Label(
                self.root, text="Independence")

            self.tk_toggle_view = Button(self.root,
                                         text="more",
                                         command=self.handleToggleView)
            self.tk_recalculate = Button(self.root,
                                         text="Update",
                                         command=self.handleRecalculate)

            self.root.geometry("%dx%d" % (self.WIDTH, self.HEIGHT))
            self.root.title("QuickReader V4")

            self.tk_article.configure(width=25,
                                      height=6,
                                      bd=0,
                                      highlightthickness=0,
                                      wrap="word",
                                      font=self.FONT)

            self.tk_user_input.configure(width=25,
                                         height=3,
                                         bd=0,
                                         highlightthickness=0,
                                         wrap="word",
                                         font=self.FONT)

            self.tk_summary_size_scale.configure(
                bd=0,
                from_=0,
                to=20,
                orient=HORIZONTAL,
                sliderrelief=FLAT,
                command=lambda event: self.handleSlider(
                    self.tk_summary_size_scale.get()))

            ######
            self.tk_summary_coherence_scale.configure(
                bd=0,
                from_=0,
                to=1,
                orient=HORIZONTAL,
                sliderrelief=FLAT,
                resolution=0.05,
                command=lambda event: self.handleCoherenceSlider(
                    self.tk_summary_coherence_scale.get()))

            self.tk_summary_coherence_scale.set(self.summary_coherence)

            ######
            self.tk_summary_independence_scale.configure(
                bd=0,
                from_=0,
                to=1.5,
                orient=HORIZONTAL,
                sliderrelief=FLAT,
                resolution=0.05,
                command=lambda event: self.handleIndependenceSlider(
                    self.tk_summary_independence_scale.get()))

            self.tk_summary_independence_scale.set(self.summary_independence)

            # set colours
            self.root.configure(background="black")

            self.tk_summary_size_scale.configure(troughcolor="#444444",
                                                 fg="black",
                                                 background="white",
                                                 activebackground="#bbbbbb")

            self.tk_summary_coherence_scale.configure(
                troughcolor="#444444",
                fg="black",
                background="white",
                activebackground="#bbbbbb")

            self.tk_summary_independence_scale.configure(
                troughcolor="#444444",
                fg="black",
                background="white",
                activebackground="#bbbbbb")

            self.tk_article.configure(bg=toHex(self.bg_article),
                                      fg="white",
                                      insertbackground="blue")
            self.tk_article.vbar.configure(bg="white",
                                           width=10,
                                           troughcolor="black")

            self.tk_user_input.configure(bg=toHex(self.bg_input),
                                         fg=toHex(self.fg_input),
                                         insertbackground="blue")
            self.tk_user_input.vbar.configure(bg="white",
                                              width=10,
                                              troughcolor="black")

            self.tk_user_input.focus()
            self.tk_user_input.bind("<KeyRelease-Return>",
                                    (lambda event: self.handleUserInput(
                                        self.tk_user_input.get("0.0", END))))
            self.root.bind("<Configure>", self.resize)

    def setText(self, text, redraw=False):
        self.text = text
        if redraw: self.updateArticleInfo()

    def setSentences(self, sentences, redraw=False):
        self.sentences = sentences
        if redraw: self.updateArticleInfo()

    def setSolutions(self, solutions, redraw=False):
        self.solutions = solutions
        if redraw: self.updateArticleInfo()

    def setWeights(self, weights, redraw=False):
        self.weights = weights
        if redraw: self.updateArticleInfo()

    def handleToggleView(self):

        print("View toggle!")

        self.only_summary = not self.only_summary

        if self.only_summary:
            self.tk_toggle_view.configure(text="more")
        else:
            self.tk_toggle_view.configure(text="less")

        self.updateSummary()

    def handleRecalculate(self):
        print("Update!")

        self.handleUserInput(self.allText)

    def handleSlider(self, value):

        print("Slider:", value)

        self.summary_size = value

        self.updateSummary()

    def handleCoherenceSlider(self, value):

        print("Coherence Slider:", value)

        self.summary_coherence = value

        #self.updateSummary()

    def handleIndependenceSlider(self, value):

        print("Independence Slider:", value)

        self.summary_independence = value

        #self.updateSummary()

    def updateSummary(self):

        l = self.summary_size

        if self.only_summary and l != 0:
            self.setText('\n\n'.join([
                self.sentences[i] for i in range(len(self.sentences))
                if self.solutions[l][i] == 1
            ]))
        else:
            self.setText(self.allText, redraw=False)

        self.updateArticleInfo()

        self.setWeights([0. for _ in self.sentences], redraw=True)

        self.tk_article.yview_moveto(0)  #vbar.set(0, 0) #configure(jump=0)

    def handleUserInput(self, inStr):
        self.tk_user_input.delete("0.0", END)

        if inStr.strip() == "": return

        text = inStr

        text = ''.join([ch for ch in text if ord(ch) < 128])

        self.setText(text, redraw=False)
        self.setSolutions([], redraw=False)
        self.setWeights([], redraw=True)

        text, sentences, solutions = self.summarizer.summarize(
            text,
            coherence_weight=self.summary_coherence,
            independence_weight=self.summary_independence,
            size_weight=1.,
            beam_width=3,
            hard_size_limit=None)

        self.allText = text
        self.sentences = sentences
        self.solutions = solutions

        self.solutions[0] = [1. for _ in sentences]

        # get max length for summary
        max_len = max(solutions.keys())
        set_len = min(max_len, 3)
        self.tk_summary_size_scale.configure(from_=0, to=max_len)
        self.tk_summary_size_scale.set(set_len)
        self.summary_size = set_len

        # text: all the text in one long string
        # sentences: the text split up into a list of sentences
        # solution: dictionary mapping summary size to a one-hot vector over the sentences, indicating
        #   which sentences are included in the summarization

        # the text should be the same, but update it anyways since it needs to contain the
        #  exact same stuff as the sentences

        self.updateSummary()

        #self.updateArticleInfo()

    def resize(self, event=[]):
        LINEH = 20.0

        pixelX = self.root.winfo_width()
        pixelY = self.root.winfo_height()

        bf = 5  # buffer size in pixels

        # update find_icon, wiki_icon, and graph_icon

        # set toggle and recalculate button
        toggleW = 50
        toggleH = 35 * 1
        self.tk_toggle_view.place(x=pixelX - toggleW,
                                  y=0,
                                  width=toggleW,
                                  height=toggleH)

        updateW = 50
        updateH = 35 * 2
        self.tk_recalculate.place(x=pixelX - updateW,
                                  y=toggleH,
                                  width=updateW,
                                  height=updateH)

        buttonH = toggleH + updateH

        labelW = 90

        # set position of size scale
        scaleW = pixelX - updateW - labelW
        scaleH = 35
        self.tk_summary_size_scale.place(x=labelW,
                                         y=0,
                                         width=scaleW,
                                         height=scaleH)

        self.tk_summary_size_scale_label.place(x=0,
                                               y=0,
                                               width=labelW,
                                               height=scaleH)

        # set position of coherence scale
        coherenceW = pixelX - updateW - labelW
        coherenceH = 35
        self.tk_summary_coherence_scale.place(x=labelW,
                                              y=scaleH,
                                              width=scaleW,
                                              height=scaleH)

        self.tk_summary_coherence_scale_label.place(x=0,
                                                    y=scaleH,
                                                    width=labelW,
                                                    height=coherenceH)

        # set position of independence scale
        independenceW = pixelX - updateW - labelW
        independenceH = 35
        self.tk_summary_independence_scale.place(x=labelW,
                                                 y=scaleH + coherenceH,
                                                 width=scaleW,
                                                 height=scaleH)

        self.tk_summary_independence_scale_label.place(x=0,
                                                       y=scaleH + coherenceH,
                                                       width=labelW,
                                                       height=independenceH)

        # update user input
        inputW = pixelX
        inputH = int(3.0 * LINEH)
        self.tk_user_input.place(x=0,
                                 y=pixelY - inputH,
                                 width=inputW,
                                 height=inputH)

        # update article
        articleW = pixelX
        articleH = pixelY - inputH - scaleH - coherenceH - independenceH
        self.tk_article.place(x=0,
                              y=scaleH + coherenceH + independenceH,
                              width=articleW,
                              height=articleH)

    def updateArticleInfo(self):

        self.articleClear()

        self.articleCat(self.text)

        if self.weights != []:
            self.articleColour()

        self.root.update()

    def articleClear(self):
        self.tk_article.delete("1.0", END)
        self.tk_article.update()

        self.root.update()

        return

    def articleCat(self, inStr):

        self.tk_article.insert(END, inStr)

        self.tk_article.yview(END)

    def articleColour(self):
        '''
		solution = self.solutions[self.summary_size]

		allText = self.text #self.tk_article.get('1.0', 'end-1c')

		# make sure weights are normalised
		maxW = max(self.weights)
		minW = min(self.weights)

		weights = self.weights
		if maxW != minW:
			weights = [(v-minW)/(maxW-minW) for v in self.weights]

		for i in range(len(self.sentences)):
			if self.only_summary and solution[i] != 1.: continue

			s = self.sentences[i]
			if len(s.strip()) == 0:

				continue

			tagNameA = ''.join([random.choice('abcdefghijklmnopqrstuvwxyz') for _ in range(10)])
			L_Size = 12 # if solution[i] == 1 else 10
			
			L_Colour = blend(self.fg_min_article, self.fg_max_article, weights[i])
			L_Colour = self.fg_solution_article if solution[i] == 1 else L_Colour

			countVar = StringVar(self.root)
			pos = self.tk_article.search(s, "1.0", stopindex="end", count=countVar)

			self.tk_article.tag_add(tagNameA, pos, "{} + {}c".format(pos, countVar.get()))

			bolding = "normal" #"bold" if self.solution[i] == 1 else "normal" #
			font = (self.FONT, L_Size, bolding)
			self.tk_article.tag_config(tagNameA, foreground=toHex(L_Colour), font=font)#self.FONT+' %s'%(L_Size))

		
		self.root.update()
		'''

        solution = self.solutions[self.summary_size]

        allText = self.text  #self.tk_article.get('1.0', 'end-1c')

        #print("=========")
        for i in range(len(self.sentences)):
            if self.only_summary and solution[i] != 1.: continue

            s = self.sentences[i]
            #if len(s.strip()) == 0:
            #	continue

            #print("- ", s)

            tagNameA = ''.join([
                random.choice('abcdefghijklmnopqrstuvwxyz') for _ in range(10)
            ])
            L_Size = self.FONT_SIZE  # if solution[i] == 1 else 10

            L_Colour = self.fg_solution_article if solution[
                i] == 1 else self.fg_min_article
            #print("\t", L_Colour)

            countVar = StringVar(self.root)
            pos = self.tk_article.search(s,
                                         "1.0",
                                         stopindex="end",
                                         count=countVar)

            self.tk_article.tag_add(tagNameA, pos,
                                    "{} + {}c".format(pos, countVar.get()))

            bolding = "normal"  #"bold" if self.solution[i] == 1 else "normal" #
            font = (self.FONT, L_Size, bolding)
            self.tk_article.tag_config(tagNameA,
                                       foreground=toHex(L_Colour),
                                       font=font)  #self.FONT+' %s'%(L_Size))

        self.root.update()
示例#21
0
    text.configure(state="disabled")
root = Tk()
root.configure(background='teal')
root.title("Syntactic Textual Similarity")
root.resizable(width=False, height=False)
note = Notebook(root)

frame = Frame(root)

queryvar = StringVar()
ql = StringVar()
frame.grid(row=4,column=0,rowspan=12,columnspan=3,pady=20)
text = ScrolledText(frame,wrap="word")
text.grid(row=4)
text.config(font=("Courier", 12))
text.configure(background='black',foreground='green')
directory = StringVar()
filename = StringVar()
sent1 = StringVar()
sent2 = StringVar()
status = StringVar()
modelnum = StringVar()
status.set("")
filename.set("")
Label(root,textvariable=status,bg='teal',foreground='white').grid(row=0,column=1,padx=(20),pady=(20),columnspan=6)

Label(root,text="Directory:",bg='teal',foreground='white').grid(row=2,column=0,padx=(10),pady=(10))
Entry(root,text=directory,bd=2,bg='#cfacaf',width='75').grid(row=2,column=1)

Button(root,command=browseDestDir,text='Browse').grid(row=2,column=2,padx=20)
示例#22
0
class ttkTestApplication(ttk.Frame):
    """
    This class for design a Test Pad
    """
    _adb = None
    _entry = None
    _text = None

    def __init__(self, master=None):
        self._adb = AdbUnit.AdbUnit()
        ttk.Frame.__init__(self, master, class_='ttktestApplication')

        #Set the windows title
        title = 'mobileco '+ __version__+ '-Test'
        self.master.title(title)
        self.create_test()

        #Set the pad position
        master.geometry("+%d+%d" % (300, 200))
        self.grid()

    def create_test(self):
        """
        Build widgets for pad
        """

        #add test button
        cl = 0
        for bn in ['enginner','gps','validation','test','catlog','setting']:
            g_button = ttk.Button(self,name = bn,text = bn)
            g_button.bind('<ButtonRelease-1>', self._test_func)
            g_button.grid(row = 0,column = cl)
            cl +=1
        #add command line
        t = ttk.Label(self,text = "命令:")
        t.grid(row = 1,column = 0)
        self._entry = ttk.Entry(self,width = 25)
        self._entry.grid(row = 1,column = 1,columnspan=cl-1)
        self._entry.bind("<Return>",self.get_cmd)

        self._text = ScrolledText(self,width = cl*10,height = 20)
        self._text.grid(row = 2,column =0,columnspan =cl)
        self.master.bind('<Configure>',self.resize)

        pass

    def get_cmd(self,event):
        """
        Get the Entry text for cmd ,And send to mobile
        """

        str_cmd = event.widget.get()
        self.show_respon("youjin# "+ str_cmd + '\n')
        self._entry.delete('0','end')
        self._entry.update()
        rep = self._adb.adbshellcommand(str_cmd)

        if rep is None:
            rep = "more than one device and emulator"
        self.show_respon("adb#"+ rep )
        self._text.configure(width = 50,height = 30)

    def show_respon(self,str):
        """
        Place the text in a Text widget for show
        """
        self._text.insert('end',str)
        self._text.yview_moveto(1)
        pass

    def _test_func(self,event):
        """
        implement the Fix button widget function
        """
        bn =  event.widget.winfo_name()
        print bn

        cmd = "none"
        if bn == "enginner":
            cmd = "am start -n  com.sprd.engineermode/.EngineerModeActivity"
            pass
        elif bn == "gps":
            cmd = "am start -n com.spreadtrum.sgps/.SgpsActivity"
            pass
        elif bn == "validation":
            cmd = "am start -n com.sprd.validationtools/.ValidationToolsMainActivity"
            pass
        elif bn == "test":
            cmd = "input keyevent 60;am force-stop test.zhlt.g1;am start -n test.zhlt.g1/.TestActivity"
            pass
        elif bn == "catlog":
            cmd = "cat /sdcard/test.log"
            pass
        elif bn == "setting":
            cmd = "am start -n com.android.settings/com.android.settings.Settings"
            pass
        if self._adb.device_exist():
            self.show_respon(cmd)
            rep =  self._adb.adbshellcommand(cmd)
            self.show_respon(rep)
        pass

    def resize(self,event):
        print event.width,' ',event.height

        pass
示例#23
0
class PackageInstallDlg(Frame):
    def __init__(self, master=None, width=0, height=0):
        Frame.__init__(self, master)
        self.createdlg()

    def createdlg(self):
        global nWindowWidth, nWindowHeight

        # window title
        self.master.title('PackageInstall_Tool %s' % (g_StrVersion))
        self.pack(fill=BOTH,
                  expand=1)  # expand = 1 can use fix ,and fill has x AND y AND both,3 parameters,both will expand to x and y ,when expand your GUI
        self.master.iconbitmap(r'Install.ico')
        self.master.protocol('WM_DELETE_WINDOW',
                             self.on_closing)  # define the DELETE_WINDOW ACTION is on_closing activity

        nWindowWidth, nWindowHeight = (self.winfo_screenwidth() * 3 / 4), (self.winfo_screenheight() * 3 / 4)
        nWindowsPosX = (self.winfo_screenwidth() / 2) - (nWindowWidth / 2)
        nWindowsPosY = (self.winfo_screenheight() / 2) - (nWindowHeight / 2)
        self.master.minsize(width=nWindowWidth, height=nWindowHeight)
        self.master.maxsize(width=nWindowWidth, height=nWindowHeight)
        self.master.geometry("+%d+%d" % (nWindowsPosX, nWindowsPosY))
        self.showReportBox()
        self.showExitBtn()
        self.showCheckFrame()
        self.showPackageCheckBox()
        self.showInstallBtn()
        self.showResetBtn()
        self.showStatus()
        self.checkPIP()

        # print self.winfo_screenwidth()
        # print nWindowWidth
        # print nWindowHeight
        # print nWindowsPosX
        # print nWindowsPosY

    def checkPIP(self):
        self.printResult("[I] Check PIP Version....\n")
        self.inputControl("Lock")
        self.changeRunningState("Running")
        threading.Thread(target=installPIP).start()  # Define Function installPIP

    # Result box generate
    def showReportBox(self):
        self.ResultBoxLabel = Label(self, text="Status Log:", anchor='w', foreground="#000080")
        self.ResultBoxLabel['font'] = ("Microsoft JhengHei", 16, "bold")
        self.ResultBoxLabel.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 2 / 80, width=nWindowWidth * 40 / 80,
                                  height=nWindowHeight * 4 / 80)
        self.ResultBox = ScrolledText(self, state=DISABLED, foreground="#000080")  # Load ScrolledText from dll
        self.ResultBox.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 6 / 80, width=nWindowWidth * 39 / 80,
                             height=nWindowHeight * 60 / 80)

    def showExitBtn(self):
        self.ExitBtn = Button(self, text="Exit", command=self.exitButtonDlg, foreground="#000080")
        self.ExitBtn.place(x=nWindowWidth * 68 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 10 / 80, height=nWindowHeight * 8 / 80)
        self.ExitBtn['font'] = ("Microsoft JhengHei", 18, "bold")

    def showResetBtn(self):
        self.retBtn = Button(self, text="Reset", command=self.resetButtonDlg, foreground="#000080")
        self.retBtn.place(x=nWindowWidth * 55 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 10 / 80, height=nWindowHeight * 8 / 80)
        self.retBtn['font'] = ("Microsoft JhengHei", 18, "bold")

    def resetButtonDlg(self):
        if tkMessageBox.askokcancel("Reset", "Do you want to reset and continue to start install !"):
            self.inputControl("UnLock")
            self.changeRunningState("Ready")


    def exitButtonDlg(self):
        if tkMessageBox.askokcancel("Quit", "Do you want to close the window!"):
            self.master.destroy()

    def on_closing(self):
        if tkMessageBox.askokcancel("Quit", "Do you want to close the windows?"):  # tkMessageBox.xxxxx(title, message, options)
            self.master.destroy()

    def showCheckFrame(self):
        self.CheckFrame = LabelFrame(self, text="-.-.- Package List -.-.-", labelanchor="n", foreground="orange")
        self.CheckFrame['font'] = ("Microsoft JhengHei", 16, "bold")
        self.CheckFrame.place(x=nWindowWidth * 2 / 80, y=nWindowHeight * 10 / 80, width=nWindowWidth * 37 / 80,
                              height=nWindowHeight * 65 / 80)

    # Package List Check Box generate
    def showPackageCheckBox(self):
        global CheckVar
        CheckVar = []
        self.ListCheckbox = []
        for PackageShowListIndex in range(len(PackageShowList)):
            self.var = IntVar()
            ##############################
            self.ListCheckbox.append(Checkbutton(self, text=str(
                RefinePackageShowList[PackageShowListIndex][0]) + " [ version: " + str(
                RefinePackageShowList[PackageShowListIndex][1]) + " ] ", variable=self.var, anchor="w"))
            CheckVar.append(self.var)
            self.ListCheckbox[PackageShowListIndex].place(x=nWindowWidth * 3 / 80, y=(nWindowHeight * 14 / 80) + (
                        PackageShowListIndex * nWindowHeight * 9 / 320), width=nWindowWidth * 20 / 80,
                                                          height=nWindowHeight * 2 / 80)
        self.printResult("List check box has Initialed\n")
        printLog("[I][showPackageCheckBox] Checkbox successfully generate")

    # Check and Uncheck and install button
    def showInstallBtn(self):
        self.checkAllBtn = Button(self, text="Select All", command=self.checkAll, foreground="#000080")
        self.checkAllBtn.place(x=nWindowWidth * 4 / 80, y=nWindowHeight * 65 / 80, width=nWindowWidth * 15 / 80,
                               height=nWindowHeight * 8 / 80)
        self.checkAllBtn['font'] = ("Microsoft JhengHei", 18, "bold")

        self.uncheckAllBtn = Button(self, text="Unselect All", command=self.uncheckAll, foreground="#000080")
        self.uncheckAllBtn.place(x=nWindowWidth * 22 / 80, y=nWindowHeight * 65 / 80, width=nWindowWidth * 15 / 80,
                                 height=nWindowHeight * 8 / 80)
        self.uncheckAllBtn['font'] = ("Microsoft JhengHei", 18, "bold")

        self.InstallBtn = Button(self, text="Start Install", command=self.installBtn, foreground="#af0000")
        self.InstallBtn.place(x=nWindowWidth * 40 / 80, y=nWindowHeight * 69 / 80, width=nWindowWidth * 12 / 80,
                              height=nWindowHeight * 8 / 80)
        self.InstallBtn['font'] = ("Microsoft JhengHei", 18, "bold")

    def checkAll(self):
        for i in self.ListCheckbox:
            i.select()

    def uncheckAll(self):
        for i in self.ListCheckbox:
            i.deselect()
        self.changeRunningState("UnSelect")

    def installBtn(self):
        self.changeRunningState("Running")
        self.printResult("Install is running...\n")
        self.inputControl("Lock")
        threading.Thread(target=self.startInstalling).start()

    # Status label text and place
    def showStatus(self):
        self.StatusText = Label(self, text="State: ", foreground="#000080")
        self.StatusText['font'] = ("Microsoft JhengHei", 26, "bold")
        self.StatusText.place(x=nWindowWidth * 2 / 80, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 80,
                              height=nWindowHeight * 8 / 80)

        self.StatusLabel = Label(self, text="Ready......  ", bg="green")
        self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold")
        self.StatusLabel.place(x=nWindowWidth * 10 / 80, y=nWindowHeight * 1 / 80, width=nWindowWidth * 16 / 80,
                               height=nWindowHeight * 8 / 80)

    # Status Label change Function
    def changeRunningState(self, RunningorReady):
        if RunningorReady == "Running":
            self.printResult("Clicked installbtn,Ready Install...\n")
            self.StatusLabel.destroy()
            self.StatusLabel = Label(self, text="Running", bg="red")
            self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40)
            self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold")
        if RunningorReady == "Ready":
            self.printResult("Getting on ready...\n")
            self.StatusLabel.destroy()
            self.StatusLabel = Label(self, text="Ready", bg="green")
            self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40)
            self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold")
        if RunningorReady == "Finish":
            self.printResult("Process has finished...\n")
            self.StatusLabel.destroy()
            self.StatusLabel = Label(self, text="Finish", bg="blue")
            self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40)
            self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold")
        if RunningorReady == "UnSelect":
            self.printResult("You Clicked Unselect command...\n")
            self.StatusLabel.destroy()
            self.StatusLabel = Label(self, text="UnSelect", bg="yellow")
            self.StatusLabel.place(x=nWindowWidth * 5 / 40, y=nWindowHeight * 1 / 80, width=nWindowWidth * 8 / 40)
            self.StatusLabel['font'] = ("Microsoft JhengHei", 26, "bold")

    def inputControl(self, L_state):

        if L_state == "Lock":
            for item in self.ListCheckbox:
                item["state"] = "disabled"
            self.checkAllBtn['state'] = 'disabled'
            self.uncheckAllBtn['state'] = 'disabled'
            self.InstallBtn['state'] = 'disabled'
        if L_state == "UnLock":
            for item in self.ListCheckbox:
                item["state"] = "normal"
            self.checkAllBtn['state'] = 'normal'
            self.uncheckAllBtn['state'] = 'normal'
            self.InstallBtn['state'] = 'normal'

    # Result box status input
    def printResult(self, str_Info):
        self.ResultBox.configure(state='normal')
        self.ResultBox.insert(END, str_Info)
        self.ResultBox.configure(state='disabled')

    def startInstalling(self):
        for i in range(len(PackageShowList)):
            if CheckVar[i].get() == 1:
                PackageInstallDlg.printResult("[I] Searching " + PackageShowList[i] + " requirement...\n")
                for index in range(len(g_PackageRequirementList)):
                    # requirement in show list
                    if g_PackageRequirementList[index][0] in PackageShowList[i]:
                        for innerindex in range(len(g_PackageRequirementList[index][1])):
                            for j in range(len(RequirementList)):
                                if g_PackageRequirementList[index][1][innerindex] in RequirementList[j]:
                                    PackageInstallDlg.printResult("[I] Installing: " + RequirementList[j] + "\n")
                                    installpackage(RequirementList[j])
                PackageInstallDlg.printResult("[I] Installing: " + PackageShowList[i] + "\n")
                installpackage(PackageShowList[i])
                print "end"

        # State labe change
        self.changeRunningState("Finish")
        self.printResult("╔═══════════════╗\n")
        self.printResult("║         F i n i s h !        ║\n")
        self.printResult("╚═══════════════╝\n")
def load_gui():
    global browserwindow
    global text
    global input_file_var
    global output_file_var
    global config_file_var

    global training_percent_entry
    global n_layers_entry
    global epoch_entry
    global dropout_fraction_ru_entry
    global dropout_fraction_rw_entry
    global optimizer_variable
    global err_metric_variable
    global layer_dimension_entry
    global learning_rate_entry
    global momentum_entry
    global check_marked

    browserwindow = Tk()
    browserwindow.wm_title("LSTM tool v0.1.1")
    browserwindow.resizable(width=True, height=True)

    #FRAMES
    parameters_frame = Frame(browserwindow, width=700, height=700)
    output_frame = Frame(browserwindow)
    parameters_frame.pack_propagate(False)
    #output_frame.pack_propagate(False)

    #Packing containing FRAMES
    parameters_frame.pack(side=LEFT)
    output_frame.pack(side=TOP)

    #output text in output_frame
    text = ScrolledText(output_frame,
                        width=100,
                        height=45,
                        insertborderwidth=3,
                        background="black",
                        fg="lightgreen")
    text.configure(state="disabled")
    text.pack()

    utility_button_frame = Frame(output_frame)
    clear_button = Button(utility_button_frame,
                          text="Delete Result Buffer",
                          width="25",
                          command=clear)

    utility_button_frame.pack(side=TOP)
    clear_button.grid(row=0)

    #parameters input frames and Packing
    heading_frame = Frame(parameters_frame)
    heading_label = Label(heading_frame, text="PARAMETER(S) :")
    sub_heading_label = Label(heading_frame,
                              text="All fields marked with (*) are required",
                              fg="red")

    filename_frame = Frame(parameters_frame)
    filename_label = Label(filename_frame, text="Load input filename (*) : ")
    filename_load_button = Button(filename_frame,
                                  text="Browse",
                                  width="10",
                                  command=fetch_training_file)

    input_file_var = StringVar()
    input_file_var.set("")
    file_frame = Frame(parameters_frame)
    file_label = Label(file_frame, textvariable=input_file_var, fg="blue")

    output_filename_frame = Frame(parameters_frame)
    ouput_filename_label = Label(output_filename_frame,
                                 text="Save output filename as (*) : ")
    output_filename_load_button = Button(output_filename_frame,
                                         text="Browse",
                                         width="10",
                                         command=fetch_output_file)

    output_file_var = StringVar()
    output_file_var.set("")
    output_file_frame = Frame(parameters_frame)
    output_file_label = Label(output_file_frame,
                              textvariable=output_file_var,
                              fg="blue")

    sub_parameter_frame = Frame(parameters_frame)

    training_percent = DoubleVar()
    training_percent_label = Label(sub_parameter_frame,
                                   text="Training percentage : ")
    training_percent_entry = Entry(sub_parameter_frame,
                                   width=10,
                                   textvariable=training_percent)
    training_percent.set(0.7)

    layers = IntVar()
    n_layers_label = Label(sub_parameter_frame, text="Number of layers : ")
    n_layers_entry = Entry(sub_parameter_frame, width=10, textvariable=layers)
    layers.set(3)

    epoch = IntVar()
    epoch_label = Label(sub_parameter_frame, text="Epoch : ")
    epoch_entry = Entry(sub_parameter_frame, width=10, textvariable=epoch)
    epoch.set(100)

    output_ru_layers = DoubleVar()
    dropout_fraction_ru_label = Label(
        sub_parameter_frame,
        text="Fraction of R_Units to be dropped [0.0, 1.0) : ")
    dropout_fraction_ru_entry = Entry(sub_parameter_frame,
                                      width=10,
                                      textvariable=output_ru_layers)
    output_ru_layers.set(0.0)

    output_rw_layers = DoubleVar()
    dropout_fraction_rw_label = Label(
        sub_parameter_frame,
        text="Fraction of input units to be dropped [0.0, 1.0) : ")
    dropout_fraction_rw_entry = Entry(sub_parameter_frame,
                                      width=10,
                                      textvariable=output_rw_layers)
    output_rw_layers.set(0.0)

    optimizer_label = Label(sub_parameter_frame, text="Optimizer type :")
    OPTIMIZER_OPTIONS = ["adam", "SGD", "RMSprop", "nadam"]
    optimizer_variable = StringVar(sub_parameter_frame)
    optimizer_variable.set(OPTIMIZER_OPTIONS[0])
    optimizer_dropdown = apply(OptionMenu,
                               (sub_parameter_frame, optimizer_variable) +
                               tuple(OPTIMIZER_OPTIONS))
    optimizer_dropdown.config(width=10)

    err_metric_label = Label(sub_parameter_frame, text="Error Metric :")
    ERROR_METRIC_OPTIONS = ["MSE"]
    err_metric_variable = StringVar(sub_parameter_frame)
    err_metric_variable.set(ERROR_METRIC_OPTIONS[0])
    err_metric_dropdown = apply(OptionMenu,
                                (sub_parameter_frame, err_metric_variable) +
                                tuple(ERROR_METRIC_OPTIONS))
    err_metric_dropdown.config(width=10)

    dimension = StringVar()
    layer_dimension_label = Label(
        sub_parameter_frame,
        text="Layer dimensions [LAYERDIM1,LAYERDIM2,...] : ")
    layer_dimension_entry = Entry(sub_parameter_frame,
                                  width=10,
                                  textvariable=dimension)
    dimension.set("1,4,1")

    learning_rate_label = Label(sub_parameter_frame,
                                text="Learning rate (*) : ")
    learning_rate_entry = Entry(sub_parameter_frame, width=10)

    momentum = DoubleVar()
    momentum_label = Label(sub_parameter_frame, text="Momentum : ")
    momentum_entry = Entry(sub_parameter_frame,
                           width=10,
                           textvariable=momentum)
    momentum.set(0.0)

    append_label = Label(sub_parameter_frame,
                         text="Append run configuration to logfile")
    check_marked = IntVar()
    append_check_button = Checkbutton(sub_parameter_frame,
                                      variable=check_marked,
                                      onvalue=1,
                                      offvalue=0)

    config_cover_frame = Frame(parameters_frame)
    config_cover_frame.configure(pady=8)

    config_filename_frame = Frame(config_cover_frame)
    config_filename_label = Label(config_filename_frame,
                                  text="Use config file : ")
    config_filename_load_button = Button(config_filename_frame,
                                         text="Browse",
                                         width="10",
                                         command=fetch_config_file)
    config_filename_delete_button = Button(config_filename_frame,
                                           text="Delete Config",
                                           width="15",
                                           command=delete_config_file)

    config_file_var = StringVar()
    config_file_var.set("")
    config_file_frame = Frame(config_cover_frame)
    config_file_label = Label(config_file_frame,
                              textvariable=config_file_var,
                              fg="blue")

    save_button_frame = Frame(parameters_frame)
    save_button_label = Label(save_button_frame, text="Save config : ")
    save_button = Button(save_button_frame,
                         text="Save Config",
                         width="15",
                         command=save_as_config_file)

    buttons_frame = Frame(parameters_frame)
    run_button = Button(parameters_frame,
                        text="Run",
                        width="10",
                        command=validate_execute)

    masthead_frame = Frame(parameters_frame)
    masthead_frame.config(pady=40)
    masthead_label = Label(
        masthead_frame,
        text="Developed by Abhishek Jain, Pradyumna Kaushik and Sreedhar Kumar"
    )

    instruction_label = Label(
        parameters_frame,
        text="Upload config JSON file or fill the configurations below",
        fg="red")

    #packing inner frames,entries and buttons
    heading_frame.pack(side=TOP)
    heading_label.pack()
    sub_heading_label.pack()
    instruction_label.pack()

    filename_frame.pack(side=TOP)
    filename_label.grid(row=2)
    filename_load_button.grid(row=2, column=1)

    file_frame.pack(side=TOP)
    file_label.pack(side=LEFT)

    output_filename_frame.pack(side=TOP)
    ouput_filename_label.grid(row=3)
    output_filename_load_button.grid(row=3, column=1)

    output_file_frame.pack(side=TOP)
    output_file_label.pack(side=LEFT)

    config_cover_frame.pack(side=TOP)

    config_filename_frame.pack(side=TOP)
    config_filename_label.grid(row=4)
    config_filename_load_button.grid(row=4, column=1)
    config_filename_delete_button.grid(row=4, column=2)

    config_file_frame.pack(side=TOP)
    config_file_label.pack(side=LEFT)

    sub_parameter_frame.pack()

    training_percent_label.grid(row=6)
    training_percent_entry.grid(row=6, column=1)

    n_layers_label.grid(row=7)
    n_layers_entry.grid(row=7, column=1)

    epoch_label.grid(row=8)
    epoch_entry.grid(row=8, column=1)

    dropout_fraction_ru_label.grid(row=9)
    dropout_fraction_ru_entry.grid(row=9, column=1)

    dropout_fraction_rw_label.grid(row=10)
    dropout_fraction_rw_entry.grid(row=10, column=1)

    optimizer_label.grid(row=11)
    optimizer_dropdown.grid(row=11, column=1)

    err_metric_label.grid(row=12)
    err_metric_dropdown.grid(row=12, column=1)

    layer_dimension_label.grid(row=13)
    layer_dimension_entry.grid(row=13, column=1)

    learning_rate_label.grid(row=14)
    learning_rate_entry.grid(row=14, column=1)

    momentum_label.grid(row=15)
    momentum_entry.grid(row=15, column=1)

    append_label.grid(row=16)
    append_check_button.grid(row=16, column=1)

    save_button_frame.pack(side=TOP)
    save_button_label.pack(side=LEFT)
    save_button.pack(side=RIGHT)

    buttons_frame.pack(side=TOP)
    run_button.pack()
    save_button.pack()

    masthead_frame.pack()
    masthead_label.pack(side=BOTTOM)

    #Run the GUI browserwindow mainloop
    browserwindow.mainloop()