#!/usr/bin/env python
# encoding: iso-8859-15
#
#Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]
#Copyright (C) 2002  Pablo Ruiz Múzquiz
#
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
#Boa:Frame:wxPpal

from wxPython.wx import *
import frSala
import frArbol
import logging

log = logging.getLogger("Editor")

def create(parent):
    return wxPpal(parent)

[wxID_WXPPAL] = map(lambda _init_ctrls: wxNewId(), range(1))

[wxID_WXPPALMNUFICHEROITEMS0, wxID_WXPPALMNUFICHEROITEMS1, 
 wxID_WXPPALMNUFICHEROITEMS2, wxID_WXPPALMNUFICHEROITEMS3, 
] = map(lambda _init_coll_mnuFichero_Items: wxNewId(), range(4))

[wxID_WXPPALMNUAYUDAITEMS0] = map(lambda _init_coll_mnuAyuda_Items: wxNewId(), range(1))

class wxPpal(wxMDIParentFrame):
    """ Frame principal del Ambartan (editor de mine), contiene los menus, 
        botoneras y sirve de padre para los demás frames de la aplicación
        Si se cierra esta ventana se cierra el programa
    """


    def _init_coll_mnuAyuda_Items(self, parent):
        # generated method, don't edit

        parent.Append(helpString='', id=wxID_WXPPALMNUAYUDAITEMS0,
              item=u'Acerca de...', kind=wxITEM_NORMAL)
        EVT_MENU(self, wxID_WXPPALMNUAYUDAITEMS0, self.OnMnuayudaAcercaDeMenu)

    def _init_coll_mnuFichero_Items(self, parent):
        # generated method, don't edit

        parent.Append(helpString=u'', id=wxID_WXPPALMNUFICHEROITEMS0,
              item=u'Nuevo', kind=wxITEM_NORMAL)
        parent.Append(helpString='', id=wxID_WXPPALMNUFICHEROITEMS1,
              item=u'Guardar', kind=wxITEM_NORMAL)
        parent.Append(helpString='', id=wxID_WXPPALMNUFICHEROITEMS2,
              item=u'Borrar', kind=wxITEM_NORMAL)
        parent.Append(helpString='', id=wxID_WXPPALMNUFICHEROITEMS3,
              item=u'Cerrar', kind=wxITEM_NORMAL)
        EVT_MENU(self, wxID_WXPPALMNUFICHEROITEMS0, self.OnMnuficheroNuevo)
        EVT_MENU(self, wxID_WXPPALMNUFICHEROITEMS1, self.OnMnuficheroGuardar)
        EVT_MENU(self, wxID_WXPPALMNUFICHEROITEMS2, self.OnMnuficheroBorrar)
        EVT_MENU(self, wxID_WXPPALMNUFICHEROITEMS3, self.OnMnuficheroCerrar)

    def _init_coll_menuBar1_Menus(self, parent):
        # generated method, don't edit

        parent.Append(menu=self.mnuFichero, title=u'Fichero')
        parent.Append(menu=self.mnuAyuda, title=u'Ayuda')

    def _init_utils(self):
        # generated method, don't edit
        self.mnuFichero = wxMenu(title='')

        self.menuBar1 = wxMenuBar()

        self.mnuAyuda = wxMenu(title='')

        self._init_coll_mnuFichero_Items(self.mnuFichero)
        self._init_coll_menuBar1_Menus(self.menuBar1)
        self._init_coll_mnuAyuda_Items(self.mnuAyuda)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wxMDIParentFrame.__init__(self, id=wxID_WXPPAL, name='', parent=prnt,
              pos=wxPoint(-10, 64), size=wxSize(986, 708),
              style=wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
              title='Editor de Salas para Minë')
        self._init_utils()
        self.SetClientSize(wxSize(978, 681))
        self.SetMenuBar(self.menuBar1)
        EVT_CLOSE(self, self.OnWxppalClose)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.frArb=frArbol.create(self)
        self.frArb.Show(true)



#    def OnMnuficheroAbrirMenu(self, event):
#        dlg = wxFileDialog(self, "Choose a file", ".", "", "*.xml", wxOPEN)
#        try:
#            if dlg.ShowModal() == wxID_OK:
#                filename = dlg.GetFilename()
#                self.AbrirSala(filename.split('.')[0])
#                #fr=frSala.create(self)
#                #print(filename)
#                #fr.SetFile(filename.split('.')[0])
#                #fr.Show(true)    
#                # Your code
#        finally:
#            dlg.Destroy()                

    def OnMnuficheroSalirMenu(self, event):
        event.Skip()
        
    def AbrirSala(self, filename):
        fr=frSala.create(self)
        #print("nombre fichero "+filename)
        fr.SetFile(filename)
        fr.Show(true)    

    def OnMnuficheroNuevo(self, event):
        fr=frSala.create(self)
        fr.SetFile("")
        fr.Show(true)
        event.Skip()

    def OnMnuficheroBorrar(self, event):
        tmp = self.GetActiveChild()
        tmp.borrar()
        event.Skip()

    def OnMnuficheroGuardar(self, event):
        #ojo falta impedir que se guarde el arbol de navegación si éste es el
        #hijo activo
        #comprobar si existe ya el fichero y preguntar (no vaya a ser que haya
        #otra ventana abierta del mismo fichero...
        #print 'en el guardar del mnufichero'
        tmp = self.GetActiveChild()
        tmp.guardar()
        event.Skip()

    def OnMnuayudaAcercaDeMenu(self, event):
        acercaDe =            '                                        Mardentan                  \n'
        acercaDe = acercaDe + '                                Editor de objetos para Minë        \n'
        acercaDe = acercaDe + '                                     versión 0.2 beta              \n' 
        acercaDe = acercaDe + '                 Copyright (C) 2003  Gabriel Pulido de Torres      \n'
        acercaDe = acercaDe + '                                                                   \n'
        acercaDe = acercaDe + '    Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]    \n'
        acercaDe = acercaDe + '                 Copyright (C) 2002  Pablo Ruiz Múzquiz            \n'        
        dlg = wxMessageDialog(self, acercaDe,
          'Acerca de Mardentan', wxOK )
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()
                
        event.Skip()

    def OnMnuficheroCerrar(self, event):
        tmp = self.GetActiveChild()
        tmp.cerrar()
        event.Skip()

    def OnWxppalClose(self, event):                               
        self.Destroy()
        #necesito saber como recorrer todos los hijos y ver cuales tienen datos modificados
        #para cancelar la destrucción de la aplicación, o preguntar por lo menos al usuario.                       
	
