コード例 #1
0
    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            minX, minY, maxX, maxY = self.bbox[0], self.bbox[1], self.bbox[
                2], self.bbox[3]
            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]

            self.attributeSelected = self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var1.get():
                self.layers.append([
                    self.shapes, self.shp_type, self.attributeSelected,
                    self.datalist
                ])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type,
                                         self.attributeSelected, self.datalist)
            else:

                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([
                    1, self.shapes, self.bbox, self.shp_type, self.root,
                    self.attributeSelected, self.datalist, self.canvas
                ])
                self.Pre_canvas = MainCanvas(self.shapes, self.bbox,
                                             self.shp_type, self.root,
                                             self.attributeSelected,
                                             self.datalist, self.canvas,
                                             self.canvasConfig)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)
コード例 #2
0
    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]
            print self.canvasConfig
            for i in range(len(self.layers)):
                if self.layers[i][0] == 1:
                    temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[
                        i]
                    self.Pre_canvas = MainCanvas(self.shapes, self.bbox,
                                                 self.shp_type, self.root,
                                                 self.attributeSelected,
                                                 self.datalist, self.canvas,
                                                 self.canvasConfig)

            for i in range(len(self.layers)):
                if self.layers[i][0] <> 1:
                    self.shapes, self.shp_type, self.attributeSelected, self.datalist = self.layers[
                        i]
                    self.Pre_canvas.addLayer(self.shapes, self.shp_type,
                                             self.attributeSelected,
                                             self.datalist)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)
コード例 #3
0
ファイル: main_menu.py プロジェクト: sagarjhaa/Simulator_GUI
 def __updateCanvas(self, attributeName):
     """
     Updates the canvas and showing statistical information
     """
     print "update Canvas "+attributeName
     data_list=self.dbfdata[attributeName]
     
     print "attribute values: ", data_list
     try:
         n, min_max, mean, var, skew, kurt = stats.describe(data_list)
         print "============================"
         print "attribute statistics\n"
         print("Number of units: {0:d}".format(n))
         print("Minimum: {0:8.6f} Maximum: {1:8.6f}".format(min_max[0], min_max[1]))
         print("Mean: {0:8.6f}".format(mean))
         print("Standard deviation: {0:8.6f}".format(math.sqrt(var)))
         print("Skew : {0:8.6f}".format(skew))
         print("Kurtosis: {0:8.6f}".format(kurt))
         print "\n============================"
         
         high=max(data_list)
         low=min(data_list)
         dif=float(high-low)
         
         for i in range(len(data_list)):
             #map colors to 0-200, 0-200, 0-200 (avoid pure white for display purpose)
             index=float(data_list[i]-low)/dif*200
             index=str(hex(200-int(index)).split('x')[1])
 
             color="#"+index+index+index    
             self.shapes[i].color=color
     except:
         print "non-numeric attribute"
         
     self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,data_list)
コード例 #4
0
    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]
            for i in range(len(self.layers)):
                if self.layers[i][0] == 1:
                    temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[
                        i]
                    self.Pre_canvas = MainCanvas(self.shapes, self.bbox,
                                                 self.shp_type, self.root,
                                                 self.attributeSelected,
                                                 self.datalist, self.canvas,
                                                 self.canvasConfig)

            try:
                for Node in self.obj_simWidget.Nodes_List:
                    if self.whichButton == "Left":
                        Node.position[0] = Node.position[0] + 100
                    elif self.whichButton == "Right":
                        Node.position[0] = Node.position[0] - 100
                    elif self.whichButton == "Up":
                        Node.position[1] = Node.position[1] - 100
                    elif self.whichButton == "Down":
                        Node.position[1] = Node.position[1] + 100
                    else:
                        pass
                    Node.draw(self.canvas)
            except Exception as e:
                print e
                print "Issue in redrawing in simulator"

        except:
            writeCalculations(self.text,
                              "Please Select the file and then Visualise",
                              True, NB)
コード例 #5
0
    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            self.canvas.delete(ALL)
            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]

            self.attributeSelected = self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            self.layers = []
            self.layers.append([
                1, self.shapes, self.bbox, self.shp_type, self.root,
                self.attributeSelected, self.datalist, self.canvas
            ])
            self.Pre_canvas = MainCanvas(self.shapes, self.bbox, self.shp_type,
                                         self.root, self.attributeSelected,
                                         self.datalist, self.canvas,
                                         self.canvasConfig)
            self.btn_simWidget.configure(state="active")

            # if self.var.get():
            #     self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist])
            #     self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)
            # else:
            #     self.canvas.delete(ALL)
            #     self.layers = []
            #     self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas])
            #     self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)
コード例 #6
0
    def __updateCanvas(self, attributeName):
        """
        Updates the canvas and showing statistical information
        """
        print "update Canvas "+attributeName
        self.datalist=self.dbfdata[attributeName]

        self.root.grid()
        self.root.rowconfigure(0,weight=1)
        self.root.columnconfigure(0,weight=1)

        if self.pop.options:
            self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist)

        else:            
            if (not hasattr(self, 'canvas')) or self.canvas == None:
                self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) 
            else:
                self.canvas.addLayer(self.shapes, self.shp_type, attributeName,self.datalist)
                self.canvas = None
コード例 #7
0
    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]
            print self.canvasConfig
            for i in range(len(self.layers)):
                if self.layers[i][0]==1:
                    temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i]
                    self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

            for i in range(len(self.layers)):
                if self.layers[i][0]<>1:
                    self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i]
                    self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)

        except Exception as e:
            writeCalculations(self.text,e ,True,NB)
コード例 #8
0
    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]

            self.attributeSelected =  self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var.get():
                self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)
            else:
                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas])
                self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

        except:
            writeCalculations(self.text,"Please Select the file and then Visualise" ,True)
コード例 #9
0
    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            minX, minY, maxX, maxY = self.bbox[0],self.bbox[1],self.bbox[2],self.bbox[3]
            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]

            self.attributeSelected =  self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var1.get():
                self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)
            else:

                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas])
                self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

        except Exception as e:
            writeCalculations(self.text,e ,True,NB)
コード例 #10
0
class Network:

    def __init__(self):

        self.root = Tk()
        self.root.state("zoomed")
        self.root.title("Network Simulator")
        self.simulatorChoice()
        self.createMenu()
        self.root.mainloop()

    def createMenu(self):       
        """
        Creates GUI components and register events
        """
        self.menubar = Menu(self.root)
        self.dbfdata = None
        
        filemenu = Menu(self.menubar, tearoff=0)
        filemenu.add_command(label="Open", command=self.__openShpfile)
        filemenu.add_separator()
        filemenu.add_command(label="Exit", command=self.root.quit)
        self.menubar.add_cascade(label="File", menu=filemenu)
        
        self.attibmenu = Menu(self.menubar, tearoff=0)
        self.menubar.add_cascade(label="Attibutes", menu=self.attibmenu,state='disabled')

        if self.pop.options:
            self.menubar.add_cascade(label="Settings", state='disable',command = self.onClick)
        else:
            self.menubar.add_cascade(label="Analysis", state='disable',command = self.textAnalysis)
            
        self.root.config(menu=self.menubar)


    def simulatorChoice(self):
        '''
        Create popup for choice to go to Simulation or Real Twitter Data
        '''
        self.pop = popupWindow(self.root)
        self.root.wait_window(self.pop.top)

        if self.pop.findValue() == "Yes":
            self.pop.options = True
        else:
            self.pop.options = False
        

    def onClick(self):
        self.inputDialog = Settings(self.root)
        self.root.wait_window(self.inputDialog.top)

    def textAnalysis(self):
        '''
        Process the text from the twitter file and analysed using NLTK
        '''

        '''
        Preparing data from sting to text format to used it with functions from NLTK
        '''
        try:
            
            self.datalist=self.dbfdata["text"]
            self.data_list = []
            temp = []
            for i in range(len(self.datalist)):
                temp.append(self.datalist[i])
                self.data_list.append(temp)
                temp = []

            
            tw=[]
            itemp  = len(self.data_list)
            for i in range(itemp):
                temp_list = ",".join(self.data_list[i])
                tw.append(temp_list)

            wlist = []
            for item in tw:
                words = item.split(" ")
                for word in words:
                    wlist.append(word)

            text = nltk.Text(wlist)
            a = analysisWidget(self.root,text)

        except:
            print "Select file with text column for tweets..."
            


    def __openShpfile(self):
        """
        Open a shapefile and read in the contents, pop up the attribute menu 
        with the attributes of the shapefile
        """   
        print "open shape file!"
        directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")])
        print directory
        
        if directory == "":
            return
        
        self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory)
        #read corresponding dbf data
        dbfFile = dbf.DbfLoader(directory[:-3] + "dbf")
        t = dbfFile.table2list()
        varNames = dbfFile.get_field_names()
        variables = {}
        for variable in varNames:
            variables[variable] = [record[varNames.index(variable)] for record in t]
            
        if self.dbfdata!=None:
            self.attibmenu.delete(0, len(self.dbfdata)-1)
            
        #add attributes into menu
        for key in variables.keys():  
            self.__addAttribute(key)
        
        self.dbfdata = variables
        self.menubar.entryconfig(2, state=Tkconstants.NORMAL)
        self.menubar.entryconfig(3, state=Tkconstants.NORMAL)
    
    def __addAttribute(self,attributeName):
        """
        Add an attribute to the menu
        """
        self.attibmenu.add_command(label=attributeName, command=lambda i=attributeName:self.__updateCanvas(i))
        
    def __updateCanvas(self, attributeName):
        """
        Updates the canvas and showing statistical information
        """
        print "update Canvas "+attributeName
        self.datalist=self.dbfdata[attributeName]

        self.root.grid()
        self.root.rowconfigure(0,weight=1)
        self.root.columnconfigure(0,weight=1)

        if self.pop.options:
            self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist)

        else:            
            if (not hasattr(self, 'canvas')) or self.canvas == None:
                self.canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,attributeName,self.datalist) 
            else:
                self.canvas.addLayer(self.shapes, self.shp_type, attributeName,self.datalist)
                self.canvas = None
コード例 #11
0
class Analysis(Application):
    def __init__(self,root,first_frame,canvas,text):
        self.root = root
        self.fr_first = first_frame
        self.canvas = canvas
        self.text = text

        self.x = 10
        self.y = 10
        self.radius = 30
        self.layers = []

        self.fr_Analysis = Frame(self.fr_first,background="green",bd=10)
        self.fr_Analysis.grid(row=1,column=0,columnspan=2,sticky=(W,N,E),padx=5,pady=20)

        self.btn_File = Button(self.fr_Analysis,text="File",command = self.__openShpfile)
        self.btn_File.grid(row=0,column=0,sticky=(W),ipadx=20)

        lb_Attribute = Label(self.fr_Analysis,text="Attributes",background=BACKGROUND)
        lb_Attribute.grid(row=1,column = 0,sticky=(W),pady=20)

        self.var1 = IntVar()
        self.c = Checkbutton(self.fr_Analysis, text="Add Layer", variable=self.var1,background=BACKGROUND)
        self.c.grid(row=3,column=0,sticky=(W),pady = 10)

        self.lb_FileName = Label(self.fr_Analysis,text="No input file!!",anchor=W,background=BACKGROUND)
        self.lb_FileName.grid(row=0,column = 1,sticky=(E),padx=20,ipadx=40)
        self.lb_FileName.configure(width=7)

        self.btn_Draw = Button(self.fr_Analysis,text="Visualize",command = self.__UpdateCanvas)
        self.btn_Draw.grid(row=3,column=1,sticky=(E,W),pady = 10,padx = 20,ipadx=40)
        self.btn_Draw.configure(width=7)

        self.fr_Move = Frame(self.fr_Analysis,background=BACKGROUND)
        self.fr_Move.grid(row=4,column=0,columnspan=4,sticky=(W),padx=5,pady=20)

        self.btn_ZoomIn = Button(self.fr_Move,text="Zoom In",command = self.zoomIn)
        self.btn_ZoomIn.grid(row=4,column=0,columnspan=2,sticky=(W,E),padx=10)

        self.btn_ZoomOut = Button(self.fr_Move,text="Zoom Out",command = self.zoomOut)
        self.btn_ZoomOut.grid(row=4,column=2,columnspan=2,sticky=(W,E),padx=10)

        self.btn_moveRight = Button(self.fr_Move,text="Left",command = self.moveRight)
        self.btn_moveRight.grid(row=5,column=0,sticky=(W),pady=10,padx=10)
        self.btn_moveRight.configure(width=5)

        self.btn_moveLeft = Button(self.fr_Move,text="Right",command = self.moveLeft)
        self.btn_moveLeft.grid(row=5,column=1,sticky=(W),pady=10,padx=10)
        self.btn_moveLeft.configure(width=5)

        self.btn_moveUp = Button(self.fr_Move,text="Up",command = self.moveUp)
        self.btn_moveUp.grid(row=5,column=2,sticky=(E),pady=10,padx=10)
        self.btn_moveUp.configure(width=5)

        self.btn_moveDown = Button(self.fr_Move,text="Down",command = self.moveDown)
        self.btn_moveDown.grid(row=5,column=3,sticky=(E),pady=10,padx=10)
        self.btn_moveDown.configure(width=5)

        self.fr_sub1 = Frame(self.fr_Analysis,background=BACKGROUND)
        self.fr_sub1.grid(row=5,column=0,columnspan=4,sticky=(W),padx=5,pady=20)

        self.btn_txtAnalysis = Button(self.fr_sub1,text="Text Analysis",command = self.__createTxtAnalysis)
        self.btn_txtAnalysis.grid(row=1,column=0,sticky=(E),padx=5,pady=5)

        self.btn_attention = Button(self.fr_sub1,text="Find Attention",command = self.__readfile)
        self.btn_attention.grid(row=2,column=0,sticky=(E),padx=5,pady=5)



        # writeCalculations(self.text,self.__openShpfile.__doc__,True)

    def moveRight(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x - 100
        self.__reDraw()

    def moveLeft(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x + 100
        self.__reDraw()

    def moveUp(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y - 100
        self.__reDraw()

    def moveDown(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y + 100
        self.__reDraw()

    def zoomOut(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth = canvasWidth - 100
        self.__reDraw()

    def zoomIn(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth =canvasWidth +  100
        self.__reDraw()

    def __openShpfile(self):
        """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile"""
        print "open shape file!"
        directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")])

        self.lb_FileName.config(text= directory.split("/")[-1])
        writeCalculations(self.text,"Completed reading file: " + directory.split("/")[-1],False,NB)

        if directory == "":
            return

        self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory)

        #read corresponding dbf data
        dbfFile = dbf.DbfLoader(directory[:-3] + "dbf")

        t = dbfFile.table2list()
        varNames = dbfFile.get_field_names()
        variables = {}
        for variable in varNames:
            #print variable, len(variable)
            variables[variable] = [record[varNames.index(variable)] for record in t]

        self.variable = StringVar(self.root)
        self.variable.set(varNames[0])
        self.lst_Attributes = apply(OptionMenu,(self.fr_Analysis,self.variable)+tuple(varNames))
        self.lst_Attributes.grid(row=1,column=1,sticky=(E,W),pady = 20,padx = 20,ipadx=40)
        self.lst_Attributes.configure(width=7)
        self.dbfdata = variables

    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            minX, minY, maxX, maxY = self.bbox[0],self.bbox[1],self.bbox[2],self.bbox[3]
            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]

            self.attributeSelected =  self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var1.get():
                self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)
            else:

                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas])
                self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

        except Exception as e:
            writeCalculations(self.text,e ,True,NB)

    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]
            print self.canvasConfig
            for i in range(len(self.layers)):
                if self.layers[i][0]==1:
                    temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i]
                    self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

            for i in range(len(self.layers)):
                if self.layers[i][0]<>1:
                    self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i]
                    self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)

        except Exception as e:
            writeCalculations(self.text,e ,True,NB)

    def removeFrame(self):
        for widget in self.fr_Analysis.winfo_children():
            widget.destroy()

        # self.fr_Analysis.destroy()

    def __createTxtAnalysis(self):

        try:

            self.datalist=self.dbfdata["text"]
            self.data_list = []
            temp = []
            for i in range(len(self.datalist)):
                temp.append(self.datalist[i])
                self.data_list.append(temp)
                temp = []

            tw=[]
            itemp  = len(self.data_list)
            for i in range(itemp):
                temp_list = ",".join(self.data_list[i])
                tw.append(temp_list)

            wlist = []
            for item in tw:
                words = item.split(" ")
                for word in words:
                    wlist.append(word)

            text = nltk.Text(wlist)
            self.obj_txtWidget = analysisWidget(self.root,text,self.text,NB)

        except Exception as e:
            writeCalculations(self.text,e,True,NB)

    def __readfile(self):
        directory=tkFileDialog.askopenfilename(filetypes=[("CSV","*.csv")])
        hr.read_file(self.text,directory)
コード例 #12
0
class Analysis(Application):
    def __init__(self, root, first_frame, canvas, text):
        self.root = root
        self.fr_first = first_frame
        self.canvas = canvas
        self.text = text

        self.x = 10
        self.y = 10
        self.radius = 30
        self.layers = []

        self.fr_Analysis = Frame(self.fr_first, background="green", bd=10)
        self.fr_Analysis.grid(row=1,
                              column=0,
                              columnspan=2,
                              sticky=(W, N, E),
                              padx=5,
                              pady=20)

        self.btn_File = Button(self.fr_Analysis,
                               text="File",
                               command=self.__openShpfile)
        self.btn_File.grid(row=0, column=0, sticky=(W), ipadx=20)

        lb_Attribute = Label(self.fr_Analysis,
                             text="Attributes",
                             background=BACKGROUND)
        lb_Attribute.grid(row=1, column=0, sticky=(W), pady=20)

        self.var1 = IntVar()
        self.c = Checkbutton(self.fr_Analysis,
                             text="Add Layer",
                             variable=self.var1,
                             background=BACKGROUND)
        self.c.grid(row=3, column=0, sticky=(W), pady=10)

        self.lb_FileName = Label(self.fr_Analysis,
                                 text="No input file!!",
                                 anchor=W,
                                 background=BACKGROUND)
        self.lb_FileName.grid(row=0, column=1, sticky=(E), padx=20, ipadx=40)
        self.lb_FileName.configure(width=7)

        self.btn_Draw = Button(self.fr_Analysis,
                               text="Visualize",
                               command=self.__UpdateCanvas)
        self.btn_Draw.grid(row=3,
                           column=1,
                           sticky=(E, W),
                           pady=10,
                           padx=20,
                           ipadx=40)
        self.btn_Draw.configure(width=7)

        self.fr_Move = Frame(self.fr_Analysis, background=BACKGROUND)
        self.fr_Move.grid(row=4,
                          column=0,
                          columnspan=4,
                          sticky=(W),
                          padx=5,
                          pady=20)

        self.btn_ZoomIn = Button(self.fr_Move,
                                 text="Zoom In",
                                 command=self.zoomIn)
        self.btn_ZoomIn.grid(row=4,
                             column=0,
                             columnspan=2,
                             sticky=(W, E),
                             padx=10)

        self.btn_ZoomOut = Button(self.fr_Move,
                                  text="Zoom Out",
                                  command=self.zoomOut)
        self.btn_ZoomOut.grid(row=4,
                              column=2,
                              columnspan=2,
                              sticky=(W, E),
                              padx=10)

        self.btn_moveRight = Button(self.fr_Move,
                                    text="Left",
                                    command=self.moveRight)
        self.btn_moveRight.grid(row=5, column=0, sticky=(W), pady=10, padx=10)
        self.btn_moveRight.configure(width=5)

        self.btn_moveLeft = Button(self.fr_Move,
                                   text="Right",
                                   command=self.moveLeft)
        self.btn_moveLeft.grid(row=5, column=1, sticky=(W), pady=10, padx=10)
        self.btn_moveLeft.configure(width=5)

        self.btn_moveUp = Button(self.fr_Move, text="Up", command=self.moveUp)
        self.btn_moveUp.grid(row=5, column=2, sticky=(E), pady=10, padx=10)
        self.btn_moveUp.configure(width=5)

        self.btn_moveDown = Button(self.fr_Move,
                                   text="Down",
                                   command=self.moveDown)
        self.btn_moveDown.grid(row=5, column=3, sticky=(E), pady=10, padx=10)
        self.btn_moveDown.configure(width=5)

        self.fr_sub1 = Frame(self.fr_Analysis, background=BACKGROUND)
        self.fr_sub1.grid(row=5,
                          column=0,
                          columnspan=4,
                          sticky=(W),
                          padx=5,
                          pady=20)

        self.btn_txtAnalysis = Button(self.fr_sub1,
                                      text="Text Analysis",
                                      command=self.__createTxtAnalysis)
        self.btn_txtAnalysis.grid(row=1, column=0, sticky=(E), padx=5, pady=5)

        self.btn_attention = Button(self.fr_sub1,
                                    text="Find Attention",
                                    command=self.__readfile)
        self.btn_attention.grid(row=2, column=0, sticky=(E), padx=5, pady=5)

        # writeCalculations(self.text,self.__openShpfile.__doc__,True)

    def moveRight(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x - 100
        self.__reDraw()

    def moveLeft(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x + 100
        self.__reDraw()

    def moveUp(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y - 100
        self.__reDraw()

    def moveDown(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y + 100
        self.__reDraw()

    def zoomOut(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth = canvasWidth - 100
        self.__reDraw()

    def zoomIn(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth = canvasWidth + 100
        self.__reDraw()

    def __openShpfile(self):
        """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile"""
        print "open shape file!"
        directory = tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE",
                                                             "*.shp")])

        self.lb_FileName.config(text=directory.split("/")[-1])
        writeCalculations(
            self.text, "Completed reading file: " + directory.split("/")[-1],
            False, NB)

        if directory == "":
            return

        self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory)

        #read corresponding dbf data
        dbfFile = dbf.DbfLoader(directory[:-3] + "dbf")

        t = dbfFile.table2list()
        varNames = dbfFile.get_field_names()
        variables = {}
        for variable in varNames:
            #print variable, len(variable)
            variables[variable] = [
                record[varNames.index(variable)] for record in t
            ]

        self.variable = StringVar(self.root)
        self.variable.set(varNames[0])
        self.lst_Attributes = apply(
            OptionMenu, (self.fr_Analysis, self.variable) + tuple(varNames))
        self.lst_Attributes.grid(row=1,
                                 column=1,
                                 sticky=(E, W),
                                 pady=20,
                                 padx=20,
                                 ipadx=40)
        self.lst_Attributes.configure(width=7)
        self.dbfdata = variables

    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            minX, minY, maxX, maxY = self.bbox[0], self.bbox[1], self.bbox[
                2], self.bbox[3]
            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]

            self.attributeSelected = self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var1.get():
                self.layers.append([
                    self.shapes, self.shp_type, self.attributeSelected,
                    self.datalist
                ])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type,
                                         self.attributeSelected, self.datalist)
            else:

                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([
                    1, self.shapes, self.bbox, self.shp_type, self.root,
                    self.attributeSelected, self.datalist, self.canvas
                ])
                self.Pre_canvas = MainCanvas(self.shapes, self.bbox,
                                             self.shp_type, self.root,
                                             self.attributeSelected,
                                             self.datalist, self.canvas,
                                             self.canvasConfig)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)

    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth, canvasHeight, margin_x, margin_y]
            print self.canvasConfig
            for i in range(len(self.layers)):
                if self.layers[i][0] == 1:
                    temp, self.shapes, self.bbox, self.shp_type, self.root, self.attributeSelected, self.datalist, self.canvas = self.layers[
                        i]
                    self.Pre_canvas = MainCanvas(self.shapes, self.bbox,
                                                 self.shp_type, self.root,
                                                 self.attributeSelected,
                                                 self.datalist, self.canvas,
                                                 self.canvasConfig)

            for i in range(len(self.layers)):
                if self.layers[i][0] <> 1:
                    self.shapes, self.shp_type, self.attributeSelected, self.datalist = self.layers[
                        i]
                    self.Pre_canvas.addLayer(self.shapes, self.shp_type,
                                             self.attributeSelected,
                                             self.datalist)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)

    def removeFrame(self):
        for widget in self.fr_Analysis.winfo_children():
            widget.destroy()

        # self.fr_Analysis.destroy()

    def __createTxtAnalysis(self):

        try:

            self.datalist = self.dbfdata["text"]
            self.data_list = []
            temp = []
            for i in range(len(self.datalist)):
                temp.append(self.datalist[i])
                self.data_list.append(temp)
                temp = []

            tw = []
            itemp = len(self.data_list)
            for i in range(itemp):
                temp_list = ",".join(self.data_list[i])
                tw.append(temp_list)

            wlist = []
            for item in tw:
                words = item.split(" ")
                for word in words:
                    wlist.append(word)

            text = nltk.Text(wlist)
            self.obj_txtWidget = analysisWidget(self.root, text, self.text, NB)

        except Exception as e:
            writeCalculations(self.text, e, True, NB)

    def __readfile(self):
        directory = tkFileDialog.askopenfilename(filetypes=[("CSV", "*.csv")])
        hr.read_file(self.text, directory)
コード例 #13
0
class Simulator(Application):

    def __init__(self,root,first_frame,canvas,text):
        self.root = root
        self.fr_first = first_frame
        self.canvas = canvas
        self.text = text

        self.x = 10
        self.y = 10
        self.radius = 30
        self.layers = []

        self.fr_Simulator = Frame(self.fr_first,background=BACKGROUND)
        self.fr_Simulator.grid(row=1,column=0,columnspan=2,sticky=(W),padx=5,pady=20)

        self.btn_File = Button(self.fr_Simulator,text="File",command = self.__openShpfile)
        self.btn_File.grid(row=0,column=0,sticky=(W),ipadx=20)

        lb_Attribute = Label(self.fr_Simulator,text="Attributes",background=BACKGROUND)
        lb_Attribute.grid(row=1,column = 0,sticky=(W),pady=20)

        self.var = IntVar()
        self.c = Checkbutton(self.fr_Simulator, text="Add Layer", variable=self.var,background=BACKGROUND)
        self.c.grid(row=3,column=0,sticky=(W),pady = 10)

        self.lb_FileName = Label(self.fr_Simulator,text="No input file!!",anchor=W,background=BACKGROUND)
        self.lb_FileName.grid(row=0,column = 1,sticky=(E),padx=20,ipadx=40)

        self.btn_Draw = Button(self.fr_Simulator,text="Visulize",command = self.__UpdateCanvas)
        self.btn_Draw.grid(row=3,column=1,sticky=(E,W),pady = 10,padx = 20,ipadx=40)
        self.btn_Draw.configure(width=7)

        self.fr_Move = Frame(self.fr_Simulator)
        self.fr_Move.grid(row=4,column=0,columnspan=4,sticky=(W),padx=5,pady=20)

        self.btn_ZoomIn = Button(self.fr_Move,text="Zoom In",command = self.zoomIn)
        self.btn_ZoomIn.grid(row=4,column=0,columnspan=2,sticky=(W,E),padx=10)

        self.btn_ZoomOut = Button(self.fr_Move,text="Zoom Out",command = self.zoomOut)
        self.btn_ZoomOut.grid(row=4,column=2,columnspan=2,sticky=(W,E),padx=10)

        self.btn_moveRight = Button(self.fr_Move,text="Left",command = self.moveRight)
        self.btn_moveRight.grid(row=5,column=0,sticky=(W),pady=10,padx=10)
        self.btn_moveRight.configure(width=5)

        self.btn_moveLeft = Button(self.fr_Move,text="Right",command = self.moveLeft)
        self.btn_moveLeft.grid(row=5,column=1,sticky=(W),pady=10,padx=10)
        self.btn_moveLeft.configure(width=5)

        self.btn_moveUp = Button(self.fr_Move,text="Up",command = self.moveUp)
        self.btn_moveUp.grid(row=5,column=2,sticky=(E),pady=10,padx=10)
        self.btn_moveUp.configure(width=5)

        self.btn_moveDown = Button(self.fr_Move,text="Down",command = self.moveDown)
        self.btn_moveDown.grid(row=5,column=3,sticky=(E),pady=10,padx=10)
        self.btn_moveDown.configure(width=5)

        # writeCalculations(self.text,self.__openShpfile.__doc__,True)

    def moveRight(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x - 100
        self.__reDraw()

    def moveLeft(self):
        self.canvas.delete(ALL)
        global margin_x
        margin_x = margin_x + 100
        self.__reDraw()

    def moveUp(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y - 100
        self.__reDraw()

    def moveDown(self):
        self.canvas.delete(ALL)
        global margin_y
        margin_y = margin_y + 100
        self.__reDraw()

    def zoomOut(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth = canvasWidth - 100
        self.__reDraw()

    def zoomIn(self):
        self.canvas.delete(ALL)
        global canvasWidth
        canvasWidth =canvasWidth +  100
        self.__reDraw()

    def __openShpfile(self):
        """Open a shapefile and read in the contents, pop up the attribute menu with the attributes of the shapefile"""
        print "open shape file!"
        directory=tkFileDialog.askopenfilename(filetypes=[("SHAPE_FILE","*.shp")])

        self.lb_FileName.config(text= directory.split("/")[-1])
        writeCalculations(self.text,"Completed reading file: " + directory.split("/")[-1],False)

        if directory == "":
            return

        self.shapes, self.shp_type, self.bbox = shp_reader.read_shp(directory)

        #read corresponding dbf data
        dbfFile = dbf.DbfLoader(directory[:-3] + "dbf")

        t = dbfFile.table2list()
        varNames = dbfFile.get_field_names()
        variables = {}
        for variable in varNames:
            #print variable, len(variable)
            variables[variable] = [record[varNames.index(variable)] for record in t]

        self.variable = StringVar(self.root)
        self.variable.set(varNames[0])
        self.lst_Attributes = apply(OptionMenu,(self.fr_Simulator,self.variable)+tuple(varNames))
        self.lst_Attributes.grid(row=1,column=1,sticky=(E,W),pady = 20,padx = 20,ipadx=40)
        self.lst_Attributes.configure(width=7)
        self.dbfdata = variables


    def __UpdateCanvas(self):
        '''This function draw the data on the canvas '''

        try:
            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]

            self.attributeSelected =  self.variable.get()
            self.datalist = self.dbfdata[self.attributeSelected]

            if self.var.get():
                self.layers.append([self.shapes,self.shp_type,self.attributeSelected,self.datalist])
                self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)
            else:
                self.canvas.delete(ALL)
                self.layers = []
                self.layers.append([1,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas])
                self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

        except:
            writeCalculations(self.text,"Please Select the file and then Visualise" ,True)


    def __reDraw(self):
        try:

            self.canvasConfig = [canvasWidth,canvasHeight,margin_x,margin_y]
            print self.canvasConfig
            for i in range(len(self.layers)):
                if self.layers[i][0]==1:
                    temp,self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas = self.layers[i]
                    self.Pre_canvas=MainCanvas(self.shapes,self.bbox,self.shp_type,self.root,self.attributeSelected,self.datalist,self.canvas,self.canvasConfig)

            for i in range(len(self.layers)):
                if self.layers[i][0]<>1:
                    self.shapes,self.shp_type,self.attributeSelected,self.datalist = self.layers[i]
                    self.Pre_canvas.addLayer(self.shapes, self.shp_type, self.attributeSelected,self.datalist)

        except:
            writeCalculations(self.text,"Please Select the file and then Visualise" ,True)