Added accounts dialog at startup in socializer (implementation is half pending)

This commit is contained in:
Manuel Cortez 2019-09-23 17:47:26 -05:00
parent d06a32311e
commit 9003d3c738
4 changed files with 74 additions and 16 deletions

View File

@ -52,6 +52,7 @@ def setup():
log.debug("Created Application mainloop object")
sm = sessionManager.sessionManagerController()
sm.show()
del sm
r = mainController.Controller()
call_threaded(r.login)

View File

@ -111,7 +111,7 @@ class vkSession(object):
def is_logged(self):
return self.logged
def get_configuration(self):
def get_configuration(self, nosound=False):
""" Gets settings for a session."""
@ -119,6 +119,7 @@ class vkSession(object):
# try:
log.debug("Creating config file %s" % (file_,))
self.settings = Configuration(os.path.join(paths.config_path(), file_), os.path.join(paths.app_path(), "session.defaults"))
if nosound == False:
self.soundplayer = sound.soundSystem(config.app["sound"])
pub.subscribe(self.play_sound, "play-sound")
pub.subscribe(self.post, "post")

View File

@ -5,6 +5,7 @@ import widgetUtils
import paths
import time
import logging
import shutil
from authenticator.official import AuthenticationError
from . import wxUI as view
from . import session
@ -16,12 +17,16 @@ class sessionManagerController(object):
def __init__(self):
super(sessionManagerController, self).__init__()
log.debug("Setting up the session manager.")
self.view = view.sessionManagerWindow()
widgetUtils.connect_event(self.view.new, widgetUtils.BUTTON_PRESSED, self.manage_new_account)
widgetUtils.connect_event(self.view.remove, widgetUtils.BUTTON_PRESSED, self.remove)
self.fill_list()
if not hasattr(self, "session"):
if len(self.sessions) == 0:
log.debug("the session list is empty, creating a new one...")
self.manage_new_account()
def fill_list(self):
self.sessions = []
log.debug("Filling the session list...")
for i in os.listdir(paths.config_path()):
if os.path.isdir(os.path.join(paths.config_path(), i)):
@ -29,12 +34,10 @@ class sessionManagerController(object):
config_test = Configuration(os.path.join(paths.config_path(), i, "session.conf"))
name = config_test["vk"]["user"]
if name != "" and config_test["vk"]["password"] != "":
self.session = i
s = session.vkSession(self.session)
s.get_configuration()
session.sessions[self.session] = s
self.sessions.append((i, name))
self.view.list.insert_item(False, *[name])
def manage_new_account(self):
def manage_new_account(self, *args, **kwargs):
if view.new_account_dialog() == widgetUtils.YES:
location = (str(time.time())[-6:])
log.debug("Creating session in the %s path" % (location,))
@ -42,11 +45,11 @@ class sessionManagerController(object):
path = os.path.join(paths.config_path(), location)
if not os.path.exists(path):
os.mkdir(path)
s.get_configuration()
s.get_configuration(True)
self.get_authorisation(s)
session.sessions[location] = s
else:
sys.exit()
name = s.settings["vk"]["user"]
self.sessions.append((location, name))
self.view.list.insert_item(False, *[name])
def get_authorisation(self, c):
log.debug("Starting the authorisation process...")
@ -60,3 +63,28 @@ class sessionManagerController(object):
c.settings["vk"]["password"] = ""
c.settings["vk"]["user"]
return self.get_authorisation(c)
def do_ok(self):
selected_session = self.sessions[self.view.list.get_selected()]
self.session = selected_session[0]
self.session = session.vkSession(self.session)
self.session.get_configuration()
session.sessions[selected_session[1]] = self.session
def show(self):
if len(self.sessions) > 1:
answer = self.view.get_response()
else:
answer = widgetUtils.OK
if answer == widgetUtils.OK:
self.do_ok()
else:
sys.exit()
self.view.destroy()
def remove(self, *args, **kwargs):
if self.view.remove_account_dialog() == widgetUtils.YES:
selected_session = self.sessions[self.view.list.get_selected()]
shutil.rmtree(path=os.path.join(paths.config_path(), selected_session[0]), ignore_errors=True)
self.sessions.remove(selected_session)
self.view.list.remove_item(self.view.list.get_selected())

View File

@ -37,3 +37,31 @@ class newSessionDialog(widgetUtils.BaseDialog):
def get_password(self):
return self.passw.GetValue()
class sessionManagerWindow(widgetUtils.BaseDialog):
def __init__(self):
super(sessionManagerWindow, self).__init__(parent=None, title=_("Select an account"), size=wx.DefaultSize)
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(panel, -1, _(u"Accounts list"), size=wx.DefaultSize)
listSizer = wx.BoxSizer(wx.HORIZONTAL)
self.list = widgetUtils.list(panel, _("Account"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT)
listSizer.Add(label, 0, wx.ALL, 5)
listSizer.Add(self.list.list, 0, wx.ALL, 5)
sizer.Add(listSizer, 0, wx.ALL, 5)
self.new = wx.Button(panel, -1, _("New account"), size=wx.DefaultSize)
self.remove = wx.Button(panel, -1, _(u"Remove account"))
ok = wx.Button(panel, wx.ID_OK, size=wx.DefaultSize)
ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL, size=wx.DefaultSize)
buttons = wx.BoxSizer(wx.HORIZONTAL)
buttons.Add(self.new, 0, wx.ALL, 5)
buttons.Add(ok, 0, wx.ALL, 5)
buttons.Add(cancel, 0, wx.ALL, 5)
sizer.Add(buttons, 0, wx.ALL, 5)
panel.SetSizer(sizer)
min = sizer.CalcMin()
self.SetClientSize(min)
def remove_account_dialog(self):
return wx.MessageDialog(self, _("Do you really want to delete this account?"), _("Remove account"), wx.YES_NO).ShowModal()