Exemplo n.º 1
0
 def __run_about(self, widget):
     if self.creditos:
         self.creditos.destroy()
         del(self.creditos)
         self.creditos = False
     self.creditos = Creditos(self.get_toplevel())
     self.creditos.run()
Exemplo n.º 2
0
class Menu(Gtk.MenuBar):
    """
    Toolbar Principal.
    """

    __gtype_name__ = 'JAMediaEditorMenu'

    __gsignals__ = {
    'accion_proyecto': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, (GObject.TYPE_STRING, )),
    'accion_archivo': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, (GObject.TYPE_STRING, )),
    'accion_ver': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, (GObject.TYPE_STRING,
        GObject.TYPE_BOOLEAN)),
    'accion_codigo': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, (GObject.TYPE_STRING, )),
    'run_jamediapygihack': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, []),
    'help': (GObject.SIGNAL_RUN_LAST,
        GObject.TYPE_NONE, (GObject.TYPE_STRING,
        GObject.TYPE_STRING))}

    def __init__(self, accel_group):

        Gtk.MenuBar.__init__(self)

        # GtkMenuItem > GtkAccelLabel
        self.creditos = False
        self.dict_archivo = {}
        self.dict_proyecto = {}

        item_proyectos = Gtk.MenuItem('Proyecto')
        item_archivos = Gtk.MenuItem('Archivo')
        item_edicion = Gtk.MenuItem('Edición')
        item_ver = Gtk.MenuItem('Ver')
        item_codigo = Gtk.MenuItem('Código')
        item_ayuda = Gtk.MenuItem('Ayuda')

        menu_proyectos = Gtk.Menu()
        menu_archivos = Gtk.Menu()
        menu_edicion = Gtk.Menu()
        menu_ver = Gtk.Menu()
        menu_codigo = Gtk.Menu()
        menu_ayuda = Gtk.Menu()

        item_proyectos.set_submenu(menu_proyectos)
        item_archivos.set_submenu(menu_archivos)
        item_edicion.set_submenu(menu_edicion)
        item_ver.set_submenu(menu_ver)
        item_codigo.set_submenu(menu_codigo)
        item_ayuda.set_submenu(menu_ayuda)

        self.append(item_proyectos)
        self.append(item_archivos)
        self.append(item_edicion)
        self.append(item_ver)
        self.append(item_codigo)
        self.append(item_ayuda)

        # Items del Menú Proyectos
        item = Gtk.MenuItem('Nuevo . . .')
        item.connect("activate", self.__emit_accion_proyecto, "Nuevo Proyecto")
        menu_proyectos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('N'), Gdk.ModifierType.SHIFT_MASK |
            Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Abrir . . .')
        item.connect("activate", self.__emit_accion_proyecto, "Abrir Proyecto")
        menu_proyectos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('O'), Gdk.ModifierType.SHIFT_MASK |
            Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Editar . . .')
        item.connect("activate",
            self.__emit_accion_proyecto, "Editar Proyecto")
        self.dict_proyecto["Editar Proyecto"] = item
        menu_proyectos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('E'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Cerrar')
        item.connect("activate",
            self.__emit_accion_proyecto, "Cerrar Proyecto")
        self.dict_proyecto["Cerrar Proyecto"] = item
        menu_proyectos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('W'), Gdk.ModifierType.SHIFT_MASK |
            Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Guardar')
        item.connect("activate",
            self.__emit_accion_proyecto, "Guardar Proyecto")
        self.dict_proyecto["Guardar Proyecto"] = item
        menu_proyectos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('S'), Gdk.ModifierType.SHIFT_MASK |
            Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Construir . . .')
        item.connect("activate", self.__emit_accion_proyecto, "Construir")
        self.dict_proyecto["Construir"] = item
        menu_proyectos.append(item)

        # Items del Menú Archivos
        item = Gtk.MenuItem('Nuevo')
        item.connect("activate", self.__emit_accion_archivo, "Nuevo Archivo")
        menu_archivos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('N'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Abrir . . .')
        item.connect("activate", self.__emit_accion_archivo, "Abrir Archivo")
        menu_archivos.append(item)
        item.add_accelerator("activate", accel_group,
            ord('O'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Guardar')
        item.connect("activate", self.__emit_accion_archivo, "Guardar Archivo")
        menu_archivos.append(item)
        self.dict_archivo['Guardar'] = item
        item.add_accelerator("activate", accel_group,
            ord('S'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Guardar Como ...')
        item.connect("activate", self.__emit_accion_archivo, "Guardar Como")
        menu_archivos.append(item)

        # Items del Menú Edición
        item = Gtk.MenuItem('Deshacer')
        item.connect("activate", self.__emit_accion_archivo, "Deshacer")
        menu_edicion.append(item)
        self.dict_archivo['Deshacer'] = item
        item.add_accelerator("activate", accel_group,
            ord('Z'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Rehacer')
        item.connect("activate", self.__emit_accion_archivo, "Rehacer")
        menu_edicion.append(item)
        self.dict_archivo['Rehacer'] = item
        item.add_accelerator("activate", accel_group,
            ord('Z'), Gdk.ModifierType.CONTROL_MASK |
            Gdk.ModifierType.SHIFT_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Cortar')
        item.connect("activate", self.__emit_accion_archivo, "Cortar")
        menu_edicion.append(item)
        self.dict_archivo['Cortar'] = item
        item.add_accelerator("activate", accel_group,
            ord('X'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Copiar')
        item.connect("activate", self.__emit_accion_archivo, "Copiar")
        menu_edicion.append(item)
        self.dict_archivo['Copiar'] = item
        item.add_accelerator("activate", accel_group,
            ord('C'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Pegar')
        item.connect("activate", self.__emit_accion_archivo, "Pegar")
        self.dict_archivo['Pegar'] = item
        menu_edicion.append(item)
        item.add_accelerator("activate", accel_group,
            ord('V'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Seleccionar Todo')
        item.connect("activate",
            self.__emit_accion_archivo, "Seleccionar Todo")
        self.dict_archivo['Seleccionar Todo'] = item
        menu_edicion.append(item)
        item.add_accelerator("activate", accel_group,
            ord('A'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        # Items del menú Ver
        item = Gtk.MenuItem()
        try:
            item.get_child().destroy()
        except:
            pass

        hbox = Gtk.HBox()
        button = Gtk.CheckButton()
        button.set_active(True)
        hbox.pack_start(button, False, False, 0)
        label = Gtk.Label("Numeros de línea")
        hbox.pack_start(label, False, False, 5)
        item.add(hbox)
        item.connect("activate", self.__emit_accion_ver, "Numeracion")
        menu_ver.append(item)

        item = Gtk.MenuItem()
        try:
            item.get_child().destroy()
        except:
            pass

        hbox = Gtk.HBox()
        button = Gtk.CheckButton()
        button.set_active(False)
        hbox.pack_start(button, False, False, 0)
        label = Gtk.Label("Panel inferior")
        hbox.pack_start(label, False, False, 5)
        item.add(hbox)
        item.connect("activate", self.__emit_accion_ver, "Panel inferior")
        menu_ver.append(item)

        item = Gtk.MenuItem()
        try:
            item.get_child().destroy()
        except:
            pass

        hbox = Gtk.HBox()
        button = Gtk.CheckButton()
        button.set_active(True)
        hbox.pack_start(button, False, False, 0)
        label = Gtk.Label("Panel lateral")
        hbox.pack_start(label, False, False, 5)
        item.add(hbox)
        item.connect("activate", self.__emit_accion_ver, "Panel lateral")
        menu_ver.append(item)

        # Items del Menú Código
        item = Gtk.MenuItem('Aumentar')
        item.connect("activate", self.__emit_accion_codigo, "Aumentar")
        self.dict_archivo['Aumentar'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord("+"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Disminuir')
        item.connect("activate", self.__emit_accion_codigo, "Disminuir")
        self.dict_archivo['Disminuir'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('-'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Formato de Texto . . .')
        item.connect("activate", self.__emit_accion_codigo, "Formato")
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('T'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Identar')
        item.connect("activate", self.__emit_accion_codigo, "Identar")
        self.dict_archivo['Identar'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('I'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('De Identar')
        item.connect("activate", self.__emit_accion_codigo, "De Identar")
        self.dict_archivo['De Identar'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('I'), Gdk.ModifierType.CONTROL_MASK |
            Gdk.ModifierType.SHIFT_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Buscar Texto . . .')
        item.connect("activate", self.__emit_accion_codigo, "Buscar Texto")
        self.dict_archivo['Buscar Texto'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('B'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Reemplazar Texto . . .')
        item.connect("activate", self.__emit_accion_codigo, "Reemplazar Texto")
        self.dict_archivo['Reemplazar Texto'] = item
        menu_codigo.append(item)
        item.add_accelerator("activate", accel_group,
            ord('R'), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)

        item = Gtk.MenuItem('Chequear sintaxis')
        item.connect("activate", self.__emit_accion_codigo, "Chequear")
        self.dict_archivo['Chequear'] = item
        menu_codigo.append(item)

        # Items del Menú Ayuda
        item = Gtk.MenuItem('Créditos')
        item.connect("activate", self.__run_about)
        menu_ayuda.append(item)

        item = Gtk.MenuItem('JAMediaPyGiHack')
        item.connect("activate", self.__emit_run_jamediapygihack)
        menu_ayuda.append(item)

        item = Gtk.SeparatorMenuItem()
        menu_ayuda.append(item)

        # Ayuda
        item = MenuJAMediaEditor()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = MenuJAMediaPygiHack()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = Gtk.SeparatorMenuItem()
        menu_ayuda.append(item)

        item = Gtk.MenuItem('Guia para aprender')
        #item.connect("activate", self.__emit_accion, "Programar Clase 0")
        menu_ayuda.append(item)
        item.set_sensitive(False)

        item = Gtk.MenuItem('Guia para enseñar')
        #item.connect("activate", self.__emit_accion, "Programar Clase 0")
        menu_ayuda.append(item)
        item.set_sensitive(False)

        item = Gtk.SeparatorMenuItem()
        menu_ayuda.append(item)

        item = MenuBash()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = MenuProgramar_python()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = MenuProgramar_pygame()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = MenuProgramar_python_gtk()
        item.connect("help", self.__emit_help)
        menu_ayuda.append(item)

        item = Gtk.SeparatorMenuItem()
        menu_ayuda.append(item)

        item = Gtk.MenuItem('Ejemplos')
        #item.connect("activate", self.__emit_accion, "Programar Clase 0")
        menu_ayuda.append(item)
        item.set_sensitive(False)

        self.show_all()

    def __emit_help(self, widget, text, titulo):
        self.emit("help", text, titulo)

    def __emit_run_jamediapygihack(self, widget):
        self.emit('run_jamediapygihack')

    def __run_about(self, widget):
        if self.creditos:
            self.creditos.destroy()
            del(self.creditos)
            self.creditos = False
        self.creditos = Creditos(self.get_toplevel())
        self.creditos.run()

    def __emit_accion_codigo(self, widget, accion):
        self.emit('accion_codigo', accion)

    def __emit_accion_ver(self, widget, accion):
        valor = not widget.get_children()[0].get_children()[0].get_active()
        widget.get_children()[0].get_children()[0].set_active(valor)
        self.emit('accion_ver', accion, valor)

    def __emit_accion_archivo(self, widget, accion):
        self.emit('accion_archivo', accion)

    def __emit_accion_proyecto(self, widget, accion):
        self.emit('accion_proyecto', accion)

    def __activar(self, option):
        if not option.get_sensitive():
            option.set_sensitive(True)

    def __desactivar(self, option):
        if option.get_sensitive():
            option.set_sensitive(False)

    def activar_proyecto(self, sensitive):
        # Activa o desactiva opciones.
        if sensitive:
            map(self.__activar, self.dict_proyecto.values())
        else:
            map(self.__desactivar, self.dict_proyecto.values())

    def update_archivos(self, _dict):
        # Activa o desactiva opciones.
        activar = []
        desactivar = []

        if _dict['rehacer']:
            activar.append(self.dict_archivo['Rehacer'])
        else:
            desactivar.append(self.dict_archivo['Rehacer'])

        if _dict['deshacer']:
            activar.append(self.dict_archivo['Deshacer'])
        else:
            desactivar.append(self.dict_archivo['Deshacer'])

        if _dict['modificado']:
            activar.append(self.dict_archivo['Guardar'])
        else:
            desactivar.append(self.dict_archivo['Guardar'])

        if _dict['clipboard_texto']:
            activar.append(self.dict_archivo['Pegar'])
        else:
            desactivar.append(self.dict_archivo['Pegar'])

        if _dict['texto_seleccionado']:
            activar.extend([
                self.dict_archivo['Cortar'],
                self.dict_archivo['Copiar'],
                ])
        else:
            desactivar.extend([
                self.dict_archivo['Cortar'],
                self.dict_archivo['Copiar'],
                ])

        if _dict['tiene_texto']:
            activar.extend([
                self.dict_archivo['Identar'],
                self.dict_archivo['De Identar'],
                self.dict_archivo['Buscar Texto'],
                self.dict_archivo['Reemplazar Texto'],
                self.dict_archivo['Seleccionar Todo'],
                self.dict_archivo['Chequear'],
                self.dict_archivo['Disminuir'],
                self.dict_archivo['Aumentar'],
                ])
        else:
            desactivar.extend([
                self.dict_archivo['Identar'],
                self.dict_archivo['De Identar'],
                self.dict_archivo['Buscar Texto'],
                self.dict_archivo['Reemplazar Texto'],
                self.dict_archivo['Seleccionar Todo'],
                self.dict_archivo['Chequear'],
                self.dict_archivo['Disminuir'],
                self.dict_archivo['Aumentar'],
                ])

        map(self.__activar, activar)
        map(self.__desactivar, desactivar)