Esempio n. 1
0
    def splash(self):
        """启动屏幕"""
        image_file = os.path.join(
            glv.get_variable("APP_PATH"),
            glv.get_variable("DATA_DIR"),
            "image",
            "splash.jpg",
        )
        canvas = Canvas(self, width=self.w, height=250, bg="white")
        # if os.path.exists(image_file):
        #     img = Image.open(image_file)  # 打开图片
        #     image = ImageTk.PhotoImage(img)  # 用PIL模块的PhotoImage打开
        #     canvas.create_image(self.w / 2, 250 / 2, image=image)
        # else:
        canvas.create_text(self.w / 2,
                           250 / 2,
                           text="Crogram, Inc.",
                           font="time 20",
                           tags="string")

        canvas.pack(fill="both")
        Label(self, text="欢迎使用", bg="green", fg="#fff",
              height=2).pack(fill="both", side="bottom")

        # 设置splash显示的时间,单位是毫秒(milliseconds)
        self.after(4000, self.destroy)
        self.mainloop()
Esempio n. 2
0
    def mouse_event(self,e):
        CREATENODE = "create-node"
        CURSOR = "cursor"
        RELATIONSHIP = "relationship"

        nameTool = get_variable("toolTarget")._nameTool
        nodeList = get_variable("nodeList")
        x = e.x
        y = e.y

        if(nameTool == CREATENODE):
            self.create_node(e)
            return
        
        if(nameTool == CURSOR):
            #check position
            self.previous = (x,y)
            for node in nodeList:
                iX = node._x
                iY = node._y
                if( x >= iX and x <= iX + 30 and y >= iY and y <= iY + 30):
                    self.item = node
                    return
            self.item = None
        
        if(nameTool == RELATIONSHIP):
            #find node start
            for i in nodeList:
                nodeX = i._x
                nodeY = i._y
                diameter = i._diameter
                if(x > nodeX and x < (nodeX + diameter) and y > nodeY and y < (nodeY + diameter)):
                    self._relationship[1] = i
                    return
            return       
Esempio n. 3
0
 def key_event(self,event):
     properties = get_variable("properties")
     toolList = get_variable("toolList")
     if(event.keysym == "Delete"):
         properties.delete_node()
     if(event.char == "\x11"):
         toolList[0].target_tool()
     if(event.char == "\x01"):
         toolList[1].target_tool()
     if(event.char == "\x1a"):
         toolList[2].target_tool()
    def __init__(self, master):
        self.root = master

        self.root.title(glv.get_variable("APP_NAME"))
        self.root.minsize(800, 600)
        set_window_center(self.root, 800, 600)
        self.root.resizable(False, False)
        self.root.update()

        self.var_port = IntVar(value=3333)
        self.var_address = StringVar(value="0.0.0.0")
        self.default_timeout = IntVar(value=-999)
        self.path_remote = StringVar()
        self.path_local = StringVar()
        self.inputFileName = ""

        self.filelist_local = None
        self.filelist_remote = None

        self.toolbar_box = None  # 工具按钮栏
        self.quickbar_box = None  # 快速连接栏
        self.footer_box = None  # 底部状态栏
        self.content_box = None  # 主要内容视图容器
        self.remote_box = None  # 远程服务端资源
        self.local_box = None  # 本地资源

        self.ftp_connect = FTP()
        self.init_view()
Esempio n. 5
0
    def remove_parent(self, parent):
        for item in self._parentNodes:
            if (item == parent):
                item.remove_child(self)

        properties = get_variable("properties")
        properties.target_node(self)
Esempio n. 6
0
    def find_origin_coor(self):
        nodeList = get_variable("nodeList")
        originX = None
        originY = None
        originMaxX = None
        
        first = True
        for node in nodeList:
            if(first == True):
                originX = node._x
                originY = node._y
                originMaxX = node._x
                first = False
                continue
            
            if(originX > node._x):
                originX = node._x
            
            if(originY > node._y):
                originY = node._y

            if(originMaxX < node._x):
                originMaxX = node._x
            
        delt = int((800 - (originMaxX-originX))/2)
        if(delt > 0):
            originX = originX - delt
        originY = originY - 50

        return originX,originY
Esempio n. 7
0
    def init_page(self):
        """加载控件"""

        username = str(global_variable.get_variable("CURRENT_USER_NAME"))
        self.list = dbcontent.content_list_by_username(username)

        head_frame = LabelFrame(self, text="文章操作")
        head_frame.grid(row=0, column=0, columnspan=2, sticky="nswe")
        Label(head_frame, textvariable=self.selected_name).pack()

        btn_info = Button(head_frame, text="详情", command=self.info)
        btn_info.pack(side="left")
        btn_edit = Button(head_frame, text="编辑", command=self.edit)
        btn_edit.pack(side="left")
        btn_delete = Button(head_frame, text="删除", command=self.delete)
        btn_delete.pack(side="left")

        # 表格
        self.tree_view = ttk.Treeview(self, show="headings")

        self.tree_view["columns"] = ("id", "title", "content", "tag")
        # 列设置
        self.tree_view.column("id", width=100)
        # self.tree_view.column("title", width=100)
        # self.tree_view.column("content", width=100)
        # self.tree_view.column("tag", width=100)
        # 显示表头
        self.tree_view.heading("id", text="ID")
        self.tree_view.heading("title", text="标题")
        self.tree_view.heading("content", text="内容")
        self.tree_view.heading("tag", text="标签")

        # 插入数据
        num = 1
        for item in self.list:
            self.tree_view.insert(
                "",
                num,
                text="",
                values=(item["id"], item["title"], item["content"],
                        item["tag"]),
            )
        # 选中行
        self.tree_view.bind("<<TreeviewSelect>>", self.select)

        # 排序
        for col in self.tree_view["columns"]:  # 给所有标题加
            self.tree_view.heading(
                col,
                text=col,
                command=lambda _col=col: treeview_sort_column(
                    self.tree_view, _col, False),
            )

        vbar = ttk.Scrollbar(self,
                             orient="vertical",
                             command=self.tree_view.yview)
        self.tree_view.configure(yscrollcommand=vbar.set)
        self.tree_view.grid(row=1, column=0, sticky="nsew")
        vbar.grid(row=1, column=1, sticky="ns")
Esempio n. 8
0
    def target_tool(self, e=None):
        toolTarget = get_variable('toolTarget')
        if (toolTarget != None):
            toolTarget.config(relief=FLAT)
        self.config(relief=GROOVE)

        set_variable('toolTarget', self)
Esempio n. 9
0
    def show_graph(self,result):
        self._label = Label(self._mainFrame,text="Kết quả",pady=10,font="Arial 18 bold",bg = WHITE)
        self._label.pack()
        self._canvas = Canvas(self._mainFrame,bg=WHITE,bd=0,highlightthickness=0)
        self._canvas.pack(fill=BOTH,expand=True)
        nodeList = get_variable("nodeList")
        originX,originY = self.find_origin_coor()

        for node in nodeList:
            x = node._x - originX
            y = node._y - originY
            diameter = node._diameter
            radius = int(diameter/2)
            nameNode = node._nameNode
            heuristic = node._heuristic
            
            isWay = False
            index = None
            for i,item in enumerate(result):
                if(item == nameNode):
                    isWay = True
                    index = i + 1
            if(isWay):
                self._canvas.create_oval(x,y,x+diameter,y+diameter, width="2",outline="red")
            else:
                self._canvas.create_oval(x,y,x+diameter,y+diameter, width="2")
            
            self._canvas.create_text(x+diameter/2,y+diameter/2,text=nameNode,font="TkDefaultFont 10 bold")
            self._canvas.create_text(x + diameter + 5, y - 5,text = heuristic,fill="blue")

            #draw arrows
            for child in node._childNodes:
                x1 = x + radius
                y1 = y + radius
                x2 = child["Node"]._x + radius - originX
                y2 = child["Node"]._y + radius - originY

                pointStart = ClosestIntersection(x1,y1,radius,(x2,y2),(x1,y1))
                pointEnd = ClosestIntersection(x2,y2,radius,(x1,y1),(x2,y2))

                if(index == None):
                    arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST)
                elif(index >= len(result)):
                    arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST)
                elif(child["Node"]._nameNode == result[index]):
                    arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST,fill="red")
                else:
                    arrow = self._canvas.create_line(pointStart[0],pointStart[1],pointEnd[0],pointEnd[1],arrow = LAST)
                self._canvas.tag_lower(arrow)
                
                #show cost
                cost = child["cost"]
                xCost = int((pointStart[0]+pointEnd[0])/2)
                if(pointStart[0] > pointEnd[0]):
                    xCost -= 10
                else:
                    xCost += 10
                yCost = int((pointStart[1]+pointEnd[1])/2) - 10
                self._canvas.create_text(xCost,yCost,text = cost, font="TkDefaultFont 10 bold")
Esempio n. 10
0
    def init_page(self):
        """加载控件"""
        Label(self, text="用户:").pack()

        Label(self,
              text="欢迎" +
              str(global_variable.get_variable("CURRENT_USER_NAME"))).pack()
        Button(self, text="查看").pack()
Esempio n. 11
0
    def create_node(self,e):
        nodeList = get_variable("nodeList")
        properties = get_variable("properties")

        #check position
        x = e.x
        y = e.y
        for item in nodeList:
            iX = item._x
            iY = item._y
            if( x > iX - 20 and x < iX + 50 and y > iY - 20 and y < iY + 50):
                return
        
        #create new node
        newNode = Node(self._canvas,"",0,x-15,y-15,30)
        nodeList.append(newNode)
        properties.target_node(newNode)
Esempio n. 12
0
    def end_drag(self,event):
        CURSOR = "cursor"
        RELATIONSHIP = "relationship"
        properties = get_variable("properties")
        nameTool = get_variable("toolTarget")._nameTool
        nodeList = get_variable("nodeList")
        x = event.x
        y = event.y

        if(nameTool == CURSOR):
            self.item = None
            return
        
        if(nameTool == RELATIONSHIP):
            #delete line temp
            self._canvas.delete(self._relationship[0])

            if(self._relationship[1] == None):
                return

            #find node end
            for i in nodeList:
                nodeX = i._x
                nodeY = i._y
                diameter = i._diameter
                if(x > nodeX and x < (nodeX + diameter) and y > nodeY and y < (nodeY + diameter)):
                    self._relationship[2] = i  
            if(self._relationship[2] == None or self._relationship[1] == self._relationship[2]):
                return

            #add child
            relParent = self._relationship[1]
            relChild = self._relationship[2]
            flag = True
            for i in relParent._childNodes:
                if (i["Node"] == relChild):
                    flag = False
                    break
            
            if(flag):
                relParent.add_child(relChild,0)
            
            properties.target_node(relParent)
            properties.focus_cost(relChild)
            self._relationship = [None,None,None]
            return
Esempio n. 13
0
    def delete(self):
        nodeList = get_variable("nodeList")
        self._canvas.delete(self._oval)
        self._canvas.delete(self._txtOval)
        self._canvas.delete(self._txtHeuristic)

        for node in nodeList:
            if (node == self):
                nodeList.remove(node)

        while (self._childNodes != []):
            self.remove_child(self._childNodes[0]["Node"])

        while (self._parentNodes != []):
            self.remove_parent(self._parentNodes[0])

        properties = get_variable("properties")
        properties.target_node()
Esempio n. 14
0
 def edit_name(self,e = None):
     self._entName.config(highlightthickness=0)
     nameNode = self.varName.get() 
     
     if(self.target == None):
         return
     
     nodeList = get_variable("nodeList")
     for item in nodeList:
         if(item._nameNode.lower() == nameNode.lower() and item._nameNode.lower() != self.target._nameNode.lower()):
             self._entName.config(highlightthickness=1,highlightcolor="red")
             return
             
     self.target.edit_node(name = nameNode)
Esempio n. 15
0
 def do_add(self):
     title = self.content_title.get()
     content = self.content_textarea.get()
     tag = self.content_tag.get()
     username = str(global_variable.get_variable("CURRENT_USER_NAME"))
     res = dbcontent.content_add(username, title, content, tag)
     if res is True:
         self.content_title.set("")
         self.content_tag.set("")
         self.content_textarea.set("")  # 清空
         #self.content_textarea.update()
         messagebox.showinfo(title="success", message="Added successfully")
     else:
         messagebox.showinfo(title="error", message="add failed")
Esempio n. 16
0
 def do_add(self):
     """添加文章"""
     title = self.content_title.get()
     content = self.content_textarea.get(0.0, "end")
     tag = self.content_tag.get()
     username = str(global_variable.get_variable("CURRENT_USER_NAME"))
     res = dbcontent.content_add(username, title, content, tag)
     if res is True:
         self.content_title.set("")
         self.content_tag.set("")
         self.content_textarea.delete(1.0, "end")  # 清空
         self.content_textarea.update()
         messagebox.showinfo(title="成功", message="添加成功")
     else:
         messagebox.showinfo(title="错误", message="添加失败")
Esempio n. 17
0
    def remove_child(self, child):
        for item in self._childNodes:
            if (item["Node"] == child):
                #remove child
                self._canvas.delete(item["arrow"])
                self._canvas.delete(item["txtCost"])
                self._childNodes.remove(item)
                #remove parent
                for parent in item["Node"]._parentNodes:
                    if (parent == self):
                        item["Node"]._parentNodes.remove(parent)
                break

        properties = get_variable("properties")
        properties.target_node(self)
Esempio n. 18
0
    def create_new_child(self):
        if(self.target == None):
            return

        nodeList = get_variable("nodeList")
        children = self.target._childNodes
        x = None
        y = None
        if(children == []):
            x = self.target._x + 20
            y = self.target._y + 80
        else:
            x = children[-1]["Node"]._x + 50
            y = children[-1]["Node"]._y
        
        newChild = Node(self.target._canvas,"",0,x,y,30)
        nodeList.append(newChild)
        self.target.add_child(newChild,0)
        self.target_node(newChild)
Esempio n. 19
0
    def __initUI(self):
        self.pack(side=LEFT, fill="both", expand=True)

        self._canvas = Canvas(self,bg=WHITE,bd=0, highlightthickness=0)
        self._canvas.pack(fill="both", expand=True, padx=5, pady=5)
        
        self.item = None
        self.previous = (0,0)
        self._canvas.bind('<Button-1>',self.mouse_event)
        self._canvas.bind('<B1-Motion>',self.drag)
        self._canvas.bind('<ButtonRelease-1>',self.end_drag)
        self._parent.bind("<Key>",self.key_event)
        nodeList = get_variable("nodeList")
        
        A = Node(self._canvas,"A",1000,150,20,30)
        C = Node(self._canvas,"C",25,100,100,30)
        D = Node(self._canvas,"D",20,200,100,30)
        E = Node(self._canvas,"E",24,300,100,30)
        F = Node(self._canvas,"F",22,400,20,30)
        H = Node(self._canvas,"H",16,180,200,30)
        I = Node(self._canvas,"I",17,450,200,30)
        K = Node(self._canvas,"K",11,250,250,30)
        B = Node(self._canvas,"B",0,150,250,30)

        A.add_child(C,17)
        A.add_child(D,12)
        A.add_child(E,15)
        A.add_child(F,20)
        
        D.add_child(E,8)
        D.add_child(H,10)

        E.add_child(I,4)
        E.add_child(K,5)

        H.add_child(K,1)
        H.add_child(B,18)

        K.add_child(B,8)
        nodeList = [A,C,D,E,F,H,K,I,B]

        set_variable("nodeList",nodeList)
Esempio n. 20
0
    def drag(self, event):
        CURSOR = "cursor"
        RELATIONSHIP = "relationship"

        nameTool = get_variable("toolTarget")._nameTool
        x = event.x
        y = event.y

        #cursor
        if(nameTool == CURSOR):
            if(self.item == None):
                return

            widget = event.widget
            xc = widget.canvasx(x) - self.previous[0]
            yc = widget.canvasx(y) - self.previous[1]

            self.item.drag_node(xc,yc)

            self.item._x = self.item._x + xc
            self.item._y = self.item._y + yc
            self.previous = (xc + self.previous[0], yc + self.previous[1])
            return
        
        #relationship
        if(nameTool == RELATIONSHIP):
            nodeStart = self._relationship[1]
            if(nodeStart == None):
                return

            radius = nodeStart._diameter / 2
            if(self._relationship[0] != None):
                self._canvas.delete(self._relationship[0])

            Templine = self._canvas.create_line(nodeStart._x + radius,nodeStart._y + radius,x,y,arrow = LAST)
            self._relationship[0] = Templine
Esempio n. 21
0
 def __init__(self):
     self.db_path = os.path.join(glv.get_variable("APP_PATH"),
                                 glv.get_variable("DATA_DIR"),
                                 'database.db')
     self.conn = sqlite3.connect(self.db_path)
     self.cursor = self.conn.cursor()
Esempio n. 22
0
    def init_page(self):
        Label(self, text="User:"******"Welcome" + str(global_variable.get_variable("CURRENT_USER_NAME"))).pack()
        Button(self, text="View").pack()
        
        self.list = dbcontent.user_list()

        head_frame = LabelFrame(self, text="User action")
        head_frame.grid(row=0, column=0, columnspan=2, sticky="nswe")
        Label(head_frame, textvariable=self.selected_name).pack()

        btn_info = Button(head_frame, text="Details", command=self.info)
        btn_info.pack(side="left")
        btn_edit = Button(head_frame, text="edit", command=self.edit)
        btn_edit.pack(side="left")
        btn_reset = Button(head_frame, text="reset Password", command=self.reset)
        btn_reset.pack(side="left")
        btn_delete = Button(head_frame, text="delete", command=self.delete)
        btn_delete.pack(side="left")

     
        self.tree_view = ttk.Treeview(self, show="headings")

        self.tree_view["columns"] = ("id", "name", "username", "password", "op")
        
        # self.tree_view.column("id", width=100) 
        # self.tree_view.column("name", width=100)
        # self.tree_view.column("password", width=100)
        # self.tree_view.column("op", width=100)
        
        self.tree_view.heading("id", text="ID")
        self.tree_view.heading("name", text="Name")
        self.tree_view.heading("username", text="User Name")
        self.tree_view.heading("password", text="Password")
        self.tree_view.heading("op", text="OP")

        num = 1
        for item in self.list:
            self.tree_view.insert(
                "",
                num,
                text="",
                values=(item["id"], item["name"], item["username"], item["password"], "Details"),
            )

        self.tree_view.bind("<<TreeviewSelect>>", self.select)

 
        for col in self.tree_view["columns"]:
            self.tree_view.heading(
                col,
                text=col,
                command=lambda _col=col: treeview_sort_column(
                    self.tree_view, _col, False
                ),
            )

        vbar = ttk.Scrollbar(self, orient="vertical", command=self.tree_view.yview)
        self.tree_view.configure(yscrollcommand=vbar.set)
        self.tree_view.grid(row=1, column=0, sticky="nsew")
        vbar.grid(row=1, column=1, sticky="ns")
        Label(self, text="Bottom action bar").grid(sticky="swe")
Esempio n. 23
0
 def clicked(self):
     properties = get_variable("properties")
     properties.target_node(self)