-
Notifications
You must be signed in to change notification settings - Fork 5
/
interfaz.py
166 lines (145 loc) · 7.23 KB
/
interfaz.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
from appJar import gui
import constantes
import utiles
import waterpy
import os
import sys
raiz = {}
# Esta función es para PyInstaller
def resolver_ruta(ruta_relativa):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, ruta_relativa)
return os.path.join(os.path.abspath('.'), ruta_relativa)
def seleccionar_marca_de_agua():
if "marca_de_agua" in raiz:
del raiz["marca_de_agua"]
marca_de_agua = app.openBox(title="Selecciona la marca de agua", dirName=None, fileTypes=None, asFile=False, parent=None)
print("A ver la marca de agua:", marca_de_agua)
if utiles.es_extension_valida(utiles.obtener_extension(marca_de_agua)):
raiz["marca_de_agua"] = marca_de_agua
app.setMessage("msgInfoMarca", "OK: " + marca_de_agua)
else:
app.setMessage("msgInfoMarca", "Marca de agua inválida")
def seleccionar_carpeta():
if "imagenes" in raiz:
del raiz["imagenes"]
directorio = app.directoryBox(title="Selecciona una carpeta con imágenes", dirName=None, parent=None)
print("A ver el directorio:", directorio)
if directorio is not None:
imagenes = utiles.obtener_lista_de_imagenes_en_directorio(directorio)
procesar_lista_de_imagenes(imagenes)
app.setMessage("msgInfoFuente", "OK: {}\nSe creará una carpeta en esa ubicación, y las imágenes marcadas serán colocadas dentro".format(directorio) )
else:
app.setMessage("msgInfoFuente", "Directorio inválido")
def seleccionar_imagen():
if "imagenes" in raiz:
del raiz["imagenes"]
imagen = app.openBox(title="Selecciona la imagen", dirName=None, fileTypes=None, asFile=False, parent=None)
print("A ver la imagen: '{}'".format(imagen))
if utiles.es_extension_valida(utiles.obtener_extension(imagen)):
procesar_lista_de_imagenes([imagen])
app.setMessage("msgInfoFuente", "OK: " + imagen)
else:
app.setMessage("msgInfoFuente", "Imagen inválida")
def mostrar_creditos():
app.showSubWindow("Créditos")
def poner_marca_de_agua():
if validar():
argumentos = {
"porcentaje_opacidad": int(app.getScale("3 - Porcentaje de opacidad")),
"separacion_vertical": int(app.getEntry("e1")),
"separacion_horizontal": int(app.getEntry("e2")),
"opcion_alineamiento_horizontal": app.getRadioButton("separacion_horizontal"),
"opcion_alineamiento_vertical": app.getRadioButton("separacion_vertical"),
}
waterpy.poner_marca_de_agua(raiz["imagenes"], raiz["marca_de_agua"], **argumentos)
def validar():
# Comprobar si tenemos imágenes y marca de agua
if not "imagenes" in raiz:
app.warningBox("Aviso", "No has seleccionado ninguna imagen o carpeta", parent=None)
return False
if not "marca_de_agua" in raiz:
app.warningBox("Aviso", "No has seleccionado la marca de agua", parent=None)
return False
try:
valor = int(app.getEntry("e1"))
except ValueError:
app.warningBox("Aviso", "Escribe la separación vertical en pixeles, o déjala en 0", parent=None)
return False
try:
valor = int(app.getEntry("e2"))
except ValueError:
app.warningBox("Aviso", "Escribe la separación horizontal en pixeles, o déjala en 0", parent=None)
return False
return True
def procesar_lista_de_imagenes(imagenes):
raiz["imagenes"] = imagenes
app = gui("WaterPy | Poner marca de agua con Python", "600x400", showIcon=False)
"""
Otra ventana para créditos
"""
app.startSubWindow("Créditos",modal=True)
app.setFont(12)
app.addMessage("creditos", """Aplicación para poner marcas de agua usando Python, PIL y appJar
Creada por @parzibyte
Este programa es totalmente gratuito y open source
Iconos usados
Icons made by Smashicons [https://www.flaticon.com/authors/smashicons] from Flaticon [https://www.flaticon.com] is licensed by CC 3.0 BY [http://creativecommons.org/licenses/by/3.0/]
Icons made by Smashicons [https://www.flaticon.com/authors/smashicons] from Flaticon [https://www.flaticon.com] is licensed by CC 3.0 BY [http://creativecommons.org/licenses/by/3.0/]
Icons made by surang [https://www.flaticon.com/authors/surang] from Flaticon [https://www.flaticon.com] is licensed by CC 3.0 BY [http://creativecommons.org/licenses/by/3.0/]
Icons made by Maxim Basinski [https://www.flaticon.com/authors/maxim-basinski] from Flaticon [https://www.flaticon.com] is licensed by CC 3.0 BY [http://creativecommons.org/licenses/by/3.0/]
""")
app.addWebLink("Web del programador", "https://parzibyte.me", 1, 0)
app.addWebLink("Código en GitHub", "https://github.com/parzibyte/waterpy", 2, 0)
app.addWebLink("Página de WaterPy", "http://appsperfectas.com/apps/waterpy", 3, 0)
app.stopSubWindow()
"""
Ahora sí la principal
"""
app.addLabel("l1", "1 - Selecciona una imagen o carpeta", 0,0)
app.setLabelAlign("l1", "left")
app.addNamedButton("Carpeta", "btnCarpeta", seleccionar_carpeta, 1, 0)
app.setButtonImage("btnCarpeta", resolver_ruta("./assets/carpeta.png"), align="right")
app.addNamedButton("Imagen", "btnImagen", seleccionar_imagen,1,1)
app.setButtonImage("btnImagen", resolver_ruta("./assets/imagen.png"), align="right")
app.addMessage("msgInfoFuente", "", 2,0)
app.setMessageFg("msgInfoFuente", "#304FFE")
app.setMessageAlign("msgInfoFuente", "left")
app.setMessageWidth("msgInfoFuente", 350)
app.addLabel("l2", "2 - Ahora selecciona la marca de agua", 3,0)
app.setLabelAlign("l2", "left")
app.addNamedButton("Seleccionar marca de agua...", "btnMarcaDeAgua", seleccionar_marca_de_agua,4,0)
app.setButtonImage("btnMarcaDeAgua", resolver_ruta("./assets/lapiz.png"), align="right")
app.addMessage("msgInfoMarca", "", 5,0)
app.setMessageAlign("msgInfoMarca", "left")
app.setMessageWidth("msgInfoMarca", 350)
app.setMessageFg("msgInfoMarca", "#304FFE")
app.addLabelScale("3 - Porcentaje de opacidad", 6,0)
app.setScaleRange("3 - Porcentaje de opacidad", 0, 100, 50)
app.showScaleValue("3 - Porcentaje de opacidad", True)
app.setScaleIncrement("3 - Porcentaje de opacidad", 1)
app.addLabel("l3", "4 - Posición de la marca de agua",7,0)
app.setLabelAlign("l3", "left")
app.addLabel("l4", "Horizontal",8,0)
app.setLabelAlign("l4", "center")
app.addRadioButton("separacion_horizontal", constantes.OPCION_HORIZONTAL_IZQUIERDA, 9, 0)
app.addRadioButton("separacion_horizontal", constantes.OPCION_HORIZONTAL_DERECHA, 10, 0)
app.addRadioButton("separacion_horizontal", constantes.OPCION_HORIZONTAL_CENTRO, 11, 0)
app.addLabel("l5", "Vertical",8,1)
app.setLabelAlign("l5", "center")
app.addRadioButton("separacion_vertical", constantes.OPCION_VERTICAL_ARRIBA, 9, 1)
app.addRadioButton("separacion_vertical", constantes.OPCION_VERTICAL_CENTRO, 10, 1)
app.addRadioButton("separacion_vertical", constantes.OPCION_VERTICAL_ABAJO, 11, 1)
app.addLabel("l6", "Separación vertical en px",12,0)
app.setLabelAlign("l6", "left")
app.addEntry("e1", 12, 1)
app.setEntry("e1", "0")
app.setEntryAlign("e1", "left")
app.addLabel("l7", "Separación horizontal en px",13,0)
app.setLabelAlign("l7", "left")
app.addEntry("e2", 13, 1)
app.setEntry("e2", "0")
app.addNamedButton("Comenzar", "btnComenzar", poner_marca_de_agua,14,0)
app.setButtonImage("btnComenzar", resolver_ruta("./assets/iniciar.png"), align="right")
app.addNamedButton("Acerca de", "btnCreditos", mostrar_creditos,14,1)
app.go()