mirror of
				https://github.com/MCV-Software/TWBlue.git
				synced 2025-11-04 13:57:05 +00:00 
			
		
		
		
	A gtk view for session manager. Key libraries for linux need to be compiled
This commit is contained in:
		
							
								
								
									
										54
									
								
								src/sessionmanager/gtkUI.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/sessionmanager/gtkUI.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
from gi.repository import Gtk
 | 
			
		||||
import widgetUtils
 | 
			
		||||
 | 
			
		||||
class sessionManagerWindow(Gtk.Dialog):
 | 
			
		||||
 def __init__(self):
 | 
			
		||||
  super(sessionManagerWindow, self).__init__("Session Manager", None, 0, (Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL))
 | 
			
		||||
  box = self.get_content_area()
 | 
			
		||||
  self.list = widgetUtils.list("Session")
 | 
			
		||||
  box.add(self.list.list)
 | 
			
		||||
  btnBox = Gtk.Box(spacing=6)
 | 
			
		||||
  self.new = Gtk.Button("New account")
 | 
			
		||||
  self.remove = Gtk.Button("Remove account")
 | 
			
		||||
  btnBox.add(self.new)
 | 
			
		||||
  btnBox.add(self.remove)
 | 
			
		||||
  box.add(btnBox)
 | 
			
		||||
  self.show_all()
 | 
			
		||||
 | 
			
		||||
 def fill_list(self, sessionsList):
 | 
			
		||||
  for i in sessionsList:
 | 
			
		||||
   self.list.insert_item(i)
 | 
			
		||||
  if self.list.get_count() > 0:
 | 
			
		||||
   self.list.select_item(0)
 | 
			
		||||
 | 
			
		||||
 def get_response(self):
 | 
			
		||||
  return self.run()
 | 
			
		||||
 | 
			
		||||
 def new_account_dialog(self):
 | 
			
		||||
  dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, "Authorization")
 | 
			
		||||
  dialog.format_secondary_text("The request for the required Twitter authorization to continue will be opened on your browser. You only need to do it once. Would you like to autorhise a new account now?")
 | 
			
		||||
  return dialog.run()
 | 
			
		||||
 | 
			
		||||
 def add_new_session_to_list(self):
 | 
			
		||||
  total = self.list.get_count()
 | 
			
		||||
  name = "Authorised account %d" % (total+1)
 | 
			
		||||
  self.list.insert_item(name)
 | 
			
		||||
  if self.list.get_count() == 1:
 | 
			
		||||
   self.list.select_item(0)
 | 
			
		||||
 | 
			
		||||
 def show_unauthorised_error(self):
 | 
			
		||||
  dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.ERROR, Gtk.ButtonsType.CANCEL, "Invalid user token")
 | 
			
		||||
  dialog.format_secondary_text("Your access token is invalid or the authorisation has failed. Please try again.")
 | 
			
		||||
  return dialog.run()
 | 
			
		||||
 | 
			
		||||
 def remove_account_dialog(self):
 | 
			
		||||
  dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, "Remove account")
 | 
			
		||||
  dialog.format_secondary_text("Do you really want delete this account?")
 | 
			
		||||
  return dialog.run()
 | 
			
		||||
 | 
			
		||||
 def get_selected(self):
 | 
			
		||||
  return self.list.get_selected()
 | 
			
		||||
 | 
			
		||||
 def remove_session(self, sessionID):
 | 
			
		||||
  self.list.remove_item(sessionID)
 | 
			
		||||
 | 
			
		||||
@@ -1,7 +1,11 @@
 | 
			
		||||
# -*- coding: utf-8 -*-
 | 
			
		||||
import shutil
 | 
			
		||||
import widgetUtils
 | 
			
		||||
import wxUI as view
 | 
			
		||||
import platform
 | 
			
		||||
if platform.system() == "Windows":
 | 
			
		||||
 import wxUI as view
 | 
			
		||||
elif platform.system() == "Linux":
 | 
			
		||||
 import gtkUI as view
 | 
			
		||||
import paths
 | 
			
		||||
import time
 | 
			
		||||
import os
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
#import platform
 | 
			
		||||
#if platform.system() == "Windows":
 | 
			
		||||
from wxUtils import *
 | 
			
		||||
from baseDialog import *
 | 
			
		||||
#elif platform.system() == "Linux":
 | 
			
		||||
#	from gtkUtils import *
 | 
			
		||||
import platform
 | 
			
		||||
if platform.system() == "Windows":
 | 
			
		||||
 from wxUtils import *
 | 
			
		||||
elif platform.system() == "Linux":
 | 
			
		||||
 from gtkUtils import *
 | 
			
		||||
 
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
import wx
 | 
			
		||||
 | 
			
		||||
class BaseDialog(wx.Dialog):
 | 
			
		||||
 def __init__(self, *args, **kwargs):
 | 
			
		||||
  super(BaseDialog, self).__init__(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
 def get_response(self):
 | 
			
		||||
  return self.ShowModal()
 | 
			
		||||
 | 
			
		||||
 def get(self, control):
 | 
			
		||||
  if hasattr(self, control):
 | 
			
		||||
   control = getattr(self, control)
 | 
			
		||||
   if hasattr(control, "GetValue"): return getattr(control, "GetValue")()
 | 
			
		||||
   elif hasattr(control, "GetLabel"): return getattr(control, "GetLabel")()
 | 
			
		||||
   else: return -1
 | 
			
		||||
  else: return 0
 | 
			
		||||
 | 
			
		||||
 def set(self, control, text):
 | 
			
		||||
  if hasattr(self, control):
 | 
			
		||||
   control = getattr(self, control)
 | 
			
		||||
   if hasattr(control, "SetValue"): return getattr(control, "SetValue")(text)
 | 
			
		||||
   elif hasattr(control, "SetLabel"): return getattr(control, "SetLabel")(text)
 | 
			
		||||
   elif hasattr(control, "ChangeValue"): return getattr(control, "ChangeValue")(text)
 | 
			
		||||
   else: return -1
 | 
			
		||||
  else: return 0
 | 
			
		||||
 | 
			
		||||
 def destroy(self):
 | 
			
		||||
  self.Destroy()
 | 
			
		||||
@@ -37,3 +37,35 @@ def connect_event(parent, event, func, menuitem=None, *args, **kwargs):
 | 
			
		||||
  return getattr(parent, "connect")(event, func, *args, **kwargs)
 | 
			
		||||
 else:
 | 
			
		||||
  return getattr(menuitem, "connect")(event, func, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
class list(object):
 | 
			
		||||
 def __init__(self, *columns, **listArguments):
 | 
			
		||||
  self.columns = columns
 | 
			
		||||
  self.list_arguments = listArguments
 | 
			
		||||
  self.create_list()
 | 
			
		||||
 | 
			
		||||
 def create_list(self):
 | 
			
		||||
  columns = []
 | 
			
		||||
  [columns.append(str) for i in self.columns]
 | 
			
		||||
  self.store = Gtk.ListStore(*columns)
 | 
			
		||||
  self.list = Gtk.TreeView(model=self.store)
 | 
			
		||||
  renderer = Gtk.CellRendererText()
 | 
			
		||||
  for i in range(0, len(self.columns)):
 | 
			
		||||
   column = Gtk.TreeViewColumn(self.columns[i], renderer, text=0)
 | 
			
		||||
   column.set_sort_column_id(i)        
 | 
			
		||||
   self.list.append_column(column)
 | 
			
		||||
 | 
			
		||||
 def insert_item(self, *item):
 | 
			
		||||
  self.store.append(item)
 | 
			
		||||
 | 
			
		||||
 def get_selected(self):
 | 
			
		||||
  tree_selection = self.list.get_selection()
 | 
			
		||||
  (model, pathlist) = tree_selection.get_selected_rows()
 | 
			
		||||
  return pathlist[0]
 | 
			
		||||
 | 
			
		||||
 def select_item(self, item):
 | 
			
		||||
  tree_selection = self.list.get_selection()
 | 
			
		||||
  tree_selection.select_path(item)
 | 
			
		||||
 | 
			
		||||
 def get_count(self):
 | 
			
		||||
  return len(self.store)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,47 +1,114 @@
 | 
			
		||||
import wx
 | 
			
		||||
 | 
			
		||||
toolkit = "wx"
 | 
			
		||||
# Code responses for WX dialogs.
 | 
			
		||||
 | 
			
		||||
### 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
 | 
			
		||||
###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 raised when a checkbox changes its status.
 | 
			
		||||
CHECKBOX = wx.EVT_CHECKBOX
 | 
			
		||||
 | 
			
		||||
# This is activated when an user enter text on an edit box.
 | 
			
		||||
ENTERED_TEXT = wx.EVT_TEXT
 | 
			
		||||
 | 
			
		||||
# This is raised when a user activates a menu.
 | 
			
		||||
MENU = wx.EVT_MENU
 | 
			
		||||
 | 
			
		||||
# This is raised when a user presses any key in the control.
 | 
			
		||||
KEYPRESS = wx.EVT_CHAR_HOOK
 | 
			
		||||
 | 
			
		||||
# This is raised when a user releases a key in the control.
 | 
			
		||||
KEYUP = wx.EVT_KEY_UP
 | 
			
		||||
 | 
			
		||||
# This happens when a notebook tab is changed, It is used in Treebooks too.
 | 
			
		||||
NOTEBOOK_PAGE_CHANGED = wx.EVT_TREEBOOK_PAGE_CHANGED
 | 
			
		||||
 | 
			
		||||
# This happens when a radiobutton group changes its status.
 | 
			
		||||
RADIOBUTTON = wx.EVT_RADIOBUTTON
 | 
			
		||||
 | 
			
		||||
# Taskbar mouse clicks.
 | 
			
		||||
TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
 | 
			
		||||
TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
 | 
			
		||||
 | 
			
		||||
def exit_application():
 | 
			
		||||
 """ Closes the current window cleanly. """
 | 
			
		||||
 wx.GetApp().ExitMainLoop()
 | 
			
		||||
	""" Closes the current window cleanly. """
 | 
			
		||||
	wx.GetApp().ExitMainLoop()
 | 
			
		||||
 | 
			
		||||
def connect_event(parent, event, func, menuitem=None, *args, **kwargs):
 | 
			
		||||
 """ 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."""
 | 
			
		||||
 if menuitem == None:
 | 
			
		||||
  return getattr(parent, "Bind")(event, func, *args, **kwargs)
 | 
			
		||||
 else:
 | 
			
		||||
  return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs)
 | 
			
		||||
	""" 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."""
 | 
			
		||||
	if menuitem == None:
 | 
			
		||||
		return getattr(parent, "Bind")(event, func, *args, **kwargs)
 | 
			
		||||
	else:
 | 
			
		||||
		return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
def connectExitFunction(exitFunction):
 | 
			
		||||
  wx.GetApp().Bind(wx.EVT_QUERY_END_SESSION, exitFunction)
 | 
			
		||||
  wx.GetApp().Bind(wx.EVT_END_SESSION, exitFunction)
 | 
			
		||||
	""" This connect the events in WX when an user is  turning off the machine."""
 | 
			
		||||
	wx.GetApp().Bind(wx.EVT_QUERY_END_SESSION, exitFunction)
 | 
			
		||||
	wx.GetApp().Bind(wx.EVT_END_SESSION, exitFunction)
 | 
			
		||||
 | 
			
		||||
class BaseDialog(wx.Dialog):
 | 
			
		||||
	def __init__(self, *args, **kwargs):
 | 
			
		||||
		super(BaseDialog, self).__init__(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
	def get_response(self):
 | 
			
		||||
		return self.ShowModal()
 | 
			
		||||
 | 
			
		||||
	def get(self, control):
 | 
			
		||||
		if hasattr(self, control):
 | 
			
		||||
			control = getattr(self, control)
 | 
			
		||||
			if hasattr(control, "GetValue"): return getattr(control, "GetValue")()
 | 
			
		||||
			elif hasattr(control, "GetLabel"): return getattr(control, "GetLabel")()
 | 
			
		||||
			else: return -1
 | 
			
		||||
		else: return 0
 | 
			
		||||
 | 
			
		||||
	def set(self, control, text):
 | 
			
		||||
		if hasattr(self, control):
 | 
			
		||||
			control = getattr(self, control)
 | 
			
		||||
			if hasattr(control, "SetValue"): return getattr(control, "SetValue")(text)
 | 
			
		||||
			elif hasattr(control, "SetLabel"): return getattr(control, "SetLabel")(text)
 | 
			
		||||
			elif hasattr(control, "ChangeValue"): return getattr(control, "ChangeValue")(text)
 | 
			
		||||
			else: return -1
 | 
			
		||||
		else: return 0
 | 
			
		||||
 | 
			
		||||
	def destroy(self):
 | 
			
		||||
		self.Destroy()
 | 
			
		||||
 | 
			
		||||
	def set_title(self, title):
 | 
			
		||||
		self.SetTitle(title)
 | 
			
		||||
 | 
			
		||||
	def get_title(self):
 | 
			
		||||
		return self.GetTitle()
 | 
			
		||||
 | 
			
		||||
class mainloopObject(wx.App):
 | 
			
		||||
 | 
			
		||||
	def __init__(self):
 | 
			
		||||
		self.app = wx.App()
 | 
			
		||||
 | 
			
		||||
	def run_mainloop(self):
 | 
			
		||||
		self.app.MainLoop()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user