A gtk view for session manager. Key libraries for linux need to be compiled

This commit is contained in:
Manuel Cortez 2015-03-31 17:46:15 -06:00
parent c085729096
commit 9356a0544f
6 changed files with 177 additions and 49 deletions

View 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)

View File

@ -1,7 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import shutil import shutil
import widgetUtils import widgetUtils
import platform
if platform.system() == "Windows":
import wxUI as view import wxUI as view
elif platform.system() == "Linux":
import gtkUI as view
import paths import paths
import time import time
import os import os

View File

@ -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 *

View File

@ -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()

View File

@ -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)

View File

@ -1,33 +1,57 @@
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()
@ -43,5 +67,48 @@ def connect_event(parent, event, func, menuitem=None, *args, **kwargs):
return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs) return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs)
def connectExitFunction(exitFunction): def connectExitFunction(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_QUERY_END_SESSION, exitFunction)
wx.GetApp().Bind(wx.EVT_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()