def initUI(self):
        self.parent.title("ANCR-GUI")

        # Create left and right frames and packs them within the parent frame
        self.leftFrame = Frame(self.parent,
                               bg='light blue',
                               height=700,
                               width=700)  #light colored bg to see panel
        self.rightFrame = Frame(self.parent,
                                bg="dark gray",
                                height=700,
                                width=400)  #dark colored bg to see panel

        self.leftFrame.pack(side="left", fill="both", expand=1)
        #self.leftFrame.pack_propagate(0)
        self.rightFrame.pack(side="right", fill="y", expand=0)
        #self.rightFrame.pack_propagate(0)

        # Creates a scrollbar on the right frame and corresponding window which it controls
        self.rightSideCanvas = Canvas(self.rightFrame,
                                      height=700,
                                      width=400,
                                      bg='dark gray',
                                      highlightbackground='dark gray',
                                      highlightthickness=0)
        self.rightCanvasFrame = Frame(self.rightSideCanvas, bg='dark gray')
        self.vsb = Scrollbar(self.rightFrame,
                             orient="vertical",
                             command=self.rightSideCanvas.yview)
        self.rightSideCanvas.configure(yscrollcommand=self.vsb.set)

        self.vsb.pack(side="right", fill="y")
        self.rightSideCanvas.pack(side="left", expand=True)
        self.rightSideCanvas.create_window((0, 0),
                                           window=self.rightCanvasFrame,
                                           anchor="nw")

        self.geoCanvas = CanvasFrame(
            self.leftFrame, self.rightCanvasFrame, self.G,
            self.D)  # handles creation of canvas and miniframes
        self.rightCanvasFrame.bind(
            "<Configure>",
            self.onFrameConfigure)  # enables scrollbar functionality

        self.createTabs()
Esempio n. 2
0
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        # init main frame
        self.container = tk.Frame(self)
        self.container.pack(side="top", fill="both", expand = True)
#         self.container.grid(row = 0, column = 0, sticky = "nswe")
        self.frames = {}
        # init frame add to dict
        frame = CanvasFrame.CanvasFrame(self.container, self)
        self.frames[CanvasFrame] = frame
        frame.grid(row = 0, column = 0, sticky = "nswe")
         # init frame add to dict
        frame = StartFrame.StartFrame(self.container, self)
        self.frames[StartFrame] = frame
        frame.grid(row = 0, column = 0, sticky = "nswe")
         # add close window event handler
        self.protocol("WM_DELETE_WINDOW", self.onClossing)
        # load canvas
        self.show_frame(CanvasFrame)
    def open(self, event=None):
        fileExt = tkFileDialog.askopenfilename()
        if fileExt != '':
            self.filename = fileExt
            s = str(self.filename)
            filename = s.split('/')
            self.parent.title("ANCR-GUI - " + filename[len(filename) - 1])

            self.G = pickle.load(open(str(self.filename)))
            self.G = nx.convert_node_labels_to_integers(self.G, first_label=1)
            for widget in self.leftFrame.winfo_children():
                widget.destroy()
            self.geoCanvas = CanvasFrame(self.leftFrame, self.rightCanvasFrame,
                                         self.G, self.D)
            self.createTabs()

            # redraw nodes
            for nodeNum in self.G.nodes():
                r = 8
                if 'Type' in self.G.node[nodeNum] and self.G.node[nodeNum][
                        'Type'] == 'Compartment':
                    self.geoCanvas.systemsCanvas.create_oval(
                        self.G.node[nodeNum]['x_coord'] - r,
                        self.G.node[nodeNum]['y_coord'] - r,
                        self.G.node[nodeNum]['x_coord'] + r,
                        self.G.node[nodeNum]['y_coord'] + r,
                        fill='blue',
                        tag='node')
                else:
                    self.geoCanvas.systemsCanvas.create_oval(
                        self.G.node[nodeNum]['x_coord'] - r,
                        self.G.node[nodeNum]['y_coord'] - r,
                        self.G.node[nodeNum]['x_coord'] + r,
                        self.G.node[nodeNum]['y_coord'] + r,
                        fill='red',
                        tag='node')
            # redraw edges
            for startNode, endNode in self.G.edges():
                edgeItem = self.geoCanvas.systemsCanvas.create_line(
                    self.G.edge[startNode][endNode]['x1_coord'],
                    self.G.edge[startNode][endNode]['y1_coord'],
                    self.G.edge[startNode][endNode]['x2_coord'],
                    self.G.edge[startNode][endNode]['y2_coord'],
                    tag='edge')
                self.geoCanvas.systemsCanvas.addtag_withtag(
                    str(startNode), edgeItem)
                self.geoCanvas.systemsCanvas.addtag_withtag(
                    str(endNode), edgeItem)
                self.G.edge[startNode][endNode]['edgeID'] = edgeItem

            # reload demands
            self.geoCanvas.manager.systems = self.G.node[1]['systems']
            for key in self.geoCanvas.manager.systems:
                self.geoCanvas.optionList.insert(
                    len(self.geoCanvas.optionList) - 2, key)
                self.geoCanvas.dropdown.destroy()
                self.geoCanvas.dropdown = OptionMenu(
                    self.geoCanvas.toolbar,
                    self.geoCanvas.v,
                    *self.geoCanvas.optionList,
                    command=self.geoCanvas.newOptionMenu)
                self.geoCanvas.dropdown.configure(bg="light blue")
                self.geoCanvas.dropdown.pack(side='left')

            # add to log file
            log = datetime.now().strftime(
                '%Y-%m-%d %H:%M:%S') + ": Opened file: " + str(self.filename)
            self.geoCanvas.appendLog(log)