Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian García <cristian99garcia@gmail.com>2013-10-10 16:32:23 (GMT)
committer Cristian García <cristian99garcia@gmail.com>2013-10-10 16:32:23 (GMT)
commita6dd9df1195a275caebfcf0c04611ced8c7e069b (patch)
tree0407ac630490cf01801b7a7c94040a0cd94a946c
parentffda62d11b5b56fac89309d63f56c0038dc2e361 (diff)
Borrando la parte de Sugar, ya que se quiere esperar a que se termine el programa y en ese momento portarlo
-rw-r--r--CExplorer.py176
1 files changed, 93 insertions, 83 deletions
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 <cristian99garcia@gmail.com>
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()