#! /usr/bin/python # -*- coding: utf-8 -*- """ This file is part of LibreLight. LibreLight is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License. LibreLight is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with LibreLight. If not, see . (c) 2012 micha@uxsrv.de """ import random rnd_id = str(random.randint(1000,9000)) rnd_id += " beta 22.10 " import subprocess import string _gcmd=['git', 'rev-parse', '--short', 'HEAD'] try: r = subprocess.check_output(_gcmd) rnd_id += r.decode('ascii').strip() except Exception as e: rnd_id += " no git" #rnd_id += " ".join(_gcmd) +str(e) try: xtitle = __file__ except: xtitle = "__file__" if "/" in xtitle: xtitle = xtitle.split("/")[-1] import sys sys.stdout.write("\x1b]2;"+str(xtitle)+" "+str(rnd_id)+"\x07") # terminal title import json import time import sys import os import _thread as thread import traceback import tkinter import tkinter as tk from tkinter import font space_font = None import tkinter.simpledialog from idlelib.tooltip import Hovertip _global_short_key = 1 class Dialog(): def __init__(self): self.d = tkinter.simpledialog self._exit = None self._cb = self.dummy_cb def dummy_cb(self,_return): print("dialog.dummy_cb()",self,_return) pass def askstring(self,title="title",prompt="prompt:",initialvalue=""): old = 0 if old: title = "*"+title self._exit = self.askstring_old(title=title,prompt=prompt,initialvalue=initialvalue) self._cb(self._exit) else: title = "#"+title self.askstring_new(title=title,prompt=prompt,initialvalue=initialvalue) def askstring_old(self,title="title",prompt="prompt:",initialvalue=""): print(self.d) print(dir(self.d)) txt = self.d.askstring(title=title,prompt=prompt,initialvalue=initialvalue) return txt def _close(self): print("dialog._close()",self._exit) self.tk.destroy() def close(self): self._close() time.sleep(0.1) input_event_blocker.unlock() #self._cb(None) return self._exit def ok(self): t=self.e_txt.get()#[:-1] self._exit = t self._close() time.sleep(0.1) input_event_blocker.unlock() self._cb(self._exit) def event(self,event,**args): #if _global_short_key == 1 and event.keysym == "Escape": # pass if 1:#else: input_event_blocker.set( self.e , self.e_txt) input_event_blocker.event(event) #,args) if "keysym" in dir(event): if event.keysym == "Return":# or event.keysym == "Tab" or event.keysym == "ISO_Left_Tab": self.ok() if _global_short_key == 0: if event.keysym == "Escape": self.close() def askstring_new(self,title="title",prompt="prompt:",initialvalue=""): self._exit = None #try: # #self.tk.quit() # print(dir(self.tk)) # self.close() #except Exception as e:print(e) #self.tk = tkinter.Tk() self.tk = tkinter.Toplevel() #self.tk.withdraw() # do not draw self.tk.iconify() c = prompt.count("\n") * 15 self.tk.geometry("200x{}".format(120+c)) self.tk.title(""+str(title) )#+" "+":"+str(rnd_id)) self.tk.attributes('-topmost',True) self.tk.protocol("WM_DELETE_WINDOW", self.close) self.tk.resizable(0,0) bg = "#e0e" bg = "#cd0" self.tk["bg"] = bg #self.tk.overrideredirect(1) #self.tk.attributes('-toolwindow', True) #self.tk.state(newstate='iconic') self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0) self.f.pack(side="top") self.elx = tk.Label(self.f,text="") self.elx["bg"] = bg self.elx.pack(side="left") self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0) self.f.pack(side="top") self.el = tk.Label(self.f,text=prompt,anchor="w") self.el["bg"] = bg self.el.pack(side="left") self.f = tk.Frame(self.tk) #, highlightbackground = "lightgrey", highlightthickness = 1, bd=0) self.f.pack(side="top") self.e_txt = tk.StringVar() #self.e = tk.Entry(self.f,state="readonly",textvariable=self.e_txt) self.e = tk.Entry(self.f,textvariable=self.e_txt) #self.e = tk.Button(self.f,textvariable=self.e_txt,relief="sunken",width=20) self.e["bg"] = "#fff" self.e.config(highlightthickness=2) self.e.config(highlightcolor= "red") #self.e_txt.set(str(initialvalue)+"<") self.e_txt.set(str(initialvalue)) #self.e.icursor(999) self.e.selection_range(0, 999)#"end") self.e.bind("",self.event) self.e.bind("