Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian 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)
commit17e360bb14fd43bf4f6d197ef050c9fe17b70155 (patch)
treefb6f89fa9b7b3f9d232200af15e8f694dbd6776e
parent3cf11f8f97e3b7038bd79f50fe700146e50e3864 (diff)
Casi terminando la funcion 'intentar_abrir()'
-rw-r--r--Archivos.py51
-rw-r--r--Archivos.pycbin15449 -> 16433 bytes
-rw-r--r--Widgets.py43
-rw-r--r--Widgets.pycbin10982 -> 12014 bytes
-rw-r--r--activity/icon.svg60
-rw-r--r--window.py32
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
index 2d3ea17..a5a5bfa 100644
--- a/Archivos.pyc
+++ b/Archivos.pyc
Binary files differ
diff --git a/Widgets.py b/Widgets.py
index 8b4a4bb..02c8e1b 100644
--- a/Widgets.py
+++ b/Widgets.py
@@ -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
index 4320acc..493f7a1 100644
--- a/Widgets.pyc
+++ b/Widgets.pyc
Binary files differ
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
diff --git a/window.py b/window.py
index e4d2bf6..e4b34d8 100644
--- a/window.py
+++ b/window.py
@@ -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):