コード例 #1
0
ファイル: graphic.py プロジェクト: vincent770/tripleX
class UserInterface:
    def __init__(self,cbs):
        # self.cbs ={'btn_send':cb_send,'btn_recv':cb_recv}
        self.btn_list = []

        self.master = Tk()
        self.master.title("TripleX - Version:1.0.0")
        self.master.geometry('350x210')

        frm_btn = Frame(self.master,bg='#141414')	# 操作按钮
        frm_msg = Frame(self.master) # 信息展示
        frm_btn_bar = Frame(self.master) # 进度信息条

        frm_btn.pack(expand=True)
        frm_msg.pack(expand=True, fill = X)
        frm_btn_bar.pack(expand=True, fill = X)

        self.btn_send = Button(frm_btn,
                                command=lambda: cbs('COPY'), 
                                text='发送')
        self.btn_send.pack(side=LEFT)  

        self.btn_recv = Button(frm_btn,
                                command=lambda: cbs('PASTE'), 
                                text='接收')
        self.btn_recv.pack(side=RIGHT)  

        self.btn_cancle = Button(frm_btn,
                                command=lambda: cbs('CANCLE'), 
                                text='取消操作')

        self.msgbox = Text(frm_msg, bg='#FAFAFA', height=10)
        self.msgbox.pack()
        self.msgbox.config(state=DISABLED)

        self.lable_text = StringVar()
        self.lable_text.set('状态 ')
        self.btn_lable = Label(frm_btn_bar, textvariable=self.lable_text)
        self.btn_lable.pack(side=LEFT)

        self.pro_bar = Progressbar(frm_btn_bar)
        
    def action_btn_switch(self, condition = True):
        if condition:
            self.btn_send.pack(side=LEFT)  
            self.btn_recv.pack(side=RIGHT)
            self.btn_cancle.forget()
        else:
            self.btn_send.forget()
            self.btn_recv.forget()
            self.btn_cancle.pack(side=LEFT)
             
    def set_bottom_state(self, str):
        if str:
            self.lable_text.set(str)

    def progress_bar_visuality(self, condition):
        '''
        设置底部进度条的可视性
        参数:
        True: 显示
        False: 隐藏
        '''
        if condition:
            self.pro_bar.pack(side=LEFT, fill = X, expand =True)
        else:
            self.pro_bar.forget()

    def set_progress_bar(self, value):
        self.pro_bar["value"]= value
        return value

    def start_mainloop(self):
        self.master.mainloop()

    def msgbox_insert(self, str):
        self.msgbox.config(state=NORMAL)
        self.msgbox.insert(INSERT, str)
        self.msgbox.config(state=DISABLED)
コード例 #2
0
ファイル: test_local.py プロジェクト: rakugoteam/Docs
class Window(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master

        self.master.title("RakugoDocs Test Tool")
        self.master.geometry("400x100")

        self.label = Label(self, text="Click on Button to Start")
        self.label.pack(fill=X, expand=1, side=TOP)

        # Progress bar widget
        self.progress = Progressbar(self,
                                    orient=HORIZONTAL,
                                    length=100,
                                    mode='determinate')
        self.progress.pack(fill=X)
        self.progress.forget()

        self.local_button = Button(self, text="Local", command=self.on_local)
        self.local_button.pack(fill=BOTH, expand=1)

        self.rtd_button = Button(self, text="ReadTheDocs", command=self.on_rtd)
        self.rtd_button.pack(fill=BOTH, expand=1)

        # widget can take all window
        self.pack(fill=BOTH, expand=1)

        # Execute Tkinter
        self.mainloop()

    def update_progress(self, value):
        self.progress['value'] = value * 100

    def preparing_files_ui(self, progress):
        p_text = "Preparing files "
        self.label["text"] = p_text + progress
        self.update_progress(0)
        self.progress.pack(fill=X, expand=1)

    def search_text_update(self, s_text):
        if "..." in self.label["text"]:
            self.label["text"] = s_text
        else:
            self.label["text"] += "."

    def on_local(self):
        self.local_button.forget()
        self.rtd_button.forget()
        self.fix_files("local")

    def on_rtd(self):
        self.local_button.forget()
        self.rtd_button.forget()
        self.fix_files("rtd")

    def fix_files(self, mode):
        s_text = "Search for files "
        self.label["text"] = s_text

        files = []
        for p in paths:
            self.search_text_update(s_text)
            for f in os.listdir(p):
                fp = os.path.join(p, f)
                files.append(fp)
                self.search_text_update(s_text)

        self.preparing_files_ui("1/3")
        i = 0
        l = len(files)
        for file in files:
            if ".md" in file:
                md_file = os.path.join(file)
                md_files.append(md_file)
                i += 1
                self.update_progress(i / l)
                # print(md_file)

        self.preparing_files_ui("2/3")
        i = 0
        l = len(md_files)
        files_to_change = {}
        for file in md_files:
            with open(file, "r") as f:
                lines = []
                for line in f:
                    found = False
                    if mode == "rtd":
                        if ".html#" in line:
                            line = line.replace(".html#", "/#")
                            found = True

                    if mode == "local":
                        if "/#" in line:
                            line = line.replace("/#", ".html#")
                            found = True

                    lines.append(line)
                    if found:
                        files_to_change[file] = lines
                        print(file, len(files_to_change[file]))

            i += 1
            print("added", file)
            self.update_progress(i / l)

        self.preparing_files_ui("3/3")
        i = 0
        l = len(files_to_change)
        for file in files_to_change:
            with open(file, "w") as w:
                w.writelines(files_to_change[file])
            i += 1
            self.update_progress(i / l)

        self.label["text"] = "Finished"
        self.progress.forget()

        if mode == "local":
            self.rtd_button.pack()

        if mode == "rtd":
            self.local_button.pack()