mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2024-11-26 12:53:12 -06:00
A gtk view for session manager. Key libraries for linux need to be compiled
This commit is contained in:
parent
c085729096
commit
9356a0544f
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 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import shutil
|
import shutil
|
||||||
import widgetUtils
|
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 paths
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#import platform
|
import platform
|
||||||
#if platform.system() == "Windows":
|
if platform.system() == "Windows":
|
||||||
from wxUtils import *
|
from wxUtils import *
|
||||||
from baseDialog import *
|
elif platform.system() == "Linux":
|
||||||
#elif platform.system() == "Linux":
|
from gtkUtils import *
|
||||||
# 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)
|
return getattr(parent, "connect")(event, func, *args, **kwargs)
|
||||||
else:
|
else:
|
||||||
return getattr(menuitem, "connect")(event, func, *args, **kwargs)
|
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
|
import wx
|
||||||
|
|
||||||
toolkit = "wx"
|
toolkit = "wx"
|
||||||
# Code responses for WX dialogs.
|
|
||||||
|
### Code responses for WX dialogs.
|
||||||
|
|
||||||
# this is when an user presses OK on a dialogue.
|
# this is when an user presses OK on a dialogue.
|
||||||
OK = wx.ID_OK
|
OK = wx.ID_OK
|
||||||
|
|
||||||
# This is when an user presses cancel on a dialogue.
|
# This is when an user presses cancel on a dialogue.
|
||||||
CANCEL = wx.ID_CANCEL
|
CANCEL = wx.ID_CANCEL
|
||||||
|
|
||||||
# This is when an user closes the dialogue or an id to create the close button.
|
# This is when an user closes the dialogue or an id to create the close button.
|
||||||
CLOSE = wx.ID_CLOSE
|
CLOSE = wx.ID_CLOSE
|
||||||
|
|
||||||
# The response for a "yes" Button pressed on a dialogue.
|
# The response for a "yes" Button pressed on a dialogue.
|
||||||
YES = wx.ID_YES
|
YES = wx.ID_YES
|
||||||
|
|
||||||
# This is when the user presses No on a default dialogue.
|
# This is when the user presses No on a default dialogue.
|
||||||
NO = wx.ID_NO
|
NO = wx.ID_NO
|
||||||
|
|
||||||
#events
|
###events
|
||||||
|
|
||||||
# This is raised when the application must be closed.
|
# This is raised when the application must be closed.
|
||||||
CLOSE_EVENT = wx.EVT_CLOSE
|
CLOSE_EVENT = wx.EVT_CLOSE
|
||||||
|
|
||||||
# This is activated when a button is pressed.
|
# This is activated when a button is pressed.
|
||||||
BUTTON_PRESSED = wx.EVT_BUTTON
|
BUTTON_PRESSED = wx.EVT_BUTTON
|
||||||
|
|
||||||
|
# This is raised when a checkbox changes its status.
|
||||||
CHECKBOX = wx.EVT_CHECKBOX
|
CHECKBOX = wx.EVT_CHECKBOX
|
||||||
|
|
||||||
# This is activated when an user enter text on an edit box.
|
# This is activated when an user enter text on an edit box.
|
||||||
ENTERED_TEXT = wx.EVT_TEXT
|
ENTERED_TEXT = wx.EVT_TEXT
|
||||||
|
|
||||||
|
# This is raised when a user activates a menu.
|
||||||
MENU = wx.EVT_MENU
|
MENU = wx.EVT_MENU
|
||||||
|
|
||||||
|
# This is raised when a user presses any key in the control.
|
||||||
KEYPRESS = wx.EVT_CHAR_HOOK
|
KEYPRESS = wx.EVT_CHAR_HOOK
|
||||||
|
|
||||||
|
# This is raised when a user releases a key in the control.
|
||||||
KEYUP = wx.EVT_KEY_UP
|
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
|
NOTEBOOK_PAGE_CHANGED = wx.EVT_TREEBOOK_PAGE_CHANGED
|
||||||
|
|
||||||
|
# This happens when a radiobutton group changes its status.
|
||||||
RADIOBUTTON = wx.EVT_RADIOBUTTON
|
RADIOBUTTON = wx.EVT_RADIOBUTTON
|
||||||
|
|
||||||
|
# Taskbar mouse clicks.
|
||||||
TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
|
TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
|
||||||
TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
|
TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
|
||||||
|
|
||||||
def exit_application():
|
def exit_application():
|
||||||
""" Closes the current window cleanly. """
|
""" Closes the current window cleanly. """
|
||||||
wx.GetApp().ExitMainLoop()
|
wx.GetApp().ExitMainLoop()
|
||||||
|
|
||||||
def connect_event(parent, event, func, menuitem=None, *args, **kwargs):
|
def connect_event(parent, event, func, menuitem=None, *args, **kwargs):
|
||||||
""" Connects an event to a function.
|
""" Connects an event to a function.
|
||||||
parent wx.window: The widget that will listen for the event.
|
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.
|
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."""
|
function func: The function that will be connected to the event."""
|
||||||
if menuitem == None:
|
if menuitem == None:
|
||||||
return getattr(parent, "Bind")(event, func, *args, **kwargs)
|
return getattr(parent, "Bind")(event, func, *args, **kwargs)
|
||||||
else:
|
else:
|
||||||
return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs)
|
return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs)
|
||||||
|
|
||||||
def connectExitFunction(exitFunction):
|
def connectExitFunction(exitFunction):
|
||||||
wx.GetApp().Bind(wx.EVT_QUERY_END_SESSION, exitFunction)
|
""" This connect the events in WX when an user is turning off the machine."""
|
||||||
wx.GetApp().Bind(wx.EVT_END_SESSION, exitFunction)
|
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()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user