def run(self): while self.running: while self.last_key_stroke == None: if not self.running: break if not self.running: break # time.sleep(self.time_interval) time_delta = 0 while time_delta <= self.time_interval: time_delta = time.time() - self.last_key_stroke if str(ini_worker.get_param_from_ini(self.configFile, self.section, self.param)) != str(self.value): ini_worker.write_to_section(self.configFile, self.section, self.param, self.value) self.last_key_stroke = None print '--|X|-- key guard unplugged'
def run(self): while self.running: while self.last_key_stroke == None: if not self.running: break if not self.running: break # time.sleep(self.time_interval) time_delta = 0 while time_delta <= self.time_interval: time_delta = time.time() - self.last_key_stroke if str( ini_worker.get_param_from_ini( self.configFile, self.section, self.param)) != str( self.value): ini_worker.write_to_section(self.configFile, self.section, self.param, self.value) self.last_key_stroke = None print '--|X|-- key guard unplugged'
def __init__(self, pluginPath, corePath, configFile): self.pluginPath = pluginPath self.corePath = corePath self.workingDir = sys.path[0] self.configFile = self.corePath + '\\' + configFile self.PGconfigFile = self.workingDir + '\\' + 'PG_config.ini' self.PGconfigFileCore = self.corePath + '\\' + 'PG_config.ini' self.PG_expanded = False self.current_y_pxpos_elem = 0 self.param_dict = {} self.section_EC_stat = {} self.KST = key_stroke_timer.key_stroke_timer(self.configFile) self.MIN_SIZE_W = 20 self.black_list = ['collapse', 'create', 'hideSection', 'show', 'filterStrategy', 'offsetType'] self.GOC = guard.guard_of_changes(self) # init observer thread self.GOC.start() # start observer thread wx.Dialog.__init__(self, None, title='MW Parameter guard', size=UI.WMAIN['size'], style=wx.SYSTEM_MENU | # wx.CAPTION | # ~wx.CLOSE_BOX | wx.TAB_TRAVERSAL | wx.STAY_ON_TOP | wx.RESIZE_BORDER) # | wx.TRANSPARENT_WINDOW) self.SetMinSize((1, 1)) PG_XY = ini_worker.get_param_from_ini(self.PGconfigFileCore, 'UISETTINGS', 'lastWindowPosition') PG_XY = PG_XY.strip()[1:-1].split(',') PG_SIZE = ini_worker.get_param_from_ini(self.PGconfigFileCore, 'UISETTINGS', 'lastWindowSize') PG_SIZE = PG_SIZE.strip()[1:-1].split(',') self.MAIN_DISPLAY_SIZE = get_monitors() if len(self.MAIN_DISPLAY_SIZE) == 1: self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[0] else: self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[1] self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[0] #self.MoveXY(int(PG_XY[0]), int(PG_XY[1])) self.MoveXY(int(self.DISPLAY_SIZE.width)-10, 0) #self.SetSizeWH(int(PG_SIZE[0]), int(PG_SIZE[1])) self.SetSizeWH(int(PG_SIZE[0]), self.DISPLAY_SIZE.height) self.Bind(wx.EVT_SIZE, self.OnSize, self) # self.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) # self.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) # self.Bind(wx.EVT_LEFT_DOWN, self.onLMouseDown) self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouseEvents) atable = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_ESCAPE, wx.ID_EXIT)]) self.SetAcceleratorTable(atable) wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit) self.SetBackgroundColour(wx.Colour(UI.WCOLOR['BG'][0], UI.WCOLOR['BG'][1], UI.WCOLOR['BG'][2])) self.SetTransparent(220) self.Show() #fn = self.corePath + '\\bin\\images\\paramGuard.ico' #self.icon = wx.Icon(fn, wx.BITMAP_TYPE_ICO) #self.SetIcon(self.icon) self.section_list = ini_worker.get_sections_list_from_ini(self.configFile) # list param_indentation = 10 # whitespace for section in self.section_list: self.section_EC_stat.update( {section: ini_worker.get_param_from_ini(self.configFile, section, 'collapse')}) section_params = ini_worker.get_section_from_ini(self.configFile, section) for param, value in section_params.iteritems(): if param == 'hideSection': hideSection = value if not hideSection: self.param_dict[section] = {} font = wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD) headline = wx.StaticText(self, label=section, pos=(UI.THEADERSTART['pos'][0], UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem)) headline.SetForegroundColour(UI.TCOLOR['FG']) # set text color headline.SetFont(font) headline.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #headline.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) button = wx.Button(self, name=section, label="", pos=(UI.BEXPAND['pos'][0], self.current_y_pxpos_elem + 11), size=UI.BEXPAND['size']) button.Bind(wx.EVT_BUTTON, self.expandCollapse) button.SetBackgroundColour(UI.BCOLOR['BG']) # set color button.SetToolTipString('Click to expand/collapse section') button.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #button.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) self.current_y_pxpos_elem += 20 # params in sections (edit boxes) font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL) ui_elem_handler_dict = {} for param, value in section_params.iteritems(): if type(value) == str: splitted_value = value.split(';') if len(splitted_value) > 1: if splitted_value[1].strip() == 'X': self.black_list.append(param) if param not in self.black_list: text = wx.StaticText(self, label=param, pos=(UI.THEADERSTART['pos'][0] + param_indentation, UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem)) text.SetForegroundColour(UI.PARAMCOLOR['FG']) # set text color text.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #text.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) editbox = (wx.TextCtrl(self, name=section + ' - ' + param, value=str(value), pos=(UI.EBOX['pos'][0], UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem), size=UI.EBOX['size'], style=wx.TE_PROCESS_ENTER)) editbox.SetForegroundColour(UI.ECOLOR2['FG']) # set color editbox.SetBackgroundColour(UI.ECOLOR2['BG']) # set color editbox.Bind(wx.EVT_TEXT, self.EvtText) editbox.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #editbox.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) elem_dict = {param: [{'ebox': [editbox, value]}, {'headline': headline}, {'text': text}, {'button': button}]} ui_elem_handler_dict.update(elem_dict) self.current_y_pxpos_elem += 20 self.param_dict[section].update(ui_elem_handler_dict) self.expandCollapse(None, refresh=True) self.refresh_UI() self.KST.start()
def __init__(self, pluginPath, corePath, configFile): self.pluginPath = pluginPath self.corePath = corePath self.workingDir = sys.path[0] self.configFile = self.corePath + '\\' + configFile self.PGconfigFile = self.workingDir + '\\' + 'PG_config.ini' self.PGconfigFileCore = self.corePath + '\\' + 'PG_config.ini' self.PG_expanded = False self.current_y_pxpos_elem = 0 self.param_dict = {} self.section_EC_stat = {} self.KST = key_stroke_timer.key_stroke_timer(self.configFile) self.MIN_SIZE_W = 20 self.black_list = [ 'collapse', 'create', 'hideSection', 'show', 'filterStrategy', 'offsetType' ] self.GOC = guard.guard_of_changes(self) # init observer thread self.GOC.start() # start observer thread wx.Dialog.__init__( self, None, title='MW Parameter guard', size=UI.WMAIN['size'], style=wx.SYSTEM_MENU | # wx.CAPTION | # ~wx.CLOSE_BOX | wx.TAB_TRAVERSAL | wx.STAY_ON_TOP | wx.RESIZE_BORDER) # | wx.TRANSPARENT_WINDOW) self.SetMinSize((1, 1)) PG_XY = ini_worker.get_param_from_ini(self.PGconfigFileCore, 'UISETTINGS', 'lastWindowPosition') PG_XY = PG_XY.strip()[1:-1].split(',') PG_SIZE = ini_worker.get_param_from_ini(self.PGconfigFileCore, 'UISETTINGS', 'lastWindowSize') PG_SIZE = PG_SIZE.strip()[1:-1].split(',') self.MAIN_DISPLAY_SIZE = get_monitors() if len(self.MAIN_DISPLAY_SIZE) == 1: self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[0] else: self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[1] self.DISPLAY_SIZE = self.MAIN_DISPLAY_SIZE[0] #self.MoveXY(int(PG_XY[0]), int(PG_XY[1])) self.MoveXY(int(self.DISPLAY_SIZE.width) - 10, 0) #self.SetSizeWH(int(PG_SIZE[0]), int(PG_SIZE[1])) self.SetSizeWH(int(PG_SIZE[0]), self.DISPLAY_SIZE.height) self.Bind(wx.EVT_SIZE, self.OnSize, self) # self.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) # self.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) # self.Bind(wx.EVT_LEFT_DOWN, self.onLMouseDown) self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouseEvents) atable = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_ESCAPE, wx.ID_EXIT)]) self.SetAcceleratorTable(atable) wx.EVT_MENU(self, wx.ID_EXIT, self.OnExit) self.SetBackgroundColour( wx.Colour(UI.WCOLOR['BG'][0], UI.WCOLOR['BG'][1], UI.WCOLOR['BG'][2])) self.SetTransparent(220) self.Show() #fn = self.corePath + '\\bin\\images\\paramGuard.ico' #self.icon = wx.Icon(fn, wx.BITMAP_TYPE_ICO) #self.SetIcon(self.icon) self.section_list = ini_worker.get_sections_list_from_ini( self.configFile) # list param_indentation = 10 # whitespace for section in self.section_list: self.section_EC_stat.update({ section: ini_worker.get_param_from_ini(self.configFile, section, 'collapse') }) section_params = ini_worker.get_section_from_ini( self.configFile, section) for param, value in section_params.iteritems(): if param == 'hideSection': hideSection = value if not hideSection: self.param_dict[section] = {} font = wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD) headline = wx.StaticText(self, label=section, pos=(UI.THEADERSTART['pos'][0], UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem)) headline.SetForegroundColour(UI.TCOLOR['FG']) # set text color headline.SetFont(font) headline.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #headline.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) button = wx.Button(self, name=section, label="", pos=(UI.BEXPAND['pos'][0], self.current_y_pxpos_elem + 11), size=UI.BEXPAND['size']) button.Bind(wx.EVT_BUTTON, self.expandCollapse) button.SetBackgroundColour(UI.BCOLOR['BG']) # set color button.SetToolTipString('Click to expand/collapse section') button.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #button.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) self.current_y_pxpos_elem += 20 # params in sections (edit boxes) font = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.NORMAL) ui_elem_handler_dict = {} for param, value in section_params.iteritems(): if type(value) == str: splitted_value = value.split(';') if len(splitted_value) > 1: if splitted_value[1].strip() == 'X': self.black_list.append(param) if param not in self.black_list: text = wx.StaticText( self, label=param, pos=(UI.THEADERSTART['pos'][0] + param_indentation, UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem)) text.SetForegroundColour( UI.PARAMCOLOR['FG']) # set text color text.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #text.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) editbox = (wx.TextCtrl(self, name=section + ' - ' + param, value=str(value), pos=(UI.EBOX['pos'][0], UI.THEADERSTART['pos'][1] + self.current_y_pxpos_elem), size=UI.EBOX['size'], style=wx.TE_PROCESS_ENTER)) editbox.SetForegroundColour( UI.ECOLOR2['FG']) # set color editbox.SetBackgroundColour( UI.ECOLOR2['BG']) # set color editbox.Bind(wx.EVT_TEXT, self.EvtText) editbox.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver) #editbox.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave) elem_dict = { param: [{ 'ebox': [editbox, value] }, { 'headline': headline }, { 'text': text }, { 'button': button }] } ui_elem_handler_dict.update(elem_dict) self.current_y_pxpos_elem += 20 self.param_dict[section].update(ui_elem_handler_dict) self.expandCollapse(None, refresh=True) self.refresh_UI() self.KST.start()