mirror of
				https://github.com/MCV-Software/TWBlue.git
				synced 2025-11-03 21:37:05 +00:00 
			
		
		
		
	Use invisible interface's keyboard shorcuts even if the window is displayed
This commit is contained in:
		@@ -15,6 +15,7 @@ reverse_timelines = boolean(default=False)
 | 
				
			|||||||
time_to_check_streams = integer(default=30)
 | 
					time_to_check_streams = integer(default=30)
 | 
				
			||||||
announce_stream_status = boolean(default=True)
 | 
					announce_stream_status = boolean(default=True)
 | 
				
			||||||
ask_at_exit = boolean(default=True)
 | 
					ask_at_exit = boolean(default=True)
 | 
				
			||||||
 | 
					use_invisible_keyboard_shorcuts = boolean(default=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sound]
 | 
					[sound]
 | 
				
			||||||
volume = float(default=1.0)
 | 
					volume = float(default=1.0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -52,10 +52,12 @@ class general(wx.Panel):
 | 
				
			|||||||
  langBox.Add(self.language, 0, wx.ALL, 5)
 | 
					  langBox.Add(self.language, 0, wx.ALL, 5)
 | 
				
			||||||
  sizer.Add(langBox, 0, wx.ALL, 5)
 | 
					  sizer.Add(langBox, 0, wx.ALL, 5)
 | 
				
			||||||
  self.au = wx.Button(self, -1, _(u"Set the autocomplete function"))
 | 
					  self.au = wx.Button(self, -1, _(u"Set the autocomplete function"))
 | 
				
			||||||
#  self.Bind(wx.EVT_BUTTON, self.autocompletion, au)
 | 
					 | 
				
			||||||
  self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting TwBlue?"))
 | 
					  self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting TwBlue?"))
 | 
				
			||||||
  self.ask_at_exit.SetValue(config.main["general"]["ask_at_exit"])
 | 
					  self.ask_at_exit.SetValue(config.main["general"]["ask_at_exit"])
 | 
				
			||||||
  sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
 | 
					  sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
 | 
				
			||||||
 | 
					  self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"Use invisible interface's keyboard shorcuts even if the window is displayed"))
 | 
				
			||||||
 | 
					  self.use_invisible_shorcuts.SetValue(config.main["general"]["use_invisible_keyboard_shorcuts"])
 | 
				
			||||||
 | 
					  sizer.Add(self.use_invisible_shorcuts, 0, wx.ALL, 5)
 | 
				
			||||||
  self.relative_time = wx.CheckBox(self, -1, _(U"Relative times"))
 | 
					  self.relative_time = wx.CheckBox(self, -1, _(U"Relative times"))
 | 
				
			||||||
  self.relative_time.SetValue(config.main["general"]["relative_times"])
 | 
					  self.relative_time.SetValue(config.main["general"]["relative_times"])
 | 
				
			||||||
  sizer.Add(self.relative_time, 0, wx.ALL, 5)
 | 
					  sizer.Add(self.relative_time, 0, wx.ALL, 5)
 | 
				
			||||||
@@ -384,6 +386,13 @@ class configurationDialog(wx.Dialog):
 | 
				
			|||||||
  if platform.system() == "Windows":
 | 
					  if platform.system() == "Windows":
 | 
				
			||||||
   config.main["general"]["voice_enabled"] = self.general.disable_sapi5.GetValue()
 | 
					   config.main["general"]["voice_enabled"] = self.general.disable_sapi5.GetValue()
 | 
				
			||||||
   config.main["general"]["ask_at_exit"] = self.general.ask_at_exit.GetValue()
 | 
					   config.main["general"]["ask_at_exit"] = self.general.ask_at_exit.GetValue()
 | 
				
			||||||
 | 
					   if (self.general.use_invisible_shorcuts.GetValue() == True and config.main["general"]["use_invisible_keyboard_shorcuts"] != True) and self.parent.showing == True:
 | 
				
			||||||
 | 
					    km = self.parent.create_invisible_keyboard_shorcuts()
 | 
				
			||||||
 | 
					    self.parent.register_invisible_keyboard_shorcuts(km)
 | 
				
			||||||
 | 
					   elif (self.general.use_invisible_shorcuts.GetValue() == False and config.main["general"]["use_invisible_keyboard_shorcuts"] != False) and self.parent.showing == True:
 | 
				
			||||||
 | 
					    km = self.parent.create_invisible_keyboard_shorcuts()
 | 
				
			||||||
 | 
					    self.parent.unregister_invisible_keyboard_shorcuts(km)
 | 
				
			||||||
 | 
					   config.main["general"]["use_invisible_keyboard_shorcuts"] = self.general.use_invisible_shorcuts.GetValue()
 | 
				
			||||||
   config.main["general"]["hide_gui"] = self.general.show_gui.GetValue()
 | 
					   config.main["general"]["hide_gui"] = self.general.show_gui.GetValue()
 | 
				
			||||||
  config.main["general"]["max_api_calls"] = self.general.apiCalls.GetValue()
 | 
					  config.main["general"]["max_api_calls"] = self.general.apiCalls.GetValue()
 | 
				
			||||||
  config.main["general"]["max_tweets_per_call"] = self.general.itemsPerApiCall.GetValue()
 | 
					  config.main["general"]["max_tweets_per_call"] = self.general.itemsPerApiCall.GetValue()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -329,6 +329,9 @@ class mainFrame(wx.Frame):
 | 
				
			|||||||
   buff.put_items(num)
 | 
					   buff.put_items(num)
 | 
				
			||||||
   self.nb.InsertSubPage(self.db.settings["buffers"].index(self.db.settings["user_name"]), buff, _(u"Trending topics for %s") % (buff.name,))
 | 
					   self.nb.InsertSubPage(self.db.settings["buffers"].index(self.db.settings["user_name"]), buff, _(u"Trending topics for %s") % (buff.name,))
 | 
				
			||||||
  self.sizer.Add(self.nb, 0, wx.ALL, 5)
 | 
					  self.sizer.Add(self.nb, 0, wx.ALL, 5)
 | 
				
			||||||
 | 
					  if config.main["general"]["use_invisible_keyboard_shorcuts"] == True:
 | 
				
			||||||
 | 
					   km = self.create_invisible_keyboard_shorcuts()
 | 
				
			||||||
 | 
					   self.register_invisible_keyboard_shorcuts(km)
 | 
				
			||||||
  panel.SetSizer(self.sizer)
 | 
					  panel.SetSizer(self.sizer)
 | 
				
			||||||
  self.SetClientSize(self.sizer.CalcMin())
 | 
					  self.SetClientSize(self.sizer.CalcMin())
 | 
				
			||||||
  self.Bind(event.MyEVT_STARTED, self.onInit)
 | 
					  self.Bind(event.MyEVT_STARTED, self.onInit)
 | 
				
			||||||
@@ -823,20 +826,34 @@ class mainFrame(wx.Frame):
 | 
				
			|||||||
   msg = _(u"%s. Empty") % (self.nb.GetPageText(self.nb.GetSelection()))
 | 
					   msg = _(u"%s. Empty") % (self.nb.GetPageText(self.nb.GetSelection()))
 | 
				
			||||||
  output.speak(msg, 1)
 | 
					  output.speak(msg, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 def show_hide(self, ev=None):
 | 
					 def create_invisible_keyboard_shorcuts(self):
 | 
				
			||||||
#  if platform.system() == "Linux" or platform.system() == "Darwin": return
 | 
					 | 
				
			||||||
  keymap = {}
 | 
					  keymap = {}
 | 
				
			||||||
  for i in config.main["keymap"]:
 | 
					  for i in config.main["keymap"]:
 | 
				
			||||||
   if hasattr(self, i):
 | 
					   if hasattr(self, i):
 | 
				
			||||||
    keymap[config.main["keymap"][i]] = getattr(self, i)
 | 
					    keymap[config.main["keymap"][i]] = getattr(self, i)
 | 
				
			||||||
  if self.showing == True:
 | 
					  return keymap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 def register_invisible_keyboard_shorcuts(self, keymap):
 | 
				
			||||||
  self.keyboard_handler = WXKeyboardHandler(self)
 | 
					  self.keyboard_handler = WXKeyboardHandler(self)
 | 
				
			||||||
  self.keyboard_handler.register_keys(keymap)
 | 
					  self.keyboard_handler.register_keys(keymap)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 def unregister_invisible_keyboard_shorcuts(self, keymap):
 | 
				
			||||||
 | 
					  try:
 | 
				
			||||||
 | 
					   self.keyboard_handler.unregister_keys(keymap)
 | 
				
			||||||
 | 
					   del self.keyboard_handler
 | 
				
			||||||
 | 
					  except AttributeError:
 | 
				
			||||||
 | 
					   pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 def show_hide(self, ev=None):
 | 
				
			||||||
 | 
					  km = self.create_invisible_keyboard_shorcuts()
 | 
				
			||||||
 | 
					  if self.showing == True:
 | 
				
			||||||
 | 
					   if config.main["general"]["use_invisible_keyboard_shorcuts"] == False:
 | 
				
			||||||
 | 
					    self.register_invisible_keyboard_shorcuts(km)
 | 
				
			||||||
   self.Hide()
 | 
					   self.Hide()
 | 
				
			||||||
   self.showing = False
 | 
					   self.showing = False
 | 
				
			||||||
  else:
 | 
					  else:
 | 
				
			||||||
   self.keyboard_handler.unregister_keys(keymap)
 | 
					   if config.main["general"]["use_invisible_keyboard_shorcuts"] == False:
 | 
				
			||||||
   del self.keyboard_handler
 | 
					    self.unregister_invisible_keyboard_shorcuts(km)
 | 
				
			||||||
   self.Show()
 | 
					   self.Show()
 | 
				
			||||||
   self.showing = True
 | 
					   self.showing = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,8 @@ def check_for_update(msg=False):
 | 
				
			|||||||
    else:
 | 
					    else:
 | 
				
			||||||
     progress.Update(percent, _(u"Update"))
 | 
					     progress.Update(percent, _(u"Update"))
 | 
				
			||||||
   def update_complete():
 | 
					   def update_complete():
 | 
				
			||||||
    wx.MessageDialog(None, _(u"The new TW Blue version has been downloaded and installed. Press OK to start the application."), _(u"Done!")).ShowModal()
 | 
					    ms = wx.MessageDialog(None, _(u"The new TW Blue version has been downloaded and installed. Press OK to start the application."), _(u"Done!"))
 | 
				
			||||||
 | 
					    if ms.ShowModal() == wx.ID_OK:
 | 
				
			||||||
     sys.exit()
 | 
					     sys.exit()
 | 
				
			||||||
   app_updater = updater.AutoUpdater(url, new_path, 'bootstrap.exe', app_path=paths.app_path(), postexecute=paths.app_path("TWBlue.exe"), finish_callback=update_complete, percentage_callback=update)
 | 
					   app_updater = updater.AutoUpdater(url, new_path, 'bootstrap.exe', app_path=paths.app_path(), postexecute=paths.app_path("TWBlue.exe"), finish_callback=update_complete, percentage_callback=update)
 | 
				
			||||||
   app_updater.start_update()
 | 
					   app_updater.start_update()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								src/widgetUtils/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/widgetUtils/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					import platform
 | 
				
			||||||
 | 
					if platform.system() == "Windows":
 | 
				
			||||||
 | 
					 from wxUtils import *
 | 
				
			||||||
							
								
								
									
										32
									
								
								src/widgetUtils/wxUtils.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/widgetUtils/wxUtils.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					import wx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Code responses for WX dialogs.
 | 
				
			||||||
 | 
					# this is when an user presses OK on a dialogue.
 | 
				
			||||||
 | 
					OK = wx.ID_OK
 | 
				
			||||||
 | 
					# This is when an user presses cancel on a dialogue.
 | 
				
			||||||
 | 
					CANCEL = wx.ID_CANCEL
 | 
				
			||||||
 | 
					# This is when an user closes the dialogue or an id to create the close button.
 | 
				
			||||||
 | 
					CLOSE = wx.ID_CLOSE
 | 
				
			||||||
 | 
					# The response for a "yes" Button pressed on a dialogue.
 | 
				
			||||||
 | 
					YES = wx.ID_YES
 | 
				
			||||||
 | 
					# This is when the user presses No on a default dialogue.
 | 
				
			||||||
 | 
					NO = wx.ID_NO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#events
 | 
				
			||||||
 | 
					# This is raised when the application must be closed.
 | 
				
			||||||
 | 
					CLOSE_EVENT = wx.EVT_CLOSE
 | 
				
			||||||
 | 
					# This is activated when a button  is pressed.
 | 
				
			||||||
 | 
					BUTTON_PRESSED = wx.EVT_BUTTON
 | 
				
			||||||
 | 
					# This is activated when an user enter text on an edit box.
 | 
				
			||||||
 | 
					ENTERED_TEXT = wx.EVT_TEXT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def exit_application():
 | 
				
			||||||
 | 
					 """ Closes the current window cleanly. """
 | 
				
			||||||
 | 
					 wx.GetApp().ExitMainLoop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def connect_event(parent, event, func):
 | 
				
			||||||
 | 
					 """ Connects an event to a function.
 | 
				
			||||||
 | 
					  parent wx.window: The widget that will listen for the event.
 | 
				
			||||||
 | 
					  event widgetUtils.event: The event that will be listened for the parent. The event should be one of the widgetUtils events.
 | 
				
			||||||
 | 
					  function func: The function that will be connected to the event."""
 | 
				
			||||||
 | 
					 return getattr(parent, "Bind")(event, func)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user