#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Fri Dec 12 20:52:30 2008

import wx

ID_TREE = wx.NewId()
ID_PM_DEL_OBJECT = wx.NewId()
ID_PM_RENEW = wx.NewId()

print wx.__version__
class MainWindow(wx.Frame):

  
    def __init__(self, *args, **kwds):

        self.height = 768
        self.width = 1024
        self.sashPos = 250

 
        kwds["style"] = wx.ICONIZE|wx.CAPTION|wx.MINIMIZE|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.MAXIMIZE|wx.MAXIMIZE_BOX|wx.SYSTEM_MENU|wx.RESIZE_BORDER|wx.CLIP_CHILDREN
        wx.Frame.__init__(self, *args, **kwds)
        
        self.window_1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER|wx.SP_LIVE_UPDATE)
        self.window_1_pane_1 = wx.Panel(self.window_1, -1)
        self.window_1_pane_2 = wx.Panel(self.window_1, -1,style=wx.SUNKEN_BORDER)
        self.tree = wx.TreeCtrl(self.window_1_pane_1, ID_TREE, style=wx.TR_HAS_BUTTONS|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER)
        
        self.__set_properties()
        self.__do_layout()
        self.__bind_events()

    def __bind_events(self):
        
        self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK,self.onTreeRightClick)
        self.Bind(wx.EVT_TREE_SEL_CHANGED,self.onSelect)

    def __set_properties(self):
        self.SetTitle(_("Hausverwaltung"))
        self.populateTree()
        self.tree.SetFocus()

    def __do_layout(self):
        sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_4 = wx.BoxSizer(wx.VERTICAL)
        sizer_3 = wx.BoxSizer(wx.VERTICAL)
        sizer_3.Add(self.tree, 1, wx.EXPAND, 0)
        self.window_1_pane_1.SetSizer(sizer_3)
        self.window_1_pane_2.SetSizer(sizer_4)
        self.window_1.SplitVertically(self.window_1_pane_1, self.window_1_pane_2, self.sashPos)
        sizer_2.Add(self.window_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_2)
        sizer_2.Fit(self)
        self.Layout()
        self.SetSize((self.width,self.height))
        self.window_1.SetSashSize(2)

    def populateTree(self):
        self.tree.DeleteAllItems()
        self.treeChilds = []
        self.treeContent = {}
        root = self.tree.AddRoot("Test")
        self.tree.SetPyData(root,None)
        main_cnt = 1
        rentals = self.tree.AppendItem(root,str(main_cnt) + ". " + _("Vermietung"))
        self.treeChilds.append(rentals)

        main_cnt += 1
        invoices = self.tree.AppendItem(root,str(main_cnt) + ". " + _("Rechnungen"))
        self.treeChilds.append(invoices)
        inv_cnt = 1
        inv_incoming = self.tree.AppendItem(invoices,str(main_cnt) + "." + str(inv_cnt) + ". " + _("Eingehend"))
        inv_cnt += 1
        inv_outgoing = self.tree.AppendItem(invoices,str(main_cnt) + "." + str(inv_cnt) + ". " + _("Ausgehend"))
        del invoices
        del inv_cnt
        del inv_incoming
        del inv_outgoing

        main_cnt += 1
        reports = self.tree.AppendItem(root,str(main_cnt) + ". " + _("Reports"))
        self.treeChilds.append(reports)
        del reports

    def onTreeRightClick(self,event):
        print "onTreeRightClick"
        self.selection = self.tree.GetItemText(event.GetItem())
        self.menu_title_by_id = {}
        self.menu_title_by_id[ ID_PM_DEL_OBJECT ] = _(u"Delete")
        self.menu_title_by_id[ ID_PM_RENEW ] = _(u"Redraw")

        menu = wx.Menu()
        for (id,title) in self.menu_title_by_id.items():
            ### 3. Launcher packs menu with Append. ###
            menu.Append( id, title )
            ### 4. Launcher registers menu handlers with EVT_MENU, on the menu. ###
            self.Bind(wx.EVT_MENU, self.PopupAdd, id=id )

        ### 5. Launcher displays menu with call to PopupMenu, invoked on the source component, passing event's GetPoint. ###
        self.PopupMenu( menu, event.GetPoint() )
        menu.Destroy() # destroy to avoid mem leak
        event.Skip()
    
    def PopupAdd(self,event):
        print "PopupAdd"
        operation = event.GetId()

        # new rental object
        if operation == ID_PM_DEL_OBJECT:
            print "delete"
        else: #renew the tree
            print "renew"
            self.populateTree()
 
        print ""
        event.Skip()
        
    def onSelect(self,event):
        self.selection = self.tree.GetItemText(event.GetItem())
        print "Selected: " + self.selection
        self.Layout()
        event.Skip()

# end of class MainWindow


class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        Hausverwaltung = MainWindow(None, -1, "")
        self.SetTopWindow(Hausverwaltung)
        Hausverwaltung.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    import gettext
    gettext.install("app") # replace with the appropriate catalog name

    app = MyApp(0)
    app.MainLoop()


