diff options
author | Cristian García <cristian@cristian.(none)> | 2013-04-11 21:40:06 (GMT) |
---|---|---|
committer | Cristian García <cristian@cristian.(none)> | 2013-04-11 21:40:06 (GMT) |
commit | 17e360bb14fd43bf4f6d197ef050c9fe17b70155 (patch) | |
tree | fb6f89fa9b7b3f9d232200af15e8f694dbd6776e | |
parent | 3cf11f8f97e3b7038bd79f50fe700146e50e3864 (diff) |
Casi terminando la funcion 'intentar_abrir()'
-rw-r--r-- | Archivos.py | 51 | ||||
-rw-r--r-- | Archivos.pyc | bin | 15449 -> 16433 bytes | |||
-rw-r--r-- | Widgets.py | 43 | ||||
-rw-r--r-- | Widgets.pyc | bin | 10982 -> 12014 bytes | |||
-rw-r--r-- | activity/icon.svg | 60 | ||||
-rw-r--r-- | window.py | 32 |
6 files changed, 113 insertions, 73 deletions
diff --git a/Archivos.py b/Archivos.py index 22a6200..16a3a56 100644 --- a/Archivos.py +++ b/Archivos.py @@ -2,14 +2,11 @@ # -*- coding:UTF-8 -*- import os -import mimetypes import commands -import gi from gi.repository import Gtk from gi.repository import GdkPixbuf from gi.repository import GObject -from gi.repository import Gio IMAGENES = os.listdir(os.path.join(os.path.dirname(__file__), 'Iconos/')) DIRECCION = os.path.join(os.path.dirname(__file__), 'Iconos/') @@ -30,13 +27,43 @@ share = os.path.join(local, 'share') trash = os.path.join(share, 'Trash') PAPELERA = os.path.join(trash, 'files') +programas_instalados = [] +direcciones_prgramas = [] +aplicaciones = '/usr/share/applications' +if os.path.exists(aplicaciones) and os.path.isdir(aplicaciones): + lista = os.listdir(aplicaciones) + for x in lista: + direccion = aplicaciones + '/' + x + if os.path.isfile(direccion): + texto = open(direccion).read() + + if 'MimeType' in texto or 'mime-type' in texto or 'mime-type' in texto: + programas_instalados.append(texto) + direcciones_prgramas.append(direccion) def intentar_abrir(direccion): + """Por ahora no hace nada""" + + tipo = commands.getoutput('file %s --mime-type -b' % direccion) + tipo = tipo.split('/')[0] - print('No se puede abrir "%s"' % (direccion)) + aplicaciones_utiles = [] + for x in programas_instalados: + if tipo in x: + aplicaciones_utiles.append(x) + + texto = aplicaciones_utiles[0] + print texto + """ + for linea in aplicaciones_utiles[0].splitlines: + if 'exec' in linea: + commands.getoutput(direcciones_prgramas[numero] + ' ' + direccion) + break + """ def crear_papelera(): + """Crea los directorios de la papelera""" def crear(direccion): if not os.path.exists(direccion): @@ -53,6 +80,8 @@ def crear_papelera(): def get_tamanio(direccion): + """Obtiene una dirección y devuelve su + tamanio, si es que hay permisos para leerla""" lectura, escritura, ejecucion = get_permisos(direccion) @@ -100,6 +129,8 @@ def get_tamanio(direccion): def get_permisos(direccion): + """Obtiene una dirección, y devuelve sí tiene + permisos de lectura, escritura y ejecucución""" if os.path.exists(direccion): lectura = os.access(direccion, os.R_OK) @@ -171,16 +202,19 @@ def get_pixbuf(direccion): def get_carpeta_contenedora(direccion): + """Devuelve la carpeta contenedara a la introducida, + a menos que se esté en el directorio raíz, en ese caso + simplemente devuelve el directorio raíz""" - list = direccion.split('/') + lista = direccion.split('/') try: direccion = '/' - numero = len(list) - 1 - while not bool(list[numero]): + numero = len(lista) - 1 + while not bool(lista[numero]): numero -= 1 - for directorio in list[:numero]: + for directorio in lista[:numero]: if directorio: direccion = direccion + directorio + '/' @@ -191,6 +225,7 @@ def get_carpeta_contenedora(direccion): class Archivos(): + """Clase para gestionar archivos""" def __init__(self): diff --git a/Archivos.pyc b/Archivos.pyc Binary files differindex 2d3ea17..a5a5bfa 100644 --- a/Archivos.pyc +++ b/Archivos.pyc @@ -2,7 +2,6 @@ # -*- coding:UTF-8 -*- import os -import commands import Archivos import gi @@ -10,17 +9,10 @@ from gi.repository import Gtk from gi.repository import GObject from gi.repository import GdkPixbuf from gi.repository import Gio +from gi.repository import Pango COPIAR = None -def get_accion(cadena, dato): - """Devuelve la dirección introducida, - sí es que existe o de lo contrario, - deuelve False""" - - if dato: - return os.path.exists(dato) - class Area_de_Montajes(Gtk.TreeView): """Parte de la entana en la que se muestran @@ -320,3 +312,36 @@ class Barra_de_Estado(Gtk.Statusbar): """Llama a la función "set_text()" con '' como parámetro""" self.set_text('') + + +class DialogoError(Gtk.Dialog): + """Un diálogo que muestra el error que sucedió""" + + def __init__(self, error, direccion, padre): + + Gtk.Dialog.__init__(self, parent=padre) + + if error == 'inexistente': + texto = 'Al parecer la dirección:\n"%s"\nno existe, compruebe lo introducido, eh intente de nuevo' % direccion + + elif error == 'abrir': + texto = 'TENGO QUE ARREGLAR ESTO!!!!' + + self.set_modal(True) + + label1 = Gtk.Label('Error al abrir la dirección...') + label2 = Gtk.Label(texto) + + label1.modify_font(Pango.FontDescription('bold 15')) + label2.modify_font(Pango.FontDescription('12')) + + self.vbox.pack_start(label1, False, False, 10) + self.vbox.pack_start(label2, False, False, 0) + + boton = Gtk.Button(None, Gtk.STOCK_OK) + boton.connect('clicked', self.cerrar) + self.action_area.add(boton) + + def cerrar(self, widget): + + self.destroy() diff --git a/Widgets.pyc b/Widgets.pyc Binary files differindex 4320acc..493f7a1 100644 --- a/Widgets.pyc +++ b/Widgets.pyc diff --git a/activity/icon.svg b/activity/icon.svg index 688ffc3..b92a235 100644 --- a/activity/icon.svg +++ b/activity/icon.svg @@ -1,54 +1,16 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - height="55px" - viewBox="0 0 55 55" - width="55px" - id="svg2" - version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="user-documents.svg"> - <metadata - id="metadata18"> +<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ + <!ENTITY stroke_color "#010101"> + <!ENTITY fill_color "#ffffff"> +]><svg height="55px" id="svg2" inkscape:version="0.48.1 r9760" sodipodi:docname="user-documents.svg" version="1.1" viewBox="0 0 55 55" width="55px" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"> + <metadata id="metadata18"> <rdf:RDF> - <cc:Work - rdf:about=""> + <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> </cc:Work> </rdf:RDF> </metadata> - <defs - id="defs16" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1200" - inkscape:window-height="837" - id="namedview14" - showgrid="false" - inkscape:zoom="4.2909091" - inkscape:cx="27.966102" - inkscape:cy="27.5" - inkscape:window-x="0" - inkscape:window-y="31" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <path - d="m 7,14 5,-5 10,0 5,5 20,0 0,31 -40,0 z" - style="fill:#FFFFFF;stroke:#010101;stroke-width:3;stroke-linecap:round;stroke-linejoin:round" - id="path4" /> -</svg> + <defs id="defs16"/> + <sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview14" inkscape:current-layer="svg2" inkscape:cx="27.966102" inkscape:cy="27.5" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="837" inkscape:window-maximized="1" inkscape:window-width="1200" inkscape:window-x="0" inkscape:window-y="31" inkscape:zoom="4.2909091" objecttolerance="10" pagecolor="#ffffff" showgrid="false"/> + <path d="m 7,14 5,-5 10,0 5,5 20,0 0,31 -40,0 z" id="path4" style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:3;stroke-linecap:round;stroke-linejoin:round"/> +</svg>
\ No newline at end of file @@ -6,13 +6,18 @@ import os 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 +from Widgets import Area_de_Montajes +from Widgets import Area +from Widgets import Entrada +from Widgets import Barra_de_Estado +from Widgets import DialogoError + class CExplorer(Gtk.Window): @@ -31,11 +36,11 @@ class CExplorer(Gtk.Window): self.carpetas = [] self.vbox = Gtk.VBox() - self.entrada = Wid.Entrada(self.direccion) + self.entrada = Entrada(self.direccion) scrolled_montajes = Gtk.ScrolledWindow() scrolled = Gtk.ScrolledWindow() - self.area_montajes = Wid.Area_de_Montajes(self) - self.area = Wid.Area(self) + self.area_montajes = Area_de_Montajes(self) + self.area = Area(self) self.entrada.connect('activate', self.nueva_direccion) self.entrada.connect('icon-release', self.nueva_direccion) @@ -79,7 +84,7 @@ class CExplorer(Gtk.Window): #****** Otros Widgets ****** paned = Gtk.Paned() - self.b_estado = Wid.Barra_de_Estado() + self.b_estado = Barra_de_Estado() self.vbox.pack_start(self.entrada, False, False, 5) self.vbox.pack_start(paned, True, True, 0) @@ -102,9 +107,10 @@ class CExplorer(Gtk.Window): self.show_all() def abrir(self, directorio): - """Abre el directorio especificado""" + """Intenta abrir el directorio especificado""" lectura, escritura, ejecucion = Archivos.get_permisos(directorio) + texto = None if lectura and \ (os.path.isdir(directorio) or os.path.ismount(directorio)): @@ -146,7 +152,19 @@ class CExplorer(Gtk.Window): Archivos.intentar_abrir(directorio) else: - print 'La dirección no existe o no tiene permisos para leerla' + texto = 'inexistente' + + if texto: + dialogo = DialogoError(str(texto), directorio, self) + + dialogo.show_all() + + try: + self.abrir(self.direccion) + + except: + direccion = Archivos.get_direccion_arriba(self.direccion) + self.abrir(direccion) def tecla_presionada(self, widget, event): |