From 4491c0d7490249e3a5f12e468d840d000fc3fda8 Mon Sep 17 00:00:00 2001 From: Bernhard Stampfer Date: Tue, 23 Feb 2016 16:03:03 +0100 Subject: [PATCH] - modified GUI, added 'sorry bro' page, moved gui PNGs --- app/gui.py | 79 +++++++++++++++++++------------ {app/static => gui}/products.png | Bin gui/sorry.png | Bin 0 -> 14294 bytes gui/sorry.xcf | Bin 0 -> 17202 bytes {app/static => gui}/start.png | Bin {app/static => gui}/thanks.png | Bin {app/static => gui}/users.png | Bin 7 files changed, 49 insertions(+), 30 deletions(-) rename {app/static => gui}/products.png (100%) create mode 100644 gui/sorry.png create mode 100644 gui/sorry.xcf rename {app/static => gui}/start.png (100%) rename {app/static => gui}/thanks.png (100%) rename {app/static => gui}/users.png (100%) diff --git a/app/gui.py b/app/gui.py index 5c30050..84a5624 100644 --- a/app/gui.py +++ b/app/gui.py @@ -15,13 +15,14 @@ class MainWindow(wx.Frame): self.SetTitle('Baroness Control') self.panelStart = PanelStart(self) - self.panelUser = Panel1(self) - self.panelList = Panel2(self) + self.panelDrinks = PanelDrinks(self) + self.panelUsers = PanelUsers(self) self.panelThanks = PanelThanks(self) + self.panelSorry = PanelSorry(self) - self.active = 0 self.user = User() + self.active = 0 self.switchPanels() self.Show() @@ -47,53 +48,50 @@ class MainWindow(wx.Frame): if user.longname == longn: self.user = user if not self.user.isblack: - self.panelUser.l_user.SetLabel(self.user.longname) self.active = 1 #getränkeauswahl else: - self.active = 0 #start TODO: Sorry Bro Panel + self.active = 4 #Sorry Bro Panel self.switchPanels() def onProduct(self, e): self.active = 3 print self.user.longname + ' consumes' buttonl = e.GetEventObject().GetLabelText() - drink = buttonl.split('\n')[0] + drink = get_product_by_name(buttonl.split('\n')[0]).id with app.app_context(): - for i in range(0, int(self.panelUser.GetAmount())): - add_consume(self.user.name, get_product_by_name(drink).id) + for i in range(0, int(self.panelDrinks.GetAmount())): + add_consume(self.user.name, drink) plot_all_thread(self.user) self.switchPanels() def switchPanels(self): + self.panelStart.Hide() + self.panelDrinks.Hide() + self.panelUsers.Hide() + self.panelThanks.Hide() + self.panelSorry.Hide() if self.active == 0: self.panelStart.Show() - self.panelUser.Hide() - self.panelList.Hide() - self.panelThanks.Hide() elif self.active == 1: - self.panelStart.Hide() - self.panelUser.Show() - self.panelList.Hide() - self.panelThanks.Hide() + self.panelDrinks.l_user.SetLabel(self.user.longname) + self.panelDrinks.Show() elif self.active == 2: - self.panelStart.Hide() - self.panelUser.Hide() - self.panelList.Show() - self.panelThanks.Hide() + self.panelUsers.Show() elif self.active == 3: - self.panelStart.Hide() - self.panelUser.Hide() - self.panelList.Hide() - self.panelThanks.Show() self.panelThanks.label_1.SetLabel(self.user.longname) + self.panelThanks.Show() self.delayExit() + elif self.active == 4: + self.panelSorry.label_1.SetLabel(self.user.longname) + self.panelSorry.Show() + class PanelStart (wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos = wx.DefaultPosition, size=(480, 320)) #panel = wx.Panel(self, -1) - self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./app/static/start.png", wx.BITMAP_TYPE_ANY)) + self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./gui/start.png", wx.BITMAP_TYPE_ANY)) self.Bind(wx.EVT_LEFT_DOWN, parent.onStart) self.bitmap_1.Bind(wx.EVT_LEFT_DOWN, parent.onStart) @@ -101,13 +99,14 @@ class PanelStart (wx.Panel): print "close" self.Destroy() + class PanelThanks (wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos = wx.DefaultPosition, size=(480, 320)) #panel = wx.Panel(self, -1) - self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./app/static/thanks.png", wx.BITMAP_TYPE_ANY)) - self.bitmap_1.Bind(wx.EVT_LEFT_DOWN, parent.onStart) + self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./gui/thanks.png", wx.BITMAP_TYPE_ANY)) + self.bitmap_1.Bind(wx.EVT_LEFT_DOWN, parent.onExit) self.label_1 = wx.StaticText(self, wx.ID_ANY, 'bla blub', pos=(100,100)) self.label_1.SetFont(wx.Font(30, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Humor Sans")) @@ -115,12 +114,28 @@ class PanelThanks (wx.Panel): print "close" self.Destroy() -class Panel1 (wx.Panel): + +class PanelSorry (wx.Panel): + + def __init__(self, parent): + wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos = wx.DefaultPosition, size=(480, 320)) + #panel = wx.Panel(self, -1) + self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./gui/sorry.png", wx.BITMAP_TYPE_ANY)) + self.bitmap_1.Bind(wx.EVT_LEFT_DOWN, parent.onExit) + self.label_1 = wx.StaticText(self, wx.ID_ANY, 'bla blub', pos=(100,100)) + self.label_1.SetFont(wx.Font(30, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Humor Sans")) + + def on_quit(self, e): + print "close" + self.Destroy() + + +class PanelDrinks (wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos = wx.DefaultPosition, size=(480, 320)) - self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./app/static/products.png", wx.BITMAP_TYPE_ANY)) + self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./gui/products.png", wx.BITMAP_TYPE_ANY)) products = get_products() buttonids = [] @@ -174,12 +189,12 @@ class Panel1 (wx.Panel): self.Destroy() -class Panel2 (wx.Panel): +class PanelUsers (wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, size=(480, 320)) - self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./app/static/users.png", wx.BITMAP_TYPE_ANY)) + self.bitmap_1 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap("./gui/users.png", wx.BITMAP_TYPE_ANY)) users = get_users() names = list() @@ -214,11 +229,15 @@ class Panel2 (wx.Panel): #This is bad programming :) def on_down(self,e , id=-1): + if self.but_names[len(self.but_names)-1].GetPosition()[1] < 320: + return for button in self.but_names: button.SetPosition((button.GetPosition()[0],button.GetPosition()[1]-320)) self.Layout() def on_up(self,e , id=-1): + if self.but_names[0].GetPosition()[1] == 0: + return for button in self.but_names: button.SetPosition((button.GetPosition()[0],button.GetPosition()[1]+320)) self.Layout() diff --git a/app/static/products.png b/gui/products.png similarity index 100% rename from app/static/products.png rename to gui/products.png diff --git a/gui/sorry.png b/gui/sorry.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc8b5364404e80bfd6df4a86f904e35675b5569 GIT binary patch literal 14294 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 BMCSki literal 0 HcmV?d00001 diff --git a/app/static/start.png b/gui/start.png similarity index 100% rename from app/static/start.png rename to gui/start.png diff --git a/app/static/thanks.png b/gui/thanks.png similarity index 100% rename from app/static/thanks.png rename to gui/thanks.png diff --git a/app/static/users.png b/gui/users.png similarity index 100% rename from app/static/users.png rename to gui/users.png