예제 #1
0
class Navegador(Gtk.HPaned):
    __gsignals__ = {
        "info": (GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE,
                 (GObject.TYPE_PYOBJECT, ))
    }

    def __init__(self):
        Gtk.HPaned.__init__(self)
        self.api = None
        self.descriptor = None
        self.pack1(self.area_izquierda_del_panel(), resize=False, shrink=True)
        self.pack2(self.area_derecha_del_panel(), resize=True, shrink=True)
        self.show_all()

        self.api.connect('objeto', self.ver_objeto)
        self.api.connect('info', self.re_emit_info)

    def re_emit_info(self, widget, objeto):
        self.emit('info', objeto)

    def ver_objeto(self, widget, objeto):
        os.chdir(DATOS)
        try:
            if objeto:
                pydoc.writedoc(objeto)
                archivo = os.path.join(DATOS, '%s.html' % (objeto.__name__))
                self.descriptor.open(archivo)
            else:
                self.descriptor.open('')
        except:
            self.descriptor.open('')

    def area_izquierda_del_panel(self):
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)

        # gtk 2
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)

        frame = Gtk.Frame()
        frame.set_label("Objects")
        frame.set_label_align(0.5, 0.5)
        combo = Gtk.ComboBoxText()
        for item in PaquetesObjetos1:
            combo.append_text(item)
        combo.connect('changed', self.get_item)
        frame.add(combo)
        hbox.pack_start(frame, True, True, 2)

        frame = Gtk.Frame()
        frame.set_label("No Objects")
        frame.set_label_align(0.5, 0.5)
        combo2 = Gtk.ComboBoxText()
        for item in PaquetesNoObjetos1:
            combo2.append_text(item)
        combo2.connect('changed', self.get_item)
        frame.add(combo2)
        hbox.pack_start(frame, True, True, 2)

        frame = Gtk.Frame()
        frame.set_label("gir-1.1-gtk-2.0")
        frame.set_label_align(0.5, 0.5)
        frame.add(hbox)
        vbox.pack_start(frame, False, False, 0)

        # gtk 3
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)

        frame = Gtk.Frame()
        frame.set_label("Objects")
        frame.set_label_align(0.5, 0.5)
        combo = Gtk.ComboBoxText()
        for item in PaquetesObjetos2:
            combo.append_text(item)
        combo.connect('changed', self.get_item)
        frame.add(combo)
        hbox.pack_start(frame, True, True, 2)

        frame = Gtk.Frame()
        frame.set_label("No Objects")
        frame.set_label_align(0.5, 0.5)
        combo2 = Gtk.ComboBoxText()
        for item in PaquetesNoObjetos2:
            combo2.append_text(item)
        combo2.connect('changed', self.get_item)
        frame.add(combo2)
        hbox.pack_start(frame, True, True, 2)

        frame = Gtk.Frame()
        frame.set_label("gir-1.2-gtk-3.0")
        frame.set_label_align(0.5, 0.5)
        frame.add(hbox)
        vbox.pack_start(frame, False, False, 0)

        scrolled_window = Gtk.ScrolledWindow()
        scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC,
                                   Gtk.PolicyType.AUTOMATIC)
        self.api = Api()
        scrolled_window.add_with_viewport(self.api)
        vbox.pack_start(scrolled_window, True, True, 0)

        combo.set_active(0)

        return vbox

    def area_derecha_del_panel(self):
        scrolled_window = Gtk.ScrolledWindow()
        scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC,
                                   Gtk.PolicyType.AUTOMATIC)
        self.descriptor = WebKit.WebView()
        scrolled_window.add_with_viewport(self.descriptor)
        return scrolled_window

    def get_item(self, widget):
        self.api.llenar([widget.get_active_text()])