From a6dd9df1195a275caebfcf0c04611ced8c7e069b Mon Sep 17 00:00:00 2001 From: Cristian García Date: Thu, 10 Oct 2013 16:32:23 +0000 Subject: Borrando la parte de Sugar, ya que se quiere esperar a que se termine el programa y en ese momento portarlo --- diff --git a/CExplorer.py b/CExplorer.py index b1d6094..44acc97 100644 --- a/CExplorer.py +++ b/CExplorer.py @@ -1,30 +1,32 @@ #!/usr/share/env python # -*- coding:UTF-8 -*- -# CExplorer.py por: +# window.py por: # Cristian García import os +import thread +import time import Archivos -import Widgets as Wid from gi.repository import Gtk from gi.repository import Gdk from gi.repository import GObject from gi.repository import GdkPixbuf -import sugar3 -from sugar3.activity import activity -from sugar3.activity.widgets import StopButton -from sugar3.activity.widgets import ActivityToolbarButton -from sugar3.graphics.toolbarbox import ToolbarBox -from sugar3.graphics.toolbutton import ToolButton +from Widgets import AreadeMontajes +from Widgets import Area +from Widgets import Toolbar +from Widgets import Entrada +from Widgets import BarradeEstado +from Widgets import DialogoError + screen = Gdk.Screen.get_default() css_provider = Gtk.CssProvider() style_path = 'CExplorer.css' - + css_provider.load_from_path(style_path) context = Gtk.StyleContext() @@ -34,15 +36,18 @@ context.add_provider_for_screen( Gtk.STYLE_PROVIDER_PRIORITY_USER) -class CExplorer(activity.Activity): +class CExplorer(Gtk.Window): __gsignals__ = { - 'change-directory': (GObject.SIGNAL_RUN_FIRST, - GObject.TYPE_NONE, [])} + 'change-directory': (GObject.SIGNAL_RUN_FIRST, None, []) + } + + def __init__(self): - def __init__(self, handle): + Gtk.Window.__init__(self) - activity.Activity.__init__(self, handle) + self.set_size_request(600, 400) + self.set_title('CExplorer') self.ocultos = False self.direccion = os.path.expanduser('~') @@ -51,54 +56,21 @@ class CExplorer(activity.Activity): self.carpetas = [] self.vbox = Gtk.VBox() - self.entrada = Wid.Entrada(self.direccion) + self.toolbar = Toolbar() + self.entrada = Entrada() + self.area = Area() + self.area_montajes = AreadeMontajes(self) + self.b_estado = BarradeEstado() + + item = Gtk.ToolItem() + switch = Gtk.Switch() + switch.connect('notify::active', self.change_ocultos) + item.add(switch) + self.toolbar.add(item) + scrolled_montajes = Gtk.ScrolledWindow() scrolled = Gtk.ScrolledWindow() - self.area_montajes = Wid.AreadeMontajes(self) - self.area = Wid.Area(self) - - #****** Toolbar ****** - toolbarbox = ToolbarBox() - activity_button = ActivityToolbarButton(self) - - toolbarbox.toolbar.insert(activity_button, 0) - toolbarbox.toolbar.insert(Gtk.SeparatorToolItem(), -1) - - b_harddisk = ToolButton(Gtk.STOCK_HARDDISK) - b_home = ToolButton(Gtk.STOCK_HOME) - b_go_up = ToolButton(Gtk.STOCK_GO_UP) - b_refresh = ToolButton(Gtk.STOCK_REFRESH) - b_ocults = Gtk.ToolButton(Gtk.STOCK_YES) - - b_harddisk.set_tooltip_text('Abrir al directorio raíz') - b_home.set_tooltip_text('Abrir al directorio personal') - b_go_up.set_tooltip_text('Abrir al la carpeta contenedora de la actual') - b_refresh.set_tooltip_text('Recargar') - b_ocults.set_tooltip_text('Mostrar archivos ocultos') - - toolbarbox.toolbar.insert(b_harddisk, -1) - toolbarbox.toolbar.insert(b_home, -1) - toolbarbox.toolbar.insert(b_go_up, -1) - toolbarbox.toolbar.insert(b_refresh, -1) - toolbarbox.toolbar.insert(Gtk.SeparatorToolItem(), -1) - toolbarbox.toolbar.insert(b_ocults, -1) - - separador = Gtk.SeparatorToolItem() - separador.set_expand(True) - separador.set_draw(False) - toolbarbox.toolbar.insert(separador, -1) - - stopbtn = StopButton(self) - toolbarbox.toolbar.insert(stopbtn, -1) - self.set_toolbar_box(toolbarbox) - - #****** Otros Widgets ****** paned = Gtk.Paned() - self.b_estado = Wid.BarradeEstado() - - self.vbox.pack_start(self.entrada, False, False, 5) - self.vbox.pack_start(paned, True, True, 0) - self.vbox.pack_start(self.b_estado, False, False, 0) scrolled_montajes.add(self.area_montajes) scrolled.add(self.area) @@ -106,22 +78,41 @@ class CExplorer(activity.Activity): paned.pack1(scrolled_montajes, False, True) paned.pack2(scrolled, True, True) - self.entrada.activate() + self.vbox.pack_start(self.toolbar, False, False, 0) + self.vbox.pack_start(self.entrada, False, False, 5) + self.vbox.pack_start(paned, True, True, 0) + self.vbox.pack_start(self.b_estado, False, False, 0) - self.entrada.connect('activate', self.nueva_direccion) - self.area_montajes.connect('change-directory', self.abrir_desde_widget) - b_harddisk.connect('clicked', self.nueva_direccion, '/') - b_home.connect('clicked', self.nueva_direccion, '~') - b_go_up.connect('clicked', self.abrir_arriba) - b_refresh.connect('clicked', self.update) - b_ocults.connect('clicked', self.change_ocultos) self.connect('destroy', Gtk.main_quit) self.connect('key-press-event', self.tecla_presionada) self.connect('change-directory', self.borrar_todo) + self.toolbar.connect('accion', self.set_accion) + self.entrada.connect('activate', self.nueva_direccion) + self.area.connect('cambio-de-direccion', self.abrir_desde_widget) + self.area.connect('cambio-de-mensaje', self.cambio_de_mensaje) + self.area.connect('solicitar-direccion', self.setear_direccion) + + self.abrir(self.direccion) - self.set_canvas(self.vbox) + self.add(self.vbox) self.show_all() + def set_accion(self, widget=None, accion=None): + + if accion == 'raiz': + self.direccion = '/' + self.update() + + elif accion == 'personal': + self.direccion = os.path.expanduser('~/') + self.update() + + elif accion == 'arriba': + self.abrir_arriba() + + elif accion == 'recargar': + self.update() + def abrir(self, directorio): """Abre el directorio especificado""" @@ -163,14 +154,16 @@ class CExplorer(activity.Activity): self.area.agregar(archivo, self.direccion) elif os.path.isfile(directorio): - Archivos.intentar_abrir(directorio) - self.estado_cambiado() + comando = Archivos.intentar_abrir(directorio) + + if 'error' in comando: + texto = 'abrir archivo' else: texto = 'inexistente' if texto: - dialogo = DialogoError(str(texto), directorio, self) + dialogo = DialogoError(texto, directorio, self) dialogo.show_all() @@ -185,7 +178,7 @@ class CExplorer(activity.Activity): except: self.abrir(os.path.expanduser('~')) - self.estado_cambiado() + self.setear_direccion(self.area) def tecla_presionada(self, widget, event): @@ -197,7 +190,7 @@ class CExplorer(activity.Activity): lectura, escritura, ejecucion = Archivos.get_permisos(self.direccion) - if self.area.get_selected_items(): + if self.area.get_selected_items() and self.area.has_focus(): path = self.area.get_selected_items()[0] iter = self.area.modelo.get_iter(path) @@ -222,11 +215,18 @@ class CExplorer(activity.Activity): if lectura and escritura: self.crear_directorio() + def setear_direccion(self, widget): + + widget.set_direccion(self.direccion) + def abrir_desde_widget(self, widget, direccion): + """Llama a la función 'abrir'.""" self.abrir(direccion) def crear_directorio(self, *args): + """Abre el un diálogo para crear un directorio, sí es + que en el directorio actual hay permisos suficientes""" lectura, escritura, ejecucion = Archivos.get_permisos(self.direccion) @@ -236,6 +236,8 @@ class CExplorer(activity.Activity): crear.show_all() def borrar_archivo(self, *args): + """Abre un diálogo para borrar el archivo o la carpeta + seleccionada, sí es que hay permisos suficientes""" direccion = self.get_nueva_direccion() lectura, escritura, ejecucion = Archivos.get_permisos(direccion) @@ -250,12 +252,15 @@ class CExplorer(activity.Activity): pass def preferencias(self, *args): + """Abre un diálogo con las propiedades del archivo, con opciones + de configurar todo lo que se pueda, teniendo en cuenta los permisos""" direccion = self.get_nueva_direccion() lectura, escritura, ejecucion = Archivos.get_permisos(direccion) if lectura: propiedades = Archivos.Propiedades(direccion) + propiedades.connect('cambio-de-propiedades', self.update) propiedades.show_all() @@ -285,6 +290,11 @@ class CExplorer(activity.Activity): self.area.borrar_area() self.b_estado.borrar() + def cambio_de_mensaje(self, widget, mensaje): + """Llama a la función 'set_text', de la clase 'BarradeEstado'""" + + self.b_estado.set_text(mensaje) + def update(self, *args): """Recarga el directorio acual""" @@ -300,20 +310,16 @@ class CExplorer(activity.Activity): self.entrada.activate() self.update() - def change_ocultos(self, widget): - """Cambia de mostrar ocultos a no mostrar ocultos o viceversa""" - - self.ocultos = not self.ocultos - - if self.ocultos: - widget.set_icon_name(Gtk.STOCK_NO) - - else: - widget.set_icon_name(Gtk.STOCK_YES) + def change_ocultos(self, widget, active): + """Muestra o no muestra archivos ocultos""" + self.ocultos = widget.get_active() self.update() def get_nueva_direccion(self): + """Sí hay un item seleccionado en el area de navegación, + devuelve la dirección que conduce a él, de lo contrario, + devuelve la dirección actual""" try: direccion = self.direccion @@ -328,3 +334,7 @@ class CExplorer(activity.Activity): except: return self.direccion + +if __name__ == '__main__': + CExplorer() + Gtk.main() -- cgit v0.9.1