Commit 8c67970fc273d1133a05bed0e71c21ecc47799a6
Committed by
GitHub
Exists in
master
and in
1 other branch
Merge pull request #9 from PerryWerneck/develop
Updating to the last development version; many fixes and improvements.
Showing
30 changed files
with
654 additions
and
246 deletions
Show diff stats
Makefile.in
@@ -49,7 +49,8 @@ SOURCES= \ | @@ -49,7 +49,8 @@ SOURCES= \ | ||
49 | $(wildcard src/dialogs/print/*.c) \ | 49 | $(wildcard src/dialogs/print/*.c) \ |
50 | $(wildcard src/dialogs/save/*.c) \ | 50 | $(wildcard src/dialogs/save/*.c) \ |
51 | $(wildcard src/dialogs/font/*.c) \ | 51 | $(wildcard src/dialogs/font/*.c) \ |
52 | - $(wildcard src/dialogs/settings/*.c) | 52 | + $(wildcard src/dialogs/settings/*.c) \ |
53 | + $(wildcard src/tools/*.c) | ||
53 | 54 | ||
54 | TEST_SOURCES= \ | 55 | TEST_SOURCES= \ |
55 | $(wildcard src/testprogram/*.c) | 56 | $(wildcard src/testprogram/*.c) |
@@ -70,10 +71,9 @@ WINDRES=@WINDRES@ | @@ -70,10 +71,9 @@ WINDRES=@WINDRES@ | ||
70 | AR=@AR@ | 71 | AR=@AR@ |
71 | VALGRIND=@VALGRIND@ | 72 | VALGRIND=@VALGRIND@ |
72 | GENMARSHAL=@GENMARSHAL@ | 73 | GENMARSHAL=@GENMARSHAL@ |
73 | -CONVERT=@CONVERT@ | ||
74 | -OPTIPNG=@OPTIPNG@ | ||
75 | ZIP=@ZIP@ | 74 | ZIP=@ZIP@ |
76 | DLLTOOL=@DLLTOOL@ | 75 | DLLTOOL=@DLLTOOL@ |
76 | +STRIP=@STRIP@ | ||
77 | 77 | ||
78 | #---[ Paths ]---------------------------------------------------------------------------- | 78 | #---[ Paths ]---------------------------------------------------------------------------- |
79 | 79 | ||
@@ -149,6 +149,11 @@ $(OBJDBG)/%.o: \ | @@ -149,6 +149,11 @@ $(OBJDBG)/%.o: \ | ||
149 | 149 | ||
150 | @$(CC) \ | 150 | @$(CC) \ |
151 | $(CFLAGS) \ | 151 | $(CFLAGS) \ |
152 | + -DDEBUG=1 \ | ||
153 | + -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $< | ||
154 | + | ||
155 | + @$(CC) \ | ||
156 | + $(CFLAGS) \ | ||
152 | -Wall -Wextra -fstack-check \ | 157 | -Wall -Wextra -fstack-check \ |
153 | -DDEBUG=1 \ | 158 | -DDEBUG=1 \ |
154 | -o $@ -c $< | 159 | -o $@ -c $< |
@@ -177,6 +182,12 @@ $(OBJRLS)/%.o: \ | @@ -177,6 +182,12 @@ $(OBJRLS)/%.o: \ | ||
177 | 182 | ||
178 | @echo $< ... | 183 | @echo $< ... |
179 | @$(MKDIR) $(dir $@) | 184 | @$(MKDIR) $(dir $@) |
185 | + | ||
186 | + @$(CC) \ | ||
187 | + $(CFLAGS) \ | ||
188 | + -DNDEBUG=1 \ | ||
189 | + -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $< | ||
190 | + | ||
180 | @$(CC) \ | 191 | @$(CC) \ |
181 | $(CFLAGS) \ | 192 | $(CFLAGS) \ |
182 | -DNDEBUG=1 \ | 193 | -DNDEBUG=1 \ |
@@ -311,6 +322,11 @@ $(BINRLS)/$(SONAME): \ | @@ -311,6 +322,11 @@ $(BINRLS)/$(SONAME): \ | ||
311 | -L$(BINRLS) \ | 322 | -L$(BINRLS) \ |
312 | $(LIBS) | 323 | $(LIBS) |
313 | 324 | ||
325 | +strip: \ | ||
326 | + $(BINRLS)/$(SONAME) | ||
327 | + | ||
328 | + @$(STRIP) --discard-all $(BINRLS)/$(SONAME) | ||
329 | + | ||
314 | $(BINRLS)/static/$(LIBNAME).a: \ | 330 | $(BINRLS)/static/$(LIBNAME).a: \ |
315 | $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) | 331 | $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).o) |
316 | 332 | ||
@@ -414,7 +430,7 @@ install-linux-dev: | @@ -414,7 +430,7 @@ install-linux-dev: | ||
414 | $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@ | 430 | $(DESTDIR)$(libdir)/$(LIBNAME)@DLLEXT@ |
415 | 431 | ||
416 | install-windows-dev: \ | 432 | install-windows-dev: \ |
417 | - $(BINRLS)/$(SONAME) \ | 433 | + strip \ |
418 | $(BINRLS)/$(LIBNAME).dll.a | 434 | $(BINRLS)/$(LIBNAME).dll.a |
419 | 435 | ||
420 | @$(MKDIR) \ | 436 | @$(MKDIR) \ |
@@ -564,4 +580,8 @@ clean: \ | @@ -564,4 +580,8 @@ clean: \ | ||
564 | cleanDebug \ | 580 | cleanDebug \ |
565 | cleanRelease | 581 | cleanRelease |
566 | 582 | ||
583 | +-include $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC).d) | ||
584 | +-include $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC).d) | ||
585 | + | ||
586 | + | ||
567 | 587 |
configure.ac
@@ -138,8 +138,6 @@ dnl Check for other programs | @@ -138,8 +138,6 @@ dnl Check for other programs | ||
138 | dnl --------------------------------------------------------------------------- | 138 | dnl --------------------------------------------------------------------------- |
139 | 139 | ||
140 | AC_PATH_TOOL([AR], [ar], [ar]) | 140 | AC_PATH_TOOL([AR], [ar], [ar]) |
141 | -AC_PATH_TOOL([CONVERT], [convert], [no]) | ||
142 | -AC_PATH_TOOL([OPTIPNG],[optipng],[no]) | ||
143 | AC_PATH_TOOL([ZIP],[zip],[no]) | 141 | AC_PATH_TOOL([ZIP],[zip],[no]) |
144 | AC_PATH_TOOL([DLLTOOL],[dlltool],[no]) | 142 | AC_PATH_TOOL([DLLTOOL],[dlltool],[no]) |
145 | AC_PATH_TOOL([WINDRES], [windres], [no]) | 143 | AC_PATH_TOOL([WINDRES], [windres], [no]) |
@@ -238,6 +236,7 @@ AC_PATH_TOOL([MSGMERGE], [msgmerge], [no]) | @@ -238,6 +236,7 @@ AC_PATH_TOOL([MSGMERGE], [msgmerge], [no]) | ||
238 | AC_PATH_TOOL([MSGFMT], [msgfmt], [no]) | 236 | AC_PATH_TOOL([MSGFMT], [msgfmt], [no]) |
239 | AC_PATH_TOOL([VALGRIND], [valgrind], [no]) | 237 | AC_PATH_TOOL([VALGRIND], [valgrind], [no]) |
240 | AC_PATH_TOOL([GENMARSHAL], [glib-genmarshal], [glib-genmarshal]) | 238 | AC_PATH_TOOL([GENMARSHAL], [glib-genmarshal], [glib-genmarshal]) |
239 | +AC_PATH_TOOL([STRIP], [strip], [true]) | ||
241 | 240 | ||
242 | AC_CHECK_HEADER(libintl.h, [ | 241 | AC_CHECK_HEADER(libintl.h, [ |
243 | AC_DEFINE(HAVE_LIBINTL, 1) | 242 | AC_DEFINE(HAVE_LIBINTL, 1) |
locale/pt_BR.po
@@ -5,8 +5,8 @@ msgid "" | @@ -5,8 +5,8 @@ msgid "" | ||
5 | msgstr "" | 5 | msgstr "" |
6 | "Project-Id-Version: pw3270 5.0\n" | 6 | "Project-Id-Version: pw3270 5.0\n" |
7 | "Report-Msgid-Bugs-To: \n" | 7 | "Report-Msgid-Bugs-To: \n" |
8 | -"POT-Creation-Date: 2020-09-12 13:50-0300\n" | ||
9 | -"PO-Revision-Date: 2020-08-03 15:26-0300\n" | 8 | +"POT-Creation-Date: 2020-10-24 11:11-0300\n" |
9 | +"PO-Revision-Date: 2020-10-15 15:37-0300\n" | ||
10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
11 | "Language-Team: Português <>\n" | 11 | "Language-Team: Português <>\n" |
12 | "Language: pt_BR\n" | 12 | "Language: pt_BR\n" |
@@ -24,7 +24,7 @@ msgstr "" | @@ -24,7 +24,7 @@ msgstr "" | ||
24 | msgid "16 colors" | 24 | msgid "16 colors" |
25 | msgstr "16 cores" | 25 | msgstr "16 cores" |
26 | 26 | ||
27 | -#: src/filetransfer/v3270ft.c:353 src/filetransfer/v3270ftprogress.c:386 | 27 | +#: src/filetransfer/v3270ftprogress.c:386 src/filetransfer/v3270ft.c:353 |
28 | #: src/dialogs/print/settingsdialog.c:284 | 28 | #: src/dialogs/print/settingsdialog.c:284 |
29 | #: src/dialogs/print/settingsdialog.c:286 | 29 | #: src/dialogs/print/settingsdialog.c:286 |
30 | #: src/dialogs/print/settingsdialog.c:288 | 30 | #: src/dialogs/print/settingsdialog.c:288 |
@@ -47,7 +47,7 @@ msgstr "" | @@ -47,7 +47,7 @@ msgstr "" | ||
47 | "<b>Identidade não foi confirmada</b>\n" | 47 | "<b>Identidade não foi confirmada</b>\n" |
48 | "Desconectado do servidor" | 48 | "Desconectado do servidor" |
49 | 49 | ||
50 | -#: src/dialogs/print/print.c:150 | 50 | +#: src/dialogs/print/print.c:148 |
51 | msgid "<b>Text options</b>" | 51 | msgid "<b>Text options</b>" |
52 | msgstr "<b>Opções de texto</b>" | 52 | msgstr "<b>Opções de texto</b>" |
53 | 53 | ||
@@ -80,7 +80,7 @@ msgstr "Nome da Ação" | @@ -80,7 +80,7 @@ msgstr "Nome da Ação" | ||
80 | msgid "Activity already on the queue" | 80 | msgid "Activity already on the queue" |
81 | msgstr "Atividade já está na fila" | 81 | msgstr "Atividade já está na fila" |
82 | 82 | ||
83 | -#: src/terminal/actions/table.c:75 | 83 | +#: src/terminal/actions/table.c:99 |
84 | msgid "Add to copy" | 84 | msgid "Add to copy" |
85 | msgstr "Adicionar à cópia" | 85 | msgstr "Adicionar à cópia" |
86 | 86 | ||
@@ -88,6 +88,10 @@ msgstr "Adicionar à cópia" | @@ -88,6 +88,10 @@ msgstr "Adicionar à cópia" | ||
88 | msgid "Address or name of the host to connect." | 88 | msgid "Address or name of the host to connect." |
89 | msgstr "Endereço ou nome do host a conectar." | 89 | msgstr "Endereço ou nome do host a conectar." |
90 | 90 | ||
91 | +#: src/tools/entry.c:121 | ||
92 | +msgid "All files" | ||
93 | +msgstr "Todos os arquivos" | ||
94 | + | ||
91 | #: src/dialogs/settings/accelerator.c:206 | 95 | #: src/dialogs/settings/accelerator.c:206 |
92 | msgid "Alternative" | 96 | msgid "Alternative" |
93 | msgstr "Alternativa" | 97 | msgstr "Alternativa" |
@@ -108,11 +112,11 @@ msgstr "" | @@ -108,11 +112,11 @@ msgstr "" | ||
108 | msgid "An invalid SEND or RECEIVE parameter was sent to the host." | 112 | msgid "An invalid SEND or RECEIVE parameter was sent to the host." |
109 | msgstr "Um parametro de ENVIO/RECEBIMENTO inválido foi enviado para o host." | 113 | msgstr "Um parametro de ENVIO/RECEBIMENTO inválido foi enviado para o host." |
110 | 114 | ||
111 | -#: src/terminal/actions/table.c:77 | 115 | +#: src/terminal/actions/table.c:101 |
112 | msgid "Append selected area to current clipboard contents" | 116 | msgid "Append selected area to current clipboard contents" |
113 | msgstr "Adiciona a área selecionada no conteúdo da área de transferência" | 117 | msgstr "Adiciona a área selecionada no conteúdo da área de transferência" |
114 | 118 | ||
115 | -#: src/terminal/actions/table.c:76 | 119 | +#: src/terminal/actions/table.c:100 |
116 | msgid "Append selection to clipboard" | 120 | msgid "Append selection to clipboard" |
117 | msgstr "Adiciona seleção na área de transferência" | 121 | msgstr "Adiciona seleção na área de transferência" |
118 | 122 | ||
@@ -179,12 +183,12 @@ msgstr "Não é possível adicionar atividade" | @@ -179,12 +183,12 @@ msgstr "Não é possível adicionar atividade" | ||
179 | msgid "Can't find a valid font with the name \"%s\"" | 183 | msgid "Can't find a valid font with the name \"%s\"" |
180 | msgstr "Não encontrei uma fonte válida com o nome \"%s\"" | 184 | msgstr "Não encontrei uma fonte válida com o nome \"%s\"" |
181 | 185 | ||
182 | -#: src/filetransfer/load.c:271 | 186 | +#: src/filetransfer/load.c:269 |
183 | #, c-format | 187 | #, c-format |
184 | msgid "Can't load %s" | 188 | msgid "Can't load %s" |
185 | msgstr "Não foi possível carregar %s" | 189 | msgstr "Não foi possível carregar %s" |
186 | 190 | ||
187 | -#: src/dialogs/load.c:324 | 191 | +#: src/dialogs/load.c:323 |
188 | #, c-format | 192 | #, c-format |
189 | msgid "Can't open %s" | 193 | msgid "Can't open %s" |
190 | msgstr "Não foi possível abrir %s" | 194 | msgstr "Não foi possível abrir %s" |
@@ -202,7 +206,7 @@ msgstr "Erro ao converter valor do cgcsid" | @@ -202,7 +206,7 @@ msgstr "Erro ao converter valor do cgcsid" | ||
202 | msgid "Can't parse character value" | 206 | msgid "Can't parse character value" |
203 | msgstr "Erro ao analisar valor de caractere" | 207 | msgstr "Erro ao analisar valor de caractere" |
204 | 208 | ||
205 | -#: src/selection/windows/paste.c:79 src/selection/windows/paste.c:119 | 209 | +#: src/selection/linux/paste.c:81 src/selection/linux/paste.c:115 |
206 | msgid "Can't paste" | 210 | msgid "Can't paste" |
207 | msgstr "Não é possivel colar" | 211 | msgstr "Não é possivel colar" |
208 | 212 | ||
@@ -210,13 +214,13 @@ msgstr "Não é possivel colar" | @@ -210,13 +214,13 @@ msgstr "Não é possivel colar" | ||
210 | msgid "Can't paste text" | 214 | msgid "Can't paste text" |
211 | msgstr "Não é possível colar texto" | 215 | msgstr "Não é possível colar texto" |
212 | 216 | ||
213 | -#: src/filetransfer/activitylist.c:436 src/filetransfer/save.c:117 | ||
214 | -#: src/trace/trace.c:486 src/dialogs/transfer.c:91 src/dialogs/save/save.c:627 | 217 | +#: src/filetransfer/save.c:117 src/filetransfer/activitylist.c:436 |
218 | +#: src/trace/trace.c:484 src/dialogs/transfer.c:91 src/dialogs/save/save.c:625 | ||
215 | #, c-format | 219 | #, c-format |
216 | msgid "Can't save %s" | 220 | msgid "Can't save %s" |
217 | msgstr "Não foi possível salvar arquivo %s" | 221 | msgstr "Não foi possível salvar arquivo %s" |
218 | 222 | ||
219 | -#: src/filetransfer/v3270ftprogress.c:773 src/filetransfer/worker.c:610 | 223 | +#: src/filetransfer/worker.c:610 src/filetransfer/v3270ftprogress.c:773 |
220 | msgid "Can't set callback table" | 224 | msgid "Can't set callback table" |
221 | msgstr "Não foi possível setar a tabela de retornos" | 225 | msgstr "Não foi possível setar a tabela de retornos" |
222 | 226 | ||
@@ -224,13 +228,13 @@ msgstr "Não foi possível setar a tabela de retornos" | @@ -224,13 +228,13 @@ msgstr "Não foi possível setar a tabela de retornos" | ||
224 | msgid "Can't set lib3270 I/O controller" | 228 | msgid "Can't set lib3270 I/O controller" |
225 | msgstr "Não foi possível registrar manipuladores de I/O 3270" | 229 | msgstr "Não foi possível registrar manipuladores de I/O 3270" |
226 | 230 | ||
227 | -#: src/filetransfer/v3270ftprogress.c:760 src/filetransfer/worker.c:591 | 231 | +#: src/filetransfer/worker.c:591 src/filetransfer/v3270ftprogress.c:760 |
228 | msgid "Can't start file transfer session" | 232 | msgid "Can't start file transfer session" |
229 | msgstr "Não foi possível iniciar transferência de arquivo" | 233 | msgstr "Não foi possível iniciar transferência de arquivo" |
230 | 234 | ||
231 | -#: src/filetransfer/transfer.c:89 src/filetransfer/v3270ftprogress.c:433 | 235 | +#: src/filetransfer/v3270ftprogress.c:433 src/filetransfer/transfer.c:89 |
232 | #: src/dialogs/load.c:111 src/dialogs/save/save.c:117 | 236 | #: src/dialogs/load.c:111 src/dialogs/save/save.c:117 |
233 | -#: src/dialogs/settings/host.c:401 | 237 | +#: src/dialogs/settings/host.c:401 src/tools/entry.c:99 |
234 | msgid "Cancel" | 238 | msgid "Cancel" |
235 | msgstr "Cancelar" | 239 | msgstr "Cancelar" |
236 | 240 | ||
@@ -298,15 +302,23 @@ msgstr "Comando a executar" | @@ -298,15 +302,23 @@ msgstr "Comando a executar" | ||
298 | msgid "Connection" | 302 | msgid "Connection" |
299 | msgstr "Conexão" | 303 | msgstr "Conexão" |
300 | 304 | ||
301 | -#: src/terminal/actions/table.c:64 src/terminal/actions/table.c:87 | 305 | +#: src/terminal/actions/table.c:70 src/terminal/actions/table.c:111 |
302 | msgid "Copy" | 306 | msgid "Copy" |
303 | msgstr "Copiar" | 307 | msgstr "Copiar" |
304 | 308 | ||
309 | +#: src/terminal/actions/table.c:79 | ||
310 | +msgid "Copy as HTML" | ||
311 | +msgstr "Copiar como HTML" | ||
312 | + | ||
305 | #: src/terminal/actions/table.c:88 | 313 | #: src/terminal/actions/table.c:88 |
314 | +msgid "Copy as image" | ||
315 | +msgstr "Copiar como imagem" | ||
316 | + | ||
317 | +#: src/terminal/actions/table.c:112 | ||
306 | msgid "Copy as plain text" | 318 | msgid "Copy as plain text" |
307 | msgstr "Copiar como texto puro" | 319 | msgstr "Copiar como texto puro" |
308 | 320 | ||
309 | -#: src/terminal/actions/table.c:98 src/terminal/actions/table.c:99 | 321 | +#: src/terminal/actions/table.c:122 src/terminal/actions/table.c:123 |
310 | msgid "Copy as table" | 322 | msgid "Copy as table" |
311 | msgstr "Copiar como tabela" | 323 | msgstr "Copiar como tabela" |
312 | 324 | ||
@@ -314,7 +326,15 @@ msgstr "Copiar como tabela" | @@ -314,7 +326,15 @@ msgstr "Copiar como tabela" | ||
314 | msgid "Copy options" | 326 | msgid "Copy options" |
315 | msgstr "Opções da cópia" | 327 | msgstr "Opções da cópia" |
316 | 328 | ||
317 | -#: src/terminal/actions/table.c:65 | 329 | +#: src/terminal/actions/table.c:80 |
330 | +msgid "Copy selection in HTML format" | ||
331 | +msgstr "Copia seleção em formato HTML" | ||
332 | + | ||
333 | +#: src/terminal/actions/table.c:89 | ||
334 | +msgid "Copy selection in image format" | ||
335 | +msgstr "Copia imagem da seleção" | ||
336 | + | ||
337 | +#: src/terminal/actions/table.c:71 | ||
318 | msgid "Copy selection to clipboard" | 338 | msgid "Copy selection to clipboard" |
319 | msgstr "Salvar seleção para área de transferência" | 339 | msgstr "Salvar seleção para área de transferência" |
320 | 340 | ||
@@ -356,20 +376,20 @@ msgstr "Atual:" | @@ -356,20 +376,20 @@ msgstr "Atual:" | ||
356 | msgid "Custom Remap" | 376 | msgid "Custom Remap" |
357 | msgstr "Mapeamento personalizado" | 377 | msgstr "Mapeamento personalizado" |
358 | 378 | ||
359 | -#: src/terminal/actions/table.c:109 src/terminal/actions/table.c:118 | ||
360 | -#: src/terminal/actions/table.c:129 | 379 | +#: src/terminal/actions/table.c:133 src/terminal/actions/table.c:142 |
380 | +#: src/terminal/actions/table.c:153 | ||
361 | msgid "Cut" | 381 | msgid "Cut" |
362 | msgstr "Recortar" | 382 | msgstr "Recortar" |
363 | 383 | ||
364 | -#: src/terminal/actions/table.c:119 | 384 | +#: src/terminal/actions/table.c:143 |
365 | msgid "Cut and append to copy" | 385 | msgid "Cut and append to copy" |
366 | msgstr "Recortar e adicionar à cópia" | 386 | msgstr "Recortar e adicionar à cópia" |
367 | 387 | ||
368 | -#: src/terminal/actions/table.c:130 | 388 | +#: src/terminal/actions/table.c:154 |
369 | msgid "Cut as plain text" | 389 | msgid "Cut as plain text" |
370 | msgstr "Recortar como texto puro" | 390 | msgstr "Recortar como texto puro" |
371 | 391 | ||
372 | -#: src/terminal/actions/table.c:140 src/terminal/actions/table.c:141 | 392 | +#: src/terminal/actions/table.c:164 src/terminal/actions/table.c:165 |
373 | msgid "Cut as table" | 393 | msgid "Cut as table" |
374 | msgstr "Recortar como tabela" | 394 | msgstr "Recortar como tabela" |
375 | 395 | ||
@@ -397,20 +417,19 @@ msgstr "Turquesa Escuro" | @@ -397,20 +417,19 @@ msgstr "Turquesa Escuro" | ||
397 | msgid "Default" | 417 | msgid "Default" |
398 | msgstr "Padrão" | 418 | msgstr "Padrão" |
399 | 419 | ||
400 | -#: src/dialogs/popups.c:146 | 420 | +#: src/dialogs/popups.c:149 |
401 | msgid "Don't ask again" | 421 | msgid "Don't ask again" |
402 | msgstr "Não perguntar de novo" | 422 | msgstr "Não perguntar de novo" |
403 | 423 | ||
404 | #: src/dialogs/font/chooser.c:335 | 424 | #: src/dialogs/font/chooser.c:335 |
405 | -#, fuzzy | ||
406 | msgid "Dynamic font spacing" | 425 | msgid "Dynamic font spacing" |
407 | -msgstr "Estado do espaçamento dinâmico" | 426 | +msgstr "Espaçamento dinâmico" |
408 | 427 | ||
409 | #: src/filetransfer/tables.c:224 | 428 | #: src/filetransfer/tables.c:224 |
410 | msgid "ETA:" | 429 | msgid "ETA:" |
411 | msgstr "ETA:" | 430 | msgstr "ETA:" |
412 | 431 | ||
413 | -#: src/terminal/actions/pakey.c:105 src/terminal/actions/pfkey.c:105 | 432 | +#: src/terminal/actions/pfkey.c:105 src/terminal/actions/pakey.c:105 |
414 | msgid "Emit a PA Key action" | 433 | msgid "Emit a PA Key action" |
415 | msgstr "Emite uma ação de tecla PA" | 434 | msgstr "Emite uma ação de tecla PA" |
416 | 435 | ||
@@ -422,7 +441,7 @@ msgstr "Emulação" | @@ -422,7 +441,7 @@ msgstr "Emulação" | ||
422 | msgid "Enabled" | 441 | msgid "Enabled" |
423 | msgstr "Habilitado" | 442 | msgstr "Habilitado" |
424 | 443 | ||
425 | -#: src/dialogs/print/print.c:72 | 444 | +#: src/dialogs/print/print.c:70 |
426 | msgid "Error on print operation" | 445 | msgid "Error on print operation" |
427 | msgstr "Erro na operação de impressão" | 446 | msgstr "Erro na operação de impressão" |
428 | 447 | ||
@@ -446,7 +465,7 @@ msgstr "_Formato do arquivo" | @@ -446,7 +465,7 @@ msgstr "_Formato do arquivo" | ||
446 | msgid "Files to transfer" | 465 | msgid "Files to transfer" |
447 | msgstr "Arquivos a transferir" | 466 | msgstr "Arquivos a transferir" |
448 | 467 | ||
449 | -#: src/terminal/actions/table.c:216 | 468 | +#: src/terminal/actions/table.c:240 |
450 | msgid "Fit best" | 469 | msgid "Fit best" |
451 | msgstr "Melhor tamanho" | 470 | msgstr "Melhor tamanho" |
452 | 471 | ||
@@ -569,11 +588,11 @@ msgstr "Ignore the fail and remove the file from queue." | @@ -569,11 +588,11 @@ msgstr "Ignore the fail and remove the file from queue." | ||
569 | msgid "Image copy" | 588 | msgid "Image copy" |
570 | msgstr "Copiar imagem" | 589 | msgstr "Copiar imagem" |
571 | 590 | ||
572 | -#: src/terminal/actions/table.c:196 | 591 | +#: src/terminal/actions/table.c:220 |
573 | msgid "Increase the font size" | 592 | msgid "Increase the font size" |
574 | msgstr "Aumenta o tamanho da fonte" | 593 | msgstr "Aumenta o tamanho da fonte" |
575 | 594 | ||
576 | -#: src/terminal/actions/table.c:153 | 595 | +#: src/terminal/actions/table.c:177 |
577 | msgid "Input current clipboard contents to screen" | 596 | msgid "Input current clipboard contents to screen" |
578 | msgstr "Insere conteúdo da área de transferência" | 597 | msgstr "Insere conteúdo da área de transferência" |
579 | 598 | ||
@@ -589,7 +608,7 @@ msgstr "Intensificado/Protegido" | @@ -589,7 +608,7 @@ msgstr "Intensificado/Protegido" | ||
589 | msgid "Intensified/Unprotected" | 608 | msgid "Intensified/Unprotected" |
590 | msgstr "Intensificado/Desprotegido" | 609 | msgstr "Intensificado/Desprotegido" |
591 | 610 | ||
592 | -#: src/terminal/callbacks.c:477 | 611 | +#: src/terminal/callbacks.c:440 |
593 | #, c-format | 612 | #, c-format |
594 | msgid "" | 613 | msgid "" |
595 | "Invalid callback table, the release %s of lib%s can't be used (expecting " | 614 | "Invalid callback table, the release %s of lib%s can't be used (expecting " |
@@ -619,11 +638,11 @@ msgstr "Atalhos de teclado" | @@ -619,11 +638,11 @@ msgstr "Atalhos de teclado" | ||
619 | msgid "L_U Names" | 638 | msgid "L_U Names" |
620 | msgstr "Nomes de L_U" | 639 | msgstr "Nomes de L_U" |
621 | 640 | ||
622 | -#: src/filetransfer/activitylist.c:384 src/filetransfer/v3270ft.c:198 | 641 | +#: src/filetransfer/v3270ft.c:198 src/filetransfer/activitylist.c:384 |
623 | msgid "Load" | 642 | msgid "Load" |
624 | msgstr "Load" | 643 | msgstr "Load" |
625 | 644 | ||
626 | -#: src/filetransfer/activitylist.c:383 src/filetransfer/v3270ft.c:197 | 645 | +#: src/filetransfer/v3270ft.c:197 src/filetransfer/activitylist.c:383 |
627 | msgid "Load queue from file" | 646 | msgid "Load queue from file" |
628 | msgstr "Ler a fila de um arquivo" | 647 | msgstr "Ler a fila de um arquivo" |
629 | 648 | ||
@@ -703,6 +722,10 @@ msgstr "Nenhum (Não exporta cores)" | @@ -703,6 +722,10 @@ msgstr "Nenhum (Não exporta cores)" | ||
703 | msgid "None (Don't export font name)" | 722 | msgid "None (Don't export font name)" |
704 | msgstr "Nenhuma (Não exporta fontes)" | 723 | msgstr "Nenhuma (Não exporta fontes)" |
705 | 724 | ||
725 | +#: src/selection/linux/paste.c:117 | ||
726 | +msgid "None of the screens in the clipboard match with the current one." | ||
727 | +msgstr "Nenhuma das telas da área de transferência corresponde à atual." | ||
728 | + | ||
706 | #: src/dialogs/settings/colors.c:174 | 729 | #: src/dialogs/settings/colors.c:174 |
707 | msgid "Normal/Protected" | 730 | msgid "Normal/Protected" |
708 | msgstr "Normal/Protegido" | 731 | msgstr "Normal/Protegido" |
@@ -711,7 +734,7 @@ msgstr "Normal/Protegido" | @@ -711,7 +734,7 @@ msgstr "Normal/Protegido" | ||
711 | msgid "Normal/Unprotected" | 734 | msgid "Normal/Unprotected" |
712 | msgstr "Normal/Desprotegido" | 735 | msgstr "Normal/Desprotegido" |
713 | 736 | ||
714 | -#: src/selection/windows/paste.c:75 | 737 | +#: src/selection/linux/paste.c:77 |
715 | msgid "Not the same terminal type" | 738 | msgid "Not the same terminal type" |
716 | msgstr "O tipo de terminal é diferente" | 739 | msgstr "O tipo de terminal é diferente" |
717 | 740 | ||
@@ -747,7 +770,7 @@ msgstr "Abrir" | @@ -747,7 +770,7 @@ msgstr "Abrir" | ||
747 | msgid "Operation has failed" | 770 | msgid "Operation has failed" |
748 | msgstr "Operação falhou" | 771 | msgstr "Operação falhou" |
749 | 772 | ||
750 | -#: src/dialogs/print/print.c:209 | 773 | +#: src/dialogs/print/print.c:207 |
751 | msgid "Options" | 774 | msgid "Options" |
752 | msgstr "Opções" | 775 | msgstr "Opções" |
753 | 776 | ||
@@ -771,23 +794,23 @@ msgstr "Oversize" | @@ -771,23 +794,23 @@ msgstr "Oversize" | ||
771 | msgid "Parameter Type" | 794 | msgid "Parameter Type" |
772 | msgstr "Tipo de parâmetro" | 795 | msgstr "Tipo de parâmetro" |
773 | 796 | ||
774 | -#: src/terminal/actions/table.c:151 src/terminal/actions/table.c:163 | 797 | +#: src/terminal/actions/table.c:175 src/terminal/actions/table.c:187 |
775 | msgid "Paste" | 798 | msgid "Paste" |
776 | msgstr "Colar" | 799 | msgstr "Colar" |
777 | 800 | ||
778 | -#: src/terminal/actions/table.c:164 | 801 | +#: src/terminal/actions/table.c:188 |
779 | msgid "Paste as plain text" | 802 | msgid "Paste as plain text" |
780 | msgstr "Colar como texto puro" | 803 | msgstr "Colar como texto puro" |
781 | 804 | ||
782 | -#: src/terminal/actions/table.c:152 | 805 | +#: src/terminal/actions/table.c:176 |
783 | msgid "Paste clipboard contents" | 806 | msgid "Paste clipboard contents" |
784 | msgstr "Colar conteúdo da área de transferência" | 807 | msgstr "Colar conteúdo da área de transferência" |
785 | 808 | ||
786 | -#: src/terminal/actions/table.c:173 | 809 | +#: src/terminal/actions/table.c:197 |
787 | msgid "Paste file" | 810 | msgid "Paste file" |
788 | msgstr "Colar arquivo" | 811 | msgstr "Colar arquivo" |
789 | 812 | ||
790 | -#: src/terminal/actions/table.c:183 src/dialogs/settings/clipboard.c:153 | 813 | +#: src/terminal/actions/table.c:207 src/dialogs/settings/clipboard.c:153 |
791 | msgid "Paste formatted screen" | 814 | msgid "Paste formatted screen" |
792 | msgstr "Colar tela formatada" | 815 | msgstr "Colar tela formatada" |
793 | 816 | ||
@@ -795,7 +818,7 @@ msgstr "Colar tela formatada" | @@ -795,7 +818,7 @@ msgstr "Colar tela formatada" | ||
795 | msgid "Paste from file" | 818 | msgid "Paste from file" |
796 | msgstr "Colar de um arquivo" | 819 | msgstr "Colar de um arquivo" |
797 | 820 | ||
798 | -#: src/terminal/actions/table.c:174 | 821 | +#: src/terminal/actions/table.c:198 |
799 | msgid "Paste from text file" | 822 | msgid "Paste from text file" |
800 | msgstr "Colar de um arquivo texto" | 823 | msgstr "Colar de um arquivo texto" |
801 | 824 | ||
@@ -803,7 +826,7 @@ msgstr "Colar de um arquivo texto" | @@ -803,7 +826,7 @@ msgstr "Colar de um arquivo texto" | ||
803 | msgid "Paste options" | 826 | msgid "Paste options" |
804 | msgstr "Opções para colar" | 827 | msgstr "Opções para colar" |
805 | 828 | ||
806 | -#: src/terminal/actions/table.c:184 | 829 | +#: src/terminal/actions/table.c:208 |
807 | msgid "Paste similar screen from clipboard" | 830 | msgid "Paste similar screen from clipboard" |
808 | msgstr "Colar tela semelhante" | 831 | msgstr "Colar tela semelhante" |
809 | 832 | ||
@@ -855,11 +878,11 @@ msgstr "" | @@ -855,11 +878,11 @@ msgstr "" | ||
855 | msgid "Primary space" | 878 | msgid "Primary space" |
856 | msgstr "Primary space" | 879 | msgstr "Primary space" |
857 | 880 | ||
858 | -#: src/terminal/actions/table.c:277 | 881 | +#: src/terminal/actions/table.c:301 |
859 | msgid "Print" | 882 | msgid "Print" |
860 | msgstr "Imprimir" | 883 | msgstr "Imprimir" |
861 | 884 | ||
862 | -#: src/terminal/actions/table.c:310 | 885 | +#: src/terminal/actions/table.c:334 |
863 | msgid "Print Copy" | 886 | msgid "Print Copy" |
864 | msgstr "Imprimir cópia" | 887 | msgstr "Imprimir cópia" |
865 | 888 | ||
@@ -871,19 +894,19 @@ msgstr "Operação de impressão falhou" | @@ -871,19 +894,19 @@ msgstr "Operação de impressão falhou" | ||
871 | msgid "Print operation has failed" | 894 | msgid "Print operation has failed" |
872 | msgstr "Operação de impressão falhou" | 895 | msgstr "Operação de impressão falhou" |
873 | 896 | ||
874 | -#: src/terminal/actions/table.c:288 | 897 | +#: src/terminal/actions/table.c:312 |
875 | msgid "Print screen" | 898 | msgid "Print screen" |
876 | msgstr "Imrpimir tela" | 899 | msgstr "Imrpimir tela" |
877 | 900 | ||
878 | -#: src/terminal/actions/table.c:278 | 901 | +#: src/terminal/actions/table.c:302 |
879 | msgid "Print screen or selection" | 902 | msgid "Print screen or selection" |
880 | msgstr "Imrpimir tela ou seleção" | 903 | msgstr "Imrpimir tela ou seleção" |
881 | 904 | ||
882 | -#: src/terminal/actions/table.c:299 | 905 | +#: src/terminal/actions/table.c:323 |
883 | msgid "Print selected" | 906 | msgid "Print selected" |
884 | msgstr "Imprimir seleção" | 907 | msgstr "Imprimir seleção" |
885 | 908 | ||
886 | -#: src/terminal/actions/table.c:300 | 909 | +#: src/terminal/actions/table.c:324 |
887 | msgid "Print selected area" | 910 | msgid "Print selected area" |
888 | msgstr "Imprimir área selecionada" | 911 | msgstr "Imprimir área selecionada" |
889 | 912 | ||
@@ -891,7 +914,7 @@ msgstr "Imprimir área selecionada" | @@ -891,7 +914,7 @@ msgstr "Imprimir área selecionada" | ||
891 | msgid "Print selection box" | 914 | msgid "Print selection box" |
892 | msgstr "Imprimir marca de seleção" | 915 | msgstr "Imprimir marca de seleção" |
893 | 916 | ||
894 | -#: src/terminal/actions/table.c:289 | 917 | +#: src/terminal/actions/table.c:313 |
895 | msgid "Print the entire screen" | 918 | msgid "Print the entire screen" |
896 | msgstr "Imrpimir toda a tela" | 919 | msgstr "Imrpimir toda a tela" |
897 | 920 | ||
@@ -915,7 +938,7 @@ msgstr "Receber arquivo" | @@ -915,7 +938,7 @@ msgstr "Receber arquivo" | ||
915 | msgid "Receive text file" | 938 | msgid "Receive text file" |
916 | msgstr "Receber arquivo texto" | 939 | msgstr "Receber arquivo texto" |
917 | 940 | ||
918 | -#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:126 | 941 | +#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:124 |
919 | msgid "Receiving file" | 942 | msgid "Receiving file" |
920 | msgstr "Recebendo arquivo" | 943 | msgstr "Recebendo arquivo" |
921 | 944 | ||
@@ -923,7 +946,7 @@ msgstr "Recebendo arquivo" | @@ -923,7 +946,7 @@ msgstr "Recebendo arquivo" | ||
923 | msgid "Record Length" | 946 | msgid "Record Length" |
924 | msgstr "Comprimento de registro:" | 947 | msgstr "Comprimento de registro:" |
925 | 948 | ||
926 | -#: src/filetransfer/settings.c:519 src/filetransfer/v3270ft.c:340 | 949 | +#: src/filetransfer/v3270ft.c:340 src/filetransfer/settings.c:519 |
927 | msgid "Record format" | 950 | msgid "Record format" |
928 | msgstr "Formato de registro" | 951 | msgstr "Formato de registro" |
929 | 952 | ||
@@ -956,10 +979,24 @@ msgstr "Remoto:" | @@ -956,10 +979,24 @@ msgstr "Remoto:" | ||
956 | msgid "Remove selected file from the transfer queue" | 979 | msgid "Remove selected file from the transfer queue" |
957 | msgstr "Remove arquivo selecionado da fila de transferência" | 980 | msgstr "Remove arquivo selecionado da fila de transferência" |
958 | 981 | ||
959 | -#: src/terminal/actions/table.c:66 | 982 | +#: src/terminal/actions/table.c:72 |
960 | msgid "Replace current clipboard contents with the selected area" | 983 | msgid "Replace current clipboard contents with the selected area" |
961 | msgstr "Substituí conteúdo da área de transferência com a seleção" | 984 | msgstr "Substituí conteúdo da área de transferência com a seleção" |
962 | 985 | ||
986 | +#: src/terminal/actions/table.c:81 | ||
987 | +msgid "" | ||
988 | +"Replace current clipboard contents with the selected area in HTML format" | ||
989 | +msgstr "" | ||
990 | +"Substituí conteúdo da área de transferência com o conteúdo da área " | ||
991 | +"selecionada em formato HTML" | ||
992 | + | ||
993 | +#: src/terminal/actions/table.c:90 | ||
994 | +msgid "" | ||
995 | +"Replace current clipboard contents with the selected area in image format" | ||
996 | +msgstr "" | ||
997 | +"Substituí conteúdo da área de transferência com uma imagem da área " | ||
998 | +"selecionada" | ||
999 | + | ||
963 | #: src/filetransfer/transfer.c:83 | 1000 | #: src/filetransfer/transfer.c:83 |
964 | msgid "Retry" | 1001 | msgid "Retry" |
965 | msgstr "Repetir" | 1002 | msgstr "Repetir" |
@@ -984,13 +1021,13 @@ msgstr "SSL/TLS" | @@ -984,13 +1021,13 @@ msgstr "SSL/TLS" | ||
984 | msgid "Same of the screen" | 1021 | msgid "Same of the screen" |
985 | msgstr "Igual ao terminal" | 1022 | msgstr "Igual ao terminal" |
986 | 1023 | ||
987 | -#: src/terminal/actions/table.c:230 src/filetransfer/activitylist.c:453 | ||
988 | -#: src/filetransfer/v3270ft.c:215 src/trace/trace.c:505 | 1024 | +#: src/terminal/actions/table.c:254 src/filetransfer/v3270ft.c:215 |
1025 | +#: src/filetransfer/activitylist.c:451 src/trace/trace.c:499 | ||
989 | #: src/dialogs/transfer.c:69 | 1026 | #: src/dialogs/transfer.c:69 |
990 | msgid "Save" | 1027 | msgid "Save" |
991 | msgstr "Salvar" | 1028 | msgstr "Salvar" |
992 | 1029 | ||
993 | -#: src/terminal/actions/table.c:264 | 1030 | +#: src/terminal/actions/table.c:288 |
994 | msgid "Save Copy" | 1031 | msgid "Save Copy" |
995 | msgstr "Salvar cópia" | 1032 | msgstr "Salvar cópia" |
996 | 1033 | ||
@@ -998,31 +1035,31 @@ msgstr "Salvar cópia" | @@ -998,31 +1035,31 @@ msgstr "Salvar cópia" | ||
998 | msgid "Save _As" | 1035 | msgid "Save _As" |
999 | msgstr "Salvar _Como" | 1036 | msgstr "Salvar _Como" |
1000 | 1037 | ||
1001 | -#: src/terminal/actions/table.c:240 | 1038 | +#: src/terminal/actions/table.c:264 |
1002 | msgid "Save all" | 1039 | msgid "Save all" |
1003 | msgstr "Salvar tela" | 1040 | msgstr "Salvar tela" |
1004 | 1041 | ||
1005 | -#: src/terminal/actions/table.c:262 src/dialogs/save/save.c:377 | 1042 | +#: src/terminal/actions/table.c:286 src/dialogs/save/save.c:377 |
1006 | msgid "Save copy" | 1043 | msgid "Save copy" |
1007 | msgstr "Salvar cópia" | 1044 | msgstr "Salvar cópia" |
1008 | 1045 | ||
1009 | -#: src/filetransfer/activitylist.c:452 src/filetransfer/v3270ft.c:214 | 1046 | +#: src/filetransfer/v3270ft.c:214 src/filetransfer/activitylist.c:450 |
1010 | msgid "Save queue to file" | 1047 | msgid "Save queue to file" |
1011 | msgstr "Salvar a fila para um arquivo" | 1048 | msgstr "Salvar a fila para um arquivo" |
1012 | 1049 | ||
1013 | -#: src/terminal/actions/table.c:242 | 1050 | +#: src/terminal/actions/table.c:266 |
1014 | msgid "Save screen" | 1051 | msgid "Save screen" |
1015 | msgstr "Salvar tela" | 1052 | msgstr "Salvar tela" |
1016 | 1053 | ||
1017 | -#: src/terminal/actions/table.c:231 | 1054 | +#: src/terminal/actions/table.c:255 |
1018 | msgid "Save screen or selection" | 1055 | msgid "Save screen or selection" |
1019 | msgstr "Salvar tela ou seleção" | 1056 | msgstr "Salvar tela ou seleção" |
1020 | 1057 | ||
1021 | -#: src/terminal/actions/table.c:251 | 1058 | +#: src/terminal/actions/table.c:275 |
1022 | msgid "Save selected" | 1059 | msgid "Save selected" |
1023 | msgstr "Salvar seleção" | 1060 | msgstr "Salvar seleção" |
1024 | 1061 | ||
1025 | -#: src/terminal/actions/table.c:253 src/dialogs/save/save.c:376 | 1062 | +#: src/terminal/actions/table.c:277 src/dialogs/save/save.c:376 |
1026 | msgid "Save selected area" | 1063 | msgid "Save selected area" |
1027 | msgstr "Salvar área selecionada" | 1064 | msgstr "Salvar área selecionada" |
1028 | 1065 | ||
@@ -1030,7 +1067,7 @@ msgstr "Salvar área selecionada" | @@ -1030,7 +1067,7 @@ msgstr "Salvar área selecionada" | ||
1030 | msgid "Save terminal contents" | 1067 | msgid "Save terminal contents" |
1031 | msgstr "Salvar conteúdo da tela" | 1068 | msgstr "Salvar conteúdo da tela" |
1032 | 1069 | ||
1033 | -#: src/trace/trace.c:504 | 1070 | +#: src/trace/trace.c:498 |
1034 | msgid "Save trace to file" | 1071 | msgid "Save trace to file" |
1035 | msgstr "Salvar trace para arquivo" | 1072 | msgstr "Salvar trace para arquivo" |
1036 | 1073 | ||
@@ -1038,7 +1075,7 @@ msgstr "Salvar trace para arquivo" | @@ -1038,7 +1075,7 @@ msgstr "Salvar trace para arquivo" | ||
1038 | msgid "Save transfer activity to file" | 1075 | msgid "Save transfer activity to file" |
1039 | msgstr "Salvar atividade de transferência para arquivo" | 1076 | msgstr "Salvar atividade de transferência para arquivo" |
1040 | 1077 | ||
1041 | -#: src/dialogs/transfer.c:191 | 1078 | +#: src/dialogs/transfer.c:189 |
1042 | msgid "Save transfer information to file" | 1079 | msgid "Save transfer information to file" |
1043 | msgstr "Salvar informações da transferência para arquivo" | 1080 | msgstr "Salvar informações da transferência para arquivo" |
1044 | 1081 | ||
@@ -1058,7 +1095,7 @@ msgstr "Salvar fila de transferências para arquivo" | @@ -1058,7 +1095,7 @@ msgstr "Salvar fila de transferências para arquivo" | ||
1058 | msgid "Screen with terminal attributes" | 1095 | msgid "Screen with terminal attributes" |
1059 | msgstr "Completa incluindo atributos do terminal" | 1096 | msgstr "Completa incluindo atributos do terminal" |
1060 | 1097 | ||
1061 | -#: src/terminal/actions/table.c:185 | 1098 | +#: src/terminal/actions/table.c:209 |
1062 | msgid "" | 1099 | msgid "" |
1063 | "Search clipboard for a similar screen, if found paste unprotected fields and " | 1100 | "Search clipboard for a similar screen, if found paste unprotected fields and " |
1064 | "restore cursor position" | 1101 | "restore cursor position" |
@@ -1078,7 +1115,7 @@ msgstr "" | @@ -1078,7 +1115,7 @@ msgstr "" | ||
1078 | msgid "Secondary space" | 1115 | msgid "Secondary space" |
1079 | msgstr "Secondary space" | 1116 | msgstr "Secondary space" |
1080 | 1117 | ||
1081 | -#: src/filetransfer/settings.c:209 src/filetransfer/v3270ft.c:303 | 1118 | +#: src/filetransfer/v3270ft.c:303 src/filetransfer/settings.c:209 |
1082 | #: src/dialogs/save/save.c:98 src/dialogs/save/save.c:118 | 1119 | #: src/dialogs/save/save.c:98 src/dialogs/save/save.c:118 |
1083 | #: src/dialogs/settings/host.c:402 | 1120 | #: src/dialogs/settings/host.c:402 |
1084 | msgid "Select" | 1121 | msgid "Select" |
@@ -1096,7 +1133,7 @@ msgstr "Seleciona mapeamento de teclado personalizado" | @@ -1096,7 +1133,7 @@ msgstr "Seleciona mapeamento de teclado personalizado" | ||
1096 | msgid "Select destination file" | 1133 | msgid "Select destination file" |
1097 | msgstr "Selecionar arquivo destino" | 1134 | msgstr "Selecionar arquivo destino" |
1098 | 1135 | ||
1099 | -#: src/filetransfer/settings.c:467 src/filetransfer/v3270ft.c:591 | 1136 | +#: src/filetransfer/v3270ft.c:591 src/filetransfer/settings.c:467 |
1100 | #: src/dialogs/load.c:92 src/dialogs/load.c:108 src/dialogs/load.c:171 | 1137 | #: src/dialogs/load.c:92 src/dialogs/load.c:108 src/dialogs/load.c:171 |
1101 | #: src/dialogs/save/save.c:258 | 1138 | #: src/dialogs/save/save.c:258 |
1102 | msgid "Select file" | 1139 | msgid "Select file" |
@@ -1110,7 +1147,7 @@ msgstr "Selecionar primeiro arquivo" | @@ -1110,7 +1147,7 @@ msgstr "Selecionar primeiro arquivo" | ||
1110 | msgid "Select last file" | 1147 | msgid "Select last file" |
1111 | msgstr "Selecionar último arquivo" | 1148 | msgstr "Selecionar último arquivo" |
1112 | 1149 | ||
1113 | -#: src/filetransfer/settings.c:208 src/filetransfer/v3270ft.c:302 | 1150 | +#: src/filetransfer/v3270ft.c:302 src/filetransfer/settings.c:208 |
1114 | msgid "Select local file" | 1151 | msgid "Select local file" |
1115 | msgstr "Selecionar arquivo local" | 1152 | msgstr "Selecionar arquivo local" |
1116 | 1153 | ||
@@ -1138,11 +1175,11 @@ msgstr "Enviar arquivo" | @@ -1138,11 +1175,11 @@ msgstr "Enviar arquivo" | ||
1138 | msgid "Send text file" | 1175 | msgid "Send text file" |
1139 | msgstr "Enviar arquivo texto" | 1176 | msgstr "Enviar arquivo texto" |
1140 | 1177 | ||
1141 | -#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:126 | 1178 | +#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:124 |
1142 | msgid "Sending file" | 1179 | msgid "Sending file" |
1143 | msgstr "Enviando arquivo" | 1180 | msgstr "Enviando arquivo" |
1144 | 1181 | ||
1145 | -#: src/terminal/actions/table.c:217 | 1182 | +#: src/terminal/actions/table.c:241 |
1146 | msgid "Set the font to the best size for window" | 1183 | msgid "Set the font to the best size for window" |
1147 | msgstr "Ajusta a fonte para o melhor tamanho" | 1184 | msgstr "Ajusta a fonte para o melhor tamanho" |
1148 | 1185 | ||
@@ -1162,7 +1199,7 @@ msgstr "Skip this transfer, keep the file on queue." | @@ -1162,7 +1199,7 @@ msgstr "Skip this transfer, keep the file on queue." | ||
1162 | msgid "Smart copy" | 1199 | msgid "Smart copy" |
1163 | msgstr "Cópia inteligente" | 1200 | msgstr "Cópia inteligente" |
1164 | 1201 | ||
1165 | -#: src/filetransfer/settings.c:544 src/filetransfer/v3270ft.c:341 | 1202 | +#: src/filetransfer/v3270ft.c:341 src/filetransfer/settings.c:544 |
1166 | msgid "Space allocation units" | 1203 | msgid "Space allocation units" |
1167 | msgstr "Unidades de alocação de espaço" | 1204 | msgstr "Unidades de alocação de espaço" |
1168 | 1205 | ||
@@ -1222,7 +1259,7 @@ msgstr "Iniciar transferência" | @@ -1222,7 +1259,7 @@ msgstr "Iniciar transferência" | ||
1222 | msgid "Starting" | 1259 | msgid "Starting" |
1223 | msgstr "Iniciando" | 1260 | msgstr "Iniciando" |
1224 | 1261 | ||
1225 | -#: src/filetransfer/worker.c:314 src/dialogs/transfer.c:144 | 1262 | +#: src/filetransfer/worker.c:314 src/dialogs/transfer.c:142 |
1226 | msgid "Starting transfer" | 1263 | msgid "Starting transfer" |
1227 | msgstr "Iniciando transferência" | 1264 | msgstr "Iniciando transferência" |
1228 | 1265 | ||
@@ -1345,18 +1382,18 @@ msgstr "Nome do ícone associado à ação" | @@ -1345,18 +1382,18 @@ msgstr "Nome do ícone associado à ação" | ||
1345 | msgid "The name used to invoke the action" | 1382 | msgid "The name used to invoke the action" |
1346 | msgstr "Nome que é usado para invocar a ação" | 1383 | msgstr "Nome que é usado para invocar a ação" |
1347 | 1384 | ||
1348 | -#: src/dialogs/print/print.c:82 | 1385 | +#: src/dialogs/print/print.c:80 |
1349 | msgid "" | 1386 | msgid "" |
1350 | "The print operation has been canceled, the print settings should not be " | 1387 | "The print operation has been canceled, the print settings should not be " |
1351 | "stored." | 1388 | "stored." |
1352 | msgstr "" | 1389 | msgstr "" |
1353 | "A operação de impressão foi cancelada, configuração não deve ser salva." | 1390 | "A operação de impressão foi cancelada, configuração não deve ser salva." |
1354 | 1391 | ||
1355 | -#: src/dialogs/print/print.c:87 | 1392 | +#: src/dialogs/print/print.c:85 |
1356 | msgid "The print operation is running" | 1393 | msgid "The print operation is running" |
1357 | msgstr "Operação de impressão está em andamento" | 1394 | msgstr "Operação de impressão está em andamento" |
1358 | 1395 | ||
1359 | -#: src/dialogs/print/print.c:77 | 1396 | +#: src/dialogs/print/print.c:75 |
1360 | msgid "The print settings should be stored." | 1397 | msgid "The print settings should be stored." |
1361 | msgstr "Configuração de impressão deve ser armazenada" | 1398 | msgstr "Configuração de impressão deve ser armazenada" |
1362 | 1399 | ||
@@ -1425,7 +1462,7 @@ msgstr "Janela de trace" | @@ -1425,7 +1462,7 @@ msgstr "Janela de trace" | ||
1425 | msgid "Tracks" | 1462 | msgid "Tracks" |
1426 | msgstr "Trilhas" | 1463 | msgstr "Trilhas" |
1427 | 1464 | ||
1428 | -#: src/filetransfer/v3270ftprogress.c:721 src/filetransfer/worker.c:568 | 1465 | +#: src/filetransfer/worker.c:568 src/filetransfer/v3270ftprogress.c:721 |
1429 | msgid "Transfer failed" | 1466 | msgid "Transfer failed" |
1430 | msgstr "Transferência falhou" | 1467 | msgstr "Transferência falhou" |
1431 | 1468 | ||
@@ -1433,7 +1470,7 @@ msgstr "Transferência falhou" | @@ -1433,7 +1470,7 @@ msgstr "Transferência falhou" | ||
1433 | msgid "Transfer operation has timed out" | 1470 | msgid "Transfer operation has timed out" |
1434 | msgstr "Operação de transferência esgotou o tempo de espera" | 1471 | msgstr "Operação de transferência esgotou o tempo de espera" |
1435 | 1472 | ||
1436 | -#: src/filetransfer/settings.c:492 src/filetransfer/v3270ft.c:339 | 1473 | +#: src/filetransfer/v3270ft.c:339 src/filetransfer/settings.c:492 |
1437 | msgid "Transfer options" | 1474 | msgid "Transfer options" |
1438 | msgstr "Opções de transferência" | 1475 | msgstr "Opções de transferência" |
1439 | 1476 | ||
@@ -1467,16 +1504,16 @@ msgstr "Turquesa" | @@ -1467,16 +1504,16 @@ msgstr "Turquesa" | ||
1467 | msgid "UTF-8" | 1504 | msgid "UTF-8" |
1468 | msgstr "UTF-8" | 1505 | msgstr "UTF-8" |
1469 | 1506 | ||
1470 | -#: src/selection/windows/paste.c:115 | 1507 | +#: src/selection/linux/paste.c:116 |
1471 | #, fuzzy | 1508 | #, fuzzy |
1472 | -msgid "Unable to paste formatted data" | 1509 | +msgid "Unable to paste formatted data." |
1473 | msgstr "Incapaz de colar dados formatados." | 1510 | msgstr "Incapaz de colar dados formatados." |
1474 | 1511 | ||
1475 | #: src/filetransfer/tables.c:92 | 1512 | #: src/filetransfer/tables.c:92 |
1476 | msgid "Undefined" | 1513 | msgid "Undefined" |
1477 | msgstr "Indefinido" | 1514 | msgstr "Indefinido" |
1478 | 1515 | ||
1479 | -#: src/terminal/callbacks.c:486 | 1516 | +#: src/terminal/callbacks.c:449 |
1480 | #, c-format | 1517 | #, c-format |
1481 | msgid "Unexpected callback table, the release %s of lib%s is invalid" | 1518 | msgid "Unexpected callback table, the release %s of lib%s is invalid" |
1482 | msgstr "Tabela de callbacks inesperada, a revisão %s da lib%s é inválida" | 1519 | msgstr "Tabela de callbacks inesperada, a revisão %s da lib%s é inválida" |
@@ -1491,7 +1528,7 @@ msgstr "Formato inesperado %d" | @@ -1491,7 +1528,7 @@ msgstr "Formato inesperado %d" | ||
1491 | msgid "Unexpected mode %d" | 1528 | msgid "Unexpected mode %d" |
1492 | msgstr "Modo inesperado %d" | 1529 | msgstr "Modo inesperado %d" |
1493 | 1530 | ||
1494 | -#: src/dialogs/print/print.c:92 | 1531 | +#: src/dialogs/print/print.c:90 |
1495 | #, c-format | 1532 | #, c-format |
1496 | msgid "Unexpected status %d in print operation" | 1533 | msgid "Unexpected status %d in print operation" |
1497 | msgstr "Estado inesperado %d na operação de impressão" | 1534 | msgstr "Estado inesperado %d na operação de impressão" |
@@ -1500,7 +1537,7 @@ msgstr "Estado inesperado %d na operação de impressão" | @@ -1500,7 +1537,7 @@ msgstr "Estado inesperado %d na operação de impressão" | ||
1500 | msgid "Unsecure" | 1537 | msgid "Unsecure" |
1501 | msgstr "Insegura" | 1538 | msgstr "Insegura" |
1502 | 1539 | ||
1503 | -#: src/dialogs/windows/select.c:169 src/dialogs/save/save.c:130 | 1540 | +#: src/dialogs/save/save.c:130 |
1504 | msgid "Untitled document" | 1541 | msgid "Untitled document" |
1505 | msgstr "Documento sem título" | 1542 | msgstr "Documento sem título" |
1506 | 1543 | ||
@@ -1690,11 +1727,11 @@ msgstr "" | @@ -1690,11 +1727,11 @@ msgstr "" | ||
1690 | msgid "You specified an option that is invalid." | 1727 | msgid "You specified an option that is invalid." |
1691 | msgstr "Você especificou uma opção inválida." | 1728 | msgstr "Você especificou uma opção inválida." |
1692 | 1729 | ||
1693 | -#: src/terminal/actions/table.c:195 | 1730 | +#: src/terminal/actions/table.c:219 |
1694 | msgid "Zoom in" | 1731 | msgid "Zoom in" |
1695 | msgstr "Ampliar" | 1732 | msgstr "Ampliar" |
1696 | 1733 | ||
1697 | -#: src/terminal/actions/table.c:205 | 1734 | +#: src/terminal/actions/table.c:229 |
1698 | msgid "Zoom out" | 1735 | msgid "Zoom out" |
1699 | msgstr "Reduzir" | 1736 | msgstr "Reduzir" |
1700 | 1737 | ||
@@ -1706,9 +1743,9 @@ msgstr "Texto _ASCII" | @@ -1706,9 +1743,9 @@ msgstr "Texto _ASCII" | ||
1706 | msgid "_Apply" | 1743 | msgid "_Apply" |
1707 | msgstr "_Aplicar" | 1744 | msgstr "_Aplicar" |
1708 | 1745 | ||
1709 | -#: src/selection/windows/paste.c:83 src/selection/windows/paste.c:123 | ||
1710 | -#: src/dialogs/load.c:205 src/dialogs/load.c:224 src/dialogs/popups.c:170 | ||
1711 | -#: src/dialogs/windows/select.c:158 src/dialogs/print/settingsdialog.c:410 | 1746 | +#: src/selection/linux/paste.c:85 src/dialogs/popups.c:173 |
1747 | +#: src/dialogs/load.c:205 src/dialogs/load.c:224 src/dialogs/linux/select.c:51 | ||
1748 | +#: src/dialogs/linux/select.c:77 src/dialogs/print/settingsdialog.c:410 | ||
1712 | #: src/dialogs/print/settingsdialog.c:429 src/dialogs/save/save.c:342 | 1749 | #: src/dialogs/print/settingsdialog.c:429 src/dialogs/save/save.c:342 |
1713 | #: src/dialogs/save/save.c:361 src/dialogs/settings/dialog.c:231 | 1750 | #: src/dialogs/save/save.c:361 src/dialogs/settings/dialog.c:231 |
1714 | msgid "_Cancel" | 1751 | msgid "_Cancel" |
@@ -1718,9 +1755,9 @@ msgstr "_Cancelar" | @@ -1718,9 +1755,9 @@ msgstr "_Cancelar" | ||
1718 | msgid "_Charset" | 1755 | msgid "_Charset" |
1719 | msgstr "Tabela de _Caracteres" | 1756 | msgstr "Tabela de _Caracteres" |
1720 | 1757 | ||
1721 | -#: src/trace/tracewindow.c:125 src/dialogs/popups.c:101 | ||
1722 | -#: src/dialogs/security.c:236 src/dialogs/transfer.c:163 | ||
1723 | -#: src/dialogs/transfer.c:183 | 1758 | +#: src/trace/tracewindow.c:125 src/dialogs/transfer.c:161 |
1759 | +#: src/dialogs/transfer.c:181 src/dialogs/security.c:236 | ||
1760 | +#: src/dialogs/popups.c:104 | ||
1724 | msgid "_Close" | 1761 | msgid "_Close" |
1725 | msgstr "_Close" | 1762 | msgstr "_Close" |
1726 | 1763 | ||
@@ -1728,6 +1765,10 @@ msgstr "_Close" | @@ -1728,6 +1765,10 @@ msgstr "_Close" | ||
1728 | msgid "_Color table" | 1765 | msgid "_Color table" |
1729 | msgstr "_Tabela de cores" | 1766 | msgstr "_Tabela de cores" |
1730 | 1767 | ||
1768 | +#: src/tools/entry.c:175 | ||
1769 | +msgid "_Continue" | ||
1770 | +msgstr "_Continuar" | ||
1771 | + | ||
1731 | #: src/trace/tracewindow.c:117 | 1772 | #: src/trace/tracewindow.c:117 |
1732 | msgid "_File" | 1773 | msgid "_File" |
1733 | msgstr "_Arquivo" | 1774 | msgstr "_Arquivo" |
@@ -1756,16 +1797,20 @@ msgstr "Arquivo _local:" | @@ -1756,16 +1797,20 @@ msgstr "Arquivo _local:" | ||
1756 | msgid "_Model" | 1797 | msgid "_Model" |
1757 | msgstr "_Modelo" | 1798 | msgstr "_Modelo" |
1758 | 1799 | ||
1759 | -#: src/dialogs/popups.c:83 src/dialogs/popups.c:89 src/dialogs/popups.c:95 | ||
1760 | -#: src/dialogs/popups.c:107 | 1800 | +#: src/dialogs/popups.c:86 src/dialogs/popups.c:92 src/dialogs/popups.c:98 |
1801 | +#: src/dialogs/popups.c:110 | ||
1761 | msgid "_Ok" | 1802 | msgid "_Ok" |
1762 | msgstr "_Ok" | 1803 | msgstr "_Ok" |
1763 | 1804 | ||
1805 | +#: src/tools/entry.c:167 | ||
1806 | +msgid "_Open" | ||
1807 | +msgstr "_Abrir" | ||
1808 | + | ||
1764 | #: src/filetransfer/v3270ft.c:333 | 1809 | #: src/filetransfer/v3270ft.c:333 |
1765 | msgid "_Operation" | 1810 | msgid "_Operation" |
1766 | msgstr "_Operação:" | 1811 | msgstr "_Operação:" |
1767 | 1812 | ||
1768 | -#: src/selection/windows/paste.c:84 src/selection/windows/paste.c:124 | 1813 | +#: src/selection/linux/paste.c:86 src/selection/linux/paste.c:118 |
1769 | msgid "_Paste as text" | 1814 | msgid "_Paste as text" |
1770 | msgstr "_Colar como texto" | 1815 | msgstr "_Colar como texto" |
1771 | 1816 | ||
@@ -1774,7 +1819,7 @@ msgid "_Remote file" | @@ -1774,7 +1819,7 @@ msgid "_Remote file" | ||
1774 | msgstr "Arquivo _remoto:" | 1819 | msgstr "Arquivo _remoto:" |
1775 | 1820 | ||
1776 | #: src/trace/tracewindow.c:123 src/dialogs/save/save.c:347 | 1821 | #: src/trace/tracewindow.c:123 src/dialogs/save/save.c:347 |
1777 | -#: src/dialogs/save/save.c:362 | 1822 | +#: src/dialogs/save/save.c:362 src/tools/entry.c:171 |
1778 | msgid "_Save" | 1823 | msgid "_Save" |
1779 | msgstr "_Salvar" | 1824 | msgstr "_Salvar" |
1780 | 1825 | ||
@@ -1790,7 +1835,7 @@ msgstr "_Serviço" | @@ -1790,7 +1835,7 @@ msgstr "_Serviço" | ||
1790 | msgid "_Text file" | 1835 | msgid "_Text file" |
1791 | msgstr "Arquivo _texto" | 1836 | msgstr "Arquivo _texto" |
1792 | 1837 | ||
1793 | -#: src/terminal/actions/table.c:206 | 1838 | +#: src/terminal/actions/table.c:230 |
1794 | msgid "decrease the font size" | 1839 | msgid "decrease the font size" |
1795 | msgstr "Diminui o tamanho da fonte" | 1840 | msgstr "Diminui o tamanho da fonte" |
1796 | 1841 | ||
@@ -1977,9 +2022,6 @@ msgstr "Diminui o tamanho da fonte" | @@ -1977,9 +2022,6 @@ msgstr "Diminui o tamanho da fonte" | ||
1977 | #~ msgid "Alert sound" | 2022 | #~ msgid "Alert sound" |
1978 | #~ msgstr "Aviso sonoro" | 2023 | #~ msgstr "Aviso sonoro" |
1979 | 2024 | ||
1980 | -#~ msgid "All files" | ||
1981 | -#~ msgstr "Todos os arquivos" | ||
1982 | - | ||
1983 | #~ msgid "" | 2025 | #~ msgid "" |
1984 | #~ "An error occurred trying to allocate memory. This should never happen." | 2026 | #~ "An error occurred trying to allocate memory. This should never happen." |
1985 | #~ msgstr "" | 2027 | #~ msgstr "" |
@@ -2357,15 +2399,9 @@ msgstr "Diminui o tamanho da fonte" | @@ -2357,15 +2399,9 @@ msgstr "Diminui o tamanho da fonte" | ||
2357 | #~ msgid "Connection state" | 2399 | #~ msgid "Connection state" |
2358 | #~ msgstr "Estado da conexão" | 2400 | #~ msgstr "Estado da conexão" |
2359 | 2401 | ||
2360 | -#~ msgid "Continue" | ||
2361 | -#~ msgstr "Continuar" | ||
2362 | - | ||
2363 | #~ msgid "Copiar tudo" | 2402 | #~ msgid "Copiar tudo" |
2364 | #~ msgstr "Copiar tudo" | 2403 | #~ msgstr "Copiar tudo" |
2365 | 2404 | ||
2366 | -#~ msgid "Copy as HTML" | ||
2367 | -#~ msgstr "Copiar como HTML" | ||
2368 | - | ||
2369 | #~ msgid "Critical Error" | 2405 | #~ msgid "Critical Error" |
2370 | #~ msgstr "Erro crítico" | 2406 | #~ msgstr "Erro crítico" |
2371 | 2407 | ||
@@ -2950,9 +2986,6 @@ msgstr "Diminui o tamanho da fonte" | @@ -2950,9 +2986,6 @@ msgstr "Diminui o tamanho da fonte" | ||
2950 | #~ msgid "Non zero if the host is TSO." | 2986 | #~ msgid "Non zero if the host is TSO." |
2951 | #~ msgstr "Diferente de zero se o host é TSO" | 2987 | #~ msgstr "Diferente de zero se o host é TSO" |
2952 | 2988 | ||
2953 | -#~ msgid "None of the screens in the clipboard match with the current one." | ||
2954 | -#~ msgstr "Nenhuma das telas da área de transferência corresponde à atual." | ||
2955 | - | ||
2956 | #~ msgid "Not available" | 2989 | #~ msgid "Not available" |
2957 | #~ msgstr "Não disponível" | 2990 | #~ msgstr "Não disponível" |
2958 | 2991 |
src/dialogs/load.c
@@ -315,16 +315,13 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -315,16 +315,13 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
315 | GError * error = NULL; | 315 | GError * error = NULL; |
316 | v3270_load_dialog_apply(widget,&error); | 316 | v3270_load_dialog_apply(widget,&error); |
317 | 317 | ||
318 | - if(error) | ||
319 | - { | ||
320 | - v3270_popup_gerror( | ||
321 | - widget, | ||
322 | - error, | ||
323 | - NULL, | ||
324 | - _("Can't open %s"),gtk_entry_get_text(GTK_ENTRY(V3270_LOAD_DIALOG(widget)->filename)) | ||
325 | - ); | ||
326 | - g_error_free(error); | ||
327 | - } | 318 | + // The operation has failed? If yes notify user and free error object. |
319 | + v3270_popup_gerror( | ||
320 | + widget, | ||
321 | + &error, | ||
322 | + NULL, | ||
323 | + _("Can't open %s"),gtk_entry_get_text(GTK_ENTRY(V3270_LOAD_DIALOG(widget)->filename)) | ||
324 | + ); | ||
328 | 325 | ||
329 | } | 326 | } |
330 | debug("%s",__FUNCTION__); | 327 | debug("%s",__FUNCTION__); |
src/dialogs/popups.c
@@ -44,6 +44,9 @@ | @@ -44,6 +44,9 @@ | ||
44 | 44 | ||
45 | GtkResponseType v3270_popup_dialog_show(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait) { | 45 | GtkResponseType v3270_popup_dialog_show(GtkWidget *widget, const LIB3270_POPUP *popup, gboolean wait) { |
46 | 46 | ||
47 | + // https://developer.gnome.org/hig/stable/dialogs.html.en | ||
48 | + // https://developer.gnome.org/hig/stable/visual-layout.html.en | ||
49 | + | ||
47 | g_return_val_if_fail(GTK_IS_WIDGET(widget),GTK_RESPONSE_NONE); | 50 | g_return_val_if_fail(GTK_IS_WIDGET(widget),GTK_RESPONSE_NONE); |
48 | 51 | ||
49 | // Check if the dialog is enabled | 52 | // Check if the dialog is enabled |
@@ -178,6 +181,7 @@ | @@ -178,6 +181,7 @@ | ||
178 | GTK_RESPONSE_CANCEL | 181 | GTK_RESPONSE_CANCEL |
179 | ); | 182 | ); |
180 | 183 | ||
184 | + // https://developer.gnome.org/Buttons/ | ||
181 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"destructive-action"); | 185 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"destructive-action"); |
182 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); | 186 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); |
183 | break; | 187 | break; |
@@ -187,6 +191,8 @@ | @@ -187,6 +191,8 @@ | ||
187 | GTK_DIALOG(dialog), | 191 | GTK_DIALOG(dialog), |
188 | GTK_RESPONSE_CANCEL | 192 | GTK_RESPONSE_CANCEL |
189 | ); | 193 | ); |
194 | + | ||
195 | + // https://developer.gnome.org/Buttons/ | ||
190 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); | 196 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_CANCEL,"suggested-action"); |
191 | break; | 197 | break; |
192 | 198 | ||
@@ -195,6 +201,8 @@ | @@ -195,6 +201,8 @@ | ||
195 | GTK_DIALOG(dialog), | 201 | GTK_DIALOG(dialog), |
196 | GTK_RESPONSE_APPLY | 202 | GTK_RESPONSE_APPLY |
197 | ); | 203 | ); |
204 | + | ||
205 | + // https://developer.gnome.org/Buttons/ | ||
198 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"suggested-action"); | 206 | v3270_dialog_add_class_for_response(dialog,GTK_RESPONSE_APPLY,"suggested-action"); |
199 | break; | 207 | break; |
200 | 208 | ||
@@ -260,7 +268,10 @@ | @@ -260,7 +268,10 @@ | ||
260 | 268 | ||
261 | } | 269 | } |
262 | 270 | ||
263 | - void v3270_popup_gerror(GtkWidget *widget, GError *error, const gchar *title, const gchar *fmt, ...) { | 271 | + gboolean v3270_popup_gerror(GtkWidget *widget, GError **error, const gchar *title, const gchar *fmt, ...) { |
272 | + | ||
273 | + if(!(error && *error)) | ||
274 | + return FALSE; | ||
264 | 275 | ||
265 | // Format message. | 276 | // Format message. |
266 | va_list arg_ptr; | 277 | va_list arg_ptr; |
@@ -272,10 +283,15 @@ | @@ -272,10 +283,15 @@ | ||
272 | .type = LIB3270_NOTIFY_ERROR, | 283 | .type = LIB3270_NOTIFY_ERROR, |
273 | .title = title, | 284 | .title = title, |
274 | .summary = summary, | 285 | .summary = summary, |
275 | - .body = error->message | 286 | + .body = (*error)->message |
276 | }; | 287 | }; |
277 | 288 | ||
278 | v3270_popup_dialog_show(widget, &popup, FALSE); | 289 | v3270_popup_dialog_show(widget, &popup, FALSE); |
279 | 290 | ||
291 | + g_error_free(*error); | ||
292 | + *error = NULL; | ||
293 | + | ||
294 | + return TRUE; | ||
295 | + | ||
280 | } | 296 | } |
281 | 297 |
src/dialogs/print/convenience.c
@@ -96,15 +96,13 @@ | @@ -96,15 +96,13 @@ | ||
96 | 96 | ||
97 | if(err) | 97 | if(err) |
98 | { | 98 | { |
99 | - v3270_error_popup( | 99 | + v3270_popup_gerror( |
100 | widget, | 100 | widget, |
101 | - NULL, | 101 | + &err, |
102 | _("Print operation has failed"), | 102 | _("Print operation has failed"), |
103 | err->message | 103 | err->message |
104 | ); | 104 | ); |
105 | 105 | ||
106 | - g_error_free(err); | ||
107 | - | ||
108 | rc = -1; | 106 | rc = -1; |
109 | } | 107 | } |
110 | } | 108 | } |
src/dialogs/print/print.c
@@ -52,13 +52,11 @@ | @@ -52,13 +52,11 @@ | ||
52 | 52 | ||
53 | v3270_popup_gerror( | 53 | v3270_popup_gerror( |
54 | GTK_WIDGET(operation->widget), | 54 | GTK_WIDGET(operation->widget), |
55 | - err, | 55 | + &err, |
56 | NULL, | 56 | NULL, |
57 | "%s",_( "Print operation failed" ) | 57 | "%s",_( "Print operation failed" ) |
58 | ); | 58 | ); |
59 | 59 | ||
60 | - g_error_free(err); | ||
61 | - | ||
62 | } | 60 | } |
63 | 61 | ||
64 | if(operation->widget) | 62 | if(operation->widget) |
src/dialogs/save/save.c
@@ -618,17 +618,12 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | @@ -618,17 +618,12 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_ | ||
618 | GError * error = NULL; | 618 | GError * error = NULL; |
619 | v3270_save_dialog_apply(widget,&error); | 619 | v3270_save_dialog_apply(widget,&error); |
620 | 620 | ||
621 | - if(error) | ||
622 | - { | ||
623 | - v3270_popup_gerror( | ||
624 | - widget, | ||
625 | - error, | ||
626 | - NULL, | ||
627 | - _("Can't save %s"),gtk_entry_get_text(GTK_ENTRY(V3270_SAVE_DIALOG(widget)->filename)) | ||
628 | - ); | ||
629 | - | ||
630 | - g_error_free(error); | ||
631 | - } | 621 | + v3270_popup_gerror( |
622 | + widget, | ||
623 | + &error, | ||
624 | + NULL, | ||
625 | + _("Can't save %s"),gtk_entry_get_text(GTK_ENTRY(V3270_SAVE_DIALOG(widget)->filename)) | ||
626 | + ); | ||
632 | 627 | ||
633 | } | 628 | } |
634 | 629 |
src/dialogs/transfer.c
@@ -86,13 +86,11 @@ static void save_activity_clicked(GtkWidget *button, GObject *activity) | @@ -86,13 +86,11 @@ static void save_activity_clicked(GtkWidget *button, GObject *activity) | ||
86 | 86 | ||
87 | v3270_popup_gerror( | 87 | v3270_popup_gerror( |
88 | button, | 88 | button, |
89 | - error, | 89 | + &error, |
90 | NULL, | 90 | NULL, |
91 | _("Can't save %s"),filename | 91 | _("Can't save %s"),filename |
92 | ); | 92 | ); |
93 | 93 | ||
94 | - g_error_free(error); | ||
95 | - | ||
96 | } | 94 | } |
97 | 95 | ||
98 | } | 96 | } |
src/filetransfer/activitylist.c
@@ -431,13 +431,11 @@ | @@ -431,13 +431,11 @@ | ||
431 | 431 | ||
432 | v3270_popup_gerror( | 432 | v3270_popup_gerror( |
433 | widget, | 433 | widget, |
434 | - error, | 434 | + &error, |
435 | NULL, | 435 | NULL, |
436 | _("Can't save %s"),list->filename | 436 | _("Can't save %s"),list->filename |
437 | ); | 437 | ); |
438 | 438 | ||
439 | - g_error_free(error); | ||
440 | - | ||
441 | } | 439 | } |
442 | 440 | ||
443 | 441 |
src/filetransfer/load.c
@@ -262,18 +262,13 @@ LIB3270_EXPORT void v3270ft_load(GtkWidget *widget,const gchar *filename) { | @@ -262,18 +262,13 @@ LIB3270_EXPORT void v3270ft_load(GtkWidget *widget,const gchar *filename) { | ||
262 | g_list_foreach(GTK_V3270FT(widget)->files,(GFunc) validate_item, error); | 262 | g_list_foreach(GTK_V3270FT(widget)->files,(GFunc) validate_item, error); |
263 | v3270ft_select_last(widget); | 263 | v3270ft_select_last(widget); |
264 | 264 | ||
265 | - if(error) { | 265 | + v3270_popup_gerror( |
266 | + widget, | ||
267 | + &error, | ||
268 | + NULL, | ||
269 | + _("Can't load %s"),filename | ||
270 | + ); | ||
266 | 271 | ||
267 | - v3270_popup_gerror( | ||
268 | - widget, | ||
269 | - error, | ||
270 | - NULL, | ||
271 | - _("Can't load %s"),filename | ||
272 | - ); | ||
273 | - | ||
274 | - g_error_free(error); | ||
275 | - | ||
276 | - } | ||
277 | 272 | ||
278 | } | 273 | } |
279 | 274 |
src/filetransfer/save.c
@@ -112,13 +112,11 @@ static const gchar * getNameByFlag(LIB3270_FT_OPTION opt, LIB3270_FT_OPTION mask | @@ -112,13 +112,11 @@ static const gchar * getNameByFlag(LIB3270_FT_OPTION opt, LIB3270_FT_OPTION mask | ||
112 | 112 | ||
113 | v3270_popup_gerror( | 113 | v3270_popup_gerror( |
114 | widget, | 114 | widget, |
115 | - error, | 115 | + &error, |
116 | NULL, | 116 | NULL, |
117 | _("Can't save %s"),filename | 117 | _("Can't save %s"),filename |
118 | ); | 118 | ); |
119 | 119 | ||
120 | - g_error_free(error); | ||
121 | - | ||
122 | } | 120 | } |
123 | 121 | ||
124 | g_free(text); | 122 | g_free(text); |
src/include/clipboard.h
@@ -104,6 +104,9 @@ | @@ -104,6 +104,9 @@ | ||
104 | G_GNUC_INTERNAL gchar * v3270_get_copy_as_table(v3270 * terminal, const gchar *delimiter, const gchar *encoding); | 104 | G_GNUC_INTERNAL gchar * v3270_get_copy_as_table(v3270 * terminal, const gchar *delimiter, const gchar *encoding); |
105 | G_GNUC_INTERNAL gchar * v3270_get_copy_as_data_block(v3270 * terminal); | 105 | G_GNUC_INTERNAL gchar * v3270_get_copy_as_data_block(v3270 * terminal); |
106 | 106 | ||
107 | + G_GNUC_INTERNAL void v3270_clipboard_clear(GtkClipboard *clipboard, GObject *obj); | ||
108 | + G_GNUC_INTERNAL void v3270_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection, guint target, GObject *obj); | ||
109 | + | ||
107 | /// @brief Set contents. | 110 | /// @brief Set contents. |
108 | G_GNUC_INTERNAL gboolean v3270_set_from_data_block(v3270 * terminal, const struct SelectionHeader *selection); | 111 | G_GNUC_INTERNAL gboolean v3270_set_from_data_block(v3270 * terminal, const struct SelectionHeader *selection); |
109 | 112 |
src/include/v3270.h
@@ -238,13 +238,6 @@ | @@ -238,13 +238,6 @@ | ||
238 | LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); | 238 | LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); |
239 | LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); | 239 | LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); |
240 | 240 | ||
241 | - // SSL & Security | ||
242 | - LIB3270_EXPORT const gchar * v3270_get_ssl_state_icon_name(GtkWidget *widget); | ||
243 | - LIB3270_EXPORT const gchar * v3270_get_ssl_state_message(GtkWidget *widget); | ||
244 | - LIB3270_EXPORT const gchar * v3270_get_ssl_state_description(GtkWidget *widget); | ||
245 | - LIB3270_EXPORT GtkWidget * v3270_security_dialog_new(GtkWidget *widget); | ||
246 | - LIB3270_EXPORT void v3270_popup_security_dialog(GtkWidget *widget); | ||
247 | - | ||
248 | // Auxiliary widgets | 241 | // Auxiliary widgets |
249 | LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); | 242 | LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); |
250 | 243 |
src/include/v3270/dialogs.h
@@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
40 | 40 | ||
41 | LIB3270_EXPORT GtkWidget * v3270_dialog_section_new(const gchar * title, const gchar *tooltip, GtkWidget *child); | 41 | LIB3270_EXPORT GtkWidget * v3270_dialog_section_new(const gchar * title, const gchar *tooltip, GtkWidget *child); |
42 | 42 | ||
43 | - LIB3270_EXPORT void v3270_error_popup(GtkWidget *widget, const gchar *title, const gchar *summary, const gchar *body); | 43 | + LIB3270_EXPORT void v3270_error_popup(GtkWidget *widget, const gchar *title, const gchar *summary, const gchar *body) G_GNUC_DEPRECATED; |
44 | 44 | ||
45 | LIB3270_EXPORT GtkWidget * v3270_save_dialog_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, const gchar *filename); | 45 | LIB3270_EXPORT GtkWidget * v3270_save_dialog_new(GtkWidget *widget, LIB3270_CONTENT_OPTION mode, const gchar *filename); |
46 | LIB3270_EXPORT void v3270_save_dialog_run(GtkWidget *widget); | 46 | LIB3270_EXPORT void v3270_save_dialog_run(GtkWidget *widget); |
@@ -48,7 +48,19 @@ | @@ -48,7 +48,19 @@ | ||
48 | LIB3270_EXPORT GtkWidget * v3270_load_dialog_new(GtkWidget *widget, const gchar *filename); | 48 | LIB3270_EXPORT GtkWidget * v3270_load_dialog_new(GtkWidget *widget, const gchar *filename); |
49 | LIB3270_EXPORT void v3270_load_dialog_run(GtkWidget *widget); | 49 | LIB3270_EXPORT void v3270_load_dialog_run(GtkWidget *widget); |
50 | 50 | ||
51 | - LIB3270_EXPORT void v3270_popup_gerror(GtkWidget *widget, GError *error, const gchar *title, const gchar *fmt, ...) G_GNUC_PRINTF(4,5); | 51 | + /// @brief Popup an error message. |
52 | + /// | ||
53 | + /// If the error is set show popup message and "free" the error. | ||
54 | + /// | ||
55 | + /// @param widget The terminal widget. | ||
56 | + /// @param error The GError (it null doesn't show popup). | ||
57 | + /// @param title The window title (can be NULL). | ||
58 | + /// @param fmt Format for the popup message. | ||
59 | + /// @param ... Arguments for fmt. | ||
60 | + /// | ||
61 | + /// @return TRUE if the popup was sent. | ||
62 | + /// | ||
63 | + LIB3270_EXPORT gboolean v3270_popup_gerror(GtkWidget *widget, GError **error, const gchar *title, const gchar *fmt, ...) G_GNUC_PRINTF(4,5); | ||
52 | 64 | ||
53 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); | 65 | LIB3270_EXPORT GtkTreeModel * v3270_font_family_model_new(GtkWidget *widget, const gchar *selected, GtkTreeIter * active); |
54 | 66 |
src/include/v3270/selection.h
@@ -59,6 +59,9 @@ | @@ -59,6 +59,9 @@ | ||
59 | LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) G_GNUC_DEPRECATED; | 59 | LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) G_GNUC_DEPRECATED; |
60 | LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) G_GNUC_DEPRECATED; | 60 | LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) G_GNUC_DEPRECATED; |
61 | 61 | ||
62 | + LIB3270_EXPORT void v3270_copy_as_html(GtkWidget *widget); | ||
63 | + LIB3270_EXPORT void v3270_copy_as_pixbuff(GtkWidget *widget); | ||
64 | + | ||
62 | // Selections | 65 | // Selections |
63 | 66 | ||
64 | LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); | 67 | LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); |
@@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como tools.h e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | +#ifndef V3270_TOOLS_H_INCLUDED | ||
31 | + | ||
32 | + #include <gtk/gtk.h> | ||
33 | + #include <lib3270.h> | ||
34 | + | ||
35 | + G_BEGIN_DECLS | ||
36 | + | ||
37 | + /// @brief Bind pointer to widget; release it when widget is destroyed. | ||
38 | + LIB3270_EXPORT void gtk_widget_bind_ptr(GtkWidget *widget, gpointer ptr); | ||
39 | + | ||
40 | + /// @brief Bind file chooser with entry field. | ||
41 | + LIB3270_EXPORT void gtk_entry_bind_to_filechooser(GtkWidget *widget, GtkFileChooserAction action, const gchar *title, const gchar *icon_name, const gchar *pattern, const gchar *name); | ||
42 | + | ||
43 | + G_END_DECLS | ||
44 | + | ||
45 | +#endif // V3270_TOOLS_H_INCLUDED | ||
46 | + |
src/selection/copy.c
@@ -30,7 +30,17 @@ | @@ -30,7 +30,17 @@ | ||
30 | #include <clipboard.h> | 30 | #include <clipboard.h> |
31 | #include <lib3270/selection.h> | 31 | #include <lib3270/selection.h> |
32 | 32 | ||
33 | - static void do_copy(v3270 *terminal, gboolean cut) { | 33 | + static void do_copy(v3270 *terminal, V3270_COPY_MODE mode, gboolean cut) { |
34 | + | ||
35 | + if(mode == V3270_COPY_SMART) { | ||
36 | + mode = (terminal->append ? V3270_COPY_APPEND : V3270_COPY_FORMATTED); | ||
37 | + } | ||
38 | + | ||
39 | + if(mode != V3270_COPY_APPEND) { | ||
40 | + // It's not append, clear current contents ... | ||
41 | + v3270_clear_selection(terminal); | ||
42 | + terminal->selection.format = mode; | ||
43 | + } | ||
34 | 44 | ||
35 | lib3270_selection * selection = lib3270_selection_new(terminal->host,cut,0); | 45 | lib3270_selection * selection = lib3270_selection_new(terminal->host,cut,0); |
36 | 46 | ||
@@ -44,32 +54,100 @@ | @@ -44,32 +54,100 @@ | ||
44 | LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) { | 54 | LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) { |
45 | 55 | ||
46 | g_return_if_fail(GTK_IS_V3270(widget)); | 56 | g_return_if_fail(GTK_IS_V3270(widget)); |
57 | + do_copy(GTK_V3270(widget),mode,cut); | ||
58 | + v3270_update_system_clipboard(widget); | ||
59 | + | ||
60 | + } | ||
61 | + | ||
62 | + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) { | ||
63 | + v3270_clipboard_set(widget,mode,cut); | ||
64 | + } | ||
65 | + | ||
66 | + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) { | ||
67 | + v3270_clipboard_set(widget,V3270_COPY_APPEND,cut); | ||
68 | + } | ||
69 | + | ||
70 | + LIB3270_EXPORT void v3270_copy_as_html(GtkWidget *widget) { | ||
47 | 71 | ||
72 | + g_return_if_fail(GTK_IS_V3270(widget)); | ||
48 | v3270 * terminal = GTK_V3270(widget); | 73 | v3270 * terminal = GTK_V3270(widget); |
49 | 74 | ||
50 | - if(mode == V3270_COPY_SMART) { | ||
51 | - mode = (terminal->append ? V3270_COPY_APPEND : V3270_COPY_FORMATTED); | ||
52 | - } | 75 | + debug("%s",__FUNCTION__); |
53 | 76 | ||
54 | - if(mode != V3270_COPY_APPEND) { | 77 | + do_copy(terminal,V3270_COPY_FORMATTED,0); |
55 | 78 | ||
56 | - // It's not append, clear current contents ... | ||
57 | - v3270_clear_selection(terminal); | 79 | + // |
80 | + // Export only in HTML format | ||
81 | + // | ||
82 | + GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,terminal->selection.target); | ||
58 | 83 | ||
59 | - terminal->selection.format = mode; | 84 | + GtkTargetList * list = gtk_target_list_new(NULL,0); |
85 | + | ||
86 | + static const GtkTargetEntry entry = { | ||
87 | + .target = "text/html", | ||
88 | + .flags = 0, | ||
89 | + .info = CLIPBOARD_TYPE_HTML | ||
90 | + }; | ||
91 | + | ||
92 | + gtk_target_list_add_table(list, &entry, 1); | ||
60 | 93 | ||
94 | + int n_targets; | ||
95 | + GtkTargetEntry * targets = gtk_target_table_new_from_list(list, &n_targets); | ||
96 | + | ||
97 | + if(gtk_clipboard_set_with_owner( | ||
98 | + clipboard, | ||
99 | + targets, | ||
100 | + n_targets, | ||
101 | + (GtkClipboardGetFunc) v3270_clipboard_get, | ||
102 | + (GtkClipboardClearFunc) v3270_clipboard_clear, | ||
103 | + G_OBJECT(widget) | ||
104 | + )) | ||
105 | + { | ||
106 | + gtk_clipboard_set_can_store(clipboard,targets,1); | ||
61 | } | 107 | } |
62 | 108 | ||
63 | - do_copy(terminal,cut); | 109 | + gtk_target_table_free(targets, n_targets); |
110 | + gtk_target_list_unref(list); | ||
64 | 111 | ||
65 | - v3270_update_system_clipboard(widget); | 112 | + v3270_emit_copy_state(widget); |
66 | } | 113 | } |
67 | 114 | ||
68 | - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE format, gboolean cut) { | ||
69 | - v3270_clipboard_set(widget,format,cut); | ||
70 | - } | 115 | + LIB3270_EXPORT void v3270_copy_as_pixbuff(GtkWidget *widget) { |
71 | 116 | ||
72 | - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) { | ||
73 | - v3270_clipboard_set(widget,V3270_COPY_APPEND,cut); | ||
74 | - } | 117 | + g_return_if_fail(GTK_IS_V3270(widget)); |
118 | + v3270 * terminal = GTK_V3270(widget); | ||
119 | + | ||
120 | + debug("%s",__FUNCTION__); | ||
121 | + | ||
122 | + do_copy(terminal,V3270_COPY_FORMATTED,0); | ||
123 | + | ||
124 | + // | ||
125 | + // Export only in HTML format | ||
126 | + // | ||
127 | + GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,terminal->selection.target); | ||
128 | + | ||
129 | + GtkTargetList * list = gtk_target_list_new(NULL,0); | ||
130 | + | ||
131 | + gtk_target_list_add_image_targets(list,CLIPBOARD_TYPE_PIXBUFF,TRUE); | ||
132 | + | ||
133 | + int n_targets; | ||
134 | + GtkTargetEntry * targets = gtk_target_table_new_from_list(list, &n_targets); | ||
135 | + | ||
136 | + if(gtk_clipboard_set_with_owner( | ||
137 | + clipboard, | ||
138 | + targets, | ||
139 | + n_targets, | ||
140 | + (GtkClipboardGetFunc) v3270_clipboard_get, | ||
141 | + (GtkClipboardClearFunc) v3270_clipboard_clear, | ||
142 | + G_OBJECT(widget) | ||
143 | + )) | ||
144 | + { | ||
145 | + gtk_clipboard_set_can_store(clipboard,targets,1); | ||
146 | + } | ||
147 | + | ||
148 | + gtk_target_table_free(targets, n_targets); | ||
149 | + gtk_target_list_unref(list); | ||
150 | + | ||
151 | + v3270_emit_copy_state(widget); | ||
75 | 152 | ||
153 | + } |
src/selection/linux/copy.c
@@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
33 | 33 | ||
34 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 34 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
35 | 35 | ||
36 | -static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED GObject *obj) | 36 | +void v3270_clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED GObject *obj) |
37 | { | 37 | { |
38 | v3270 * terminal = GTK_V3270(obj); | 38 | v3270 * terminal = GTK_V3270(obj); |
39 | 39 | ||
@@ -45,7 +45,7 @@ static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED | @@ -45,7 +45,7 @@ static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED | ||
45 | 45 | ||
46 | } | 46 | } |
47 | 47 | ||
48 | -static void clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionData *selection, guint target, GObject *obj) | 48 | +void v3270_clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionData *selection, guint target, GObject *obj) |
49 | { | 49 | { |
50 | v3270 * terminal = GTK_V3270(obj); | 50 | v3270 * terminal = GTK_V3270(obj); |
51 | 51 | ||
@@ -178,8 +178,8 @@ void v3270_update_system_clipboard(GtkWidget *widget) | @@ -178,8 +178,8 @@ void v3270_update_system_clipboard(GtkWidget *widget) | ||
178 | clipboard, | 178 | clipboard, |
179 | targets, | 179 | targets, |
180 | n_targets, | 180 | n_targets, |
181 | - (GtkClipboardGetFunc) clipboard_get, | ||
182 | - (GtkClipboardClearFunc) clipboard_clear, | 181 | + (GtkClipboardGetFunc) v3270_clipboard_get, |
182 | + (GtkClipboardClearFunc) v3270_clipboard_clear, | ||
183 | G_OBJECT(widget) | 183 | G_OBJECT(widget) |
184 | )) | 184 | )) |
185 | { | 185 | { |
@@ -193,3 +193,4 @@ void v3270_update_system_clipboard(GtkWidget *widget) | @@ -193,3 +193,4 @@ void v3270_update_system_clipboard(GtkWidget *widget) | ||
193 | 193 | ||
194 | } | 194 | } |
195 | 195 | ||
196 | + |
src/selection/text.c
@@ -183,8 +183,7 @@ LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const | @@ -183,8 +183,7 @@ LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const | ||
183 | V3270_SIGNAL_PASTENEXT, | 183 | V3270_SIGNAL_PASTENEXT, |
184 | FALSE | 184 | FALSE |
185 | ); | 185 | ); |
186 | - v3270_popup_gerror(widget,error,NULL,"%s",_("Can't paste text")); | ||
187 | - g_error_free(error); | 186 | + v3270_popup_gerror(widget,&error,NULL,"%s",_("Can't paste text")); |
188 | return; | 187 | return; |
189 | } | 188 | } |
190 | 189 |
src/selection/windows/copy.c
@@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
33 | 33 | ||
34 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 34 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
35 | 35 | ||
36 | -static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED GObject *obj) | 36 | +void v3270_clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED GObject *obj) |
37 | { | 37 | { |
38 | v3270 * terminal = GTK_V3270(obj); | 38 | v3270 * terminal = GTK_V3270(obj); |
39 | 39 | ||
@@ -45,7 +45,7 @@ static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED | @@ -45,7 +45,7 @@ static void clipboard_clear(G_GNUC_UNUSED GtkClipboard *clipboard, G_GNUC_UNUSED | ||
45 | 45 | ||
46 | } | 46 | } |
47 | 47 | ||
48 | -static void clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionData *selection, guint target, GObject *obj) | 48 | +void v3270_clipboard_get(G_GNUC_UNUSED GtkClipboard *clipboard, GtkSelectionData *selection, guint target, GObject *obj) |
49 | { | 49 | { |
50 | v3270 * terminal = GTK_V3270(obj); | 50 | v3270 * terminal = GTK_V3270(obj); |
51 | 51 | ||
@@ -178,8 +178,8 @@ void v3270_update_system_clipboard(GtkWidget *widget) | @@ -178,8 +178,8 @@ void v3270_update_system_clipboard(GtkWidget *widget) | ||
178 | clipboard, | 178 | clipboard, |
179 | targets, | 179 | targets, |
180 | n_targets, | 180 | n_targets, |
181 | - (GtkClipboardGetFunc) clipboard_get, | ||
182 | - (GtkClipboardClearFunc) clipboard_clear, | 181 | + (GtkClipboardGetFunc) v3270_clipboard_get, |
182 | + (GtkClipboardClearFunc) v3270_clipboard_clear, | ||
183 | G_OBJECT(widget) | 183 | G_OBJECT(widget) |
184 | )) | 184 | )) |
185 | { | 185 | { |
@@ -192,4 +192,3 @@ void v3270_update_system_clipboard(GtkWidget *widget) | @@ -192,4 +192,3 @@ void v3270_update_system_clipboard(GtkWidget *widget) | ||
192 | v3270_emit_copy_state(widget); | 192 | v3270_emit_copy_state(widget); |
193 | 193 | ||
194 | } | 194 | } |
195 | - |
src/terminal/actions/table.c
@@ -33,14 +33,19 @@ | @@ -33,14 +33,19 @@ | ||
33 | #include <v3270/selection.h> | 33 | #include <v3270/selection.h> |
34 | #include <terminal.h> | 34 | #include <terminal.h> |
35 | 35 | ||
36 | - static int fire_kp_add_action(GtkWidget *widget, const struct _v3270_action * action); | ||
37 | - static int fire_kp_sub_action(GtkWidget *widget, const struct _v3270_action * action); | 36 | +// static int fire_kp_add_action(GtkWidget *widget, const struct _v3270_action * action); |
37 | +// static int fire_kp_sub_action(GtkWidget *widget, const struct _v3270_action * action); | ||
38 | + | ||
39 | + static int fire_copy_as_html(GtkWidget *widget, const struct _v3270_action * action); | ||
40 | + static int fire_copy_as_pixbuff(GtkWidget *widget, const struct _v3270_action * action); | ||
38 | 41 | ||
39 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 42 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
40 | 43 | ||
41 | LIB3270_EXPORT const V3270_ACTION * v3270_get_actions() { | 44 | LIB3270_EXPORT const V3270_ACTION * v3270_get_actions() { |
42 | 45 | ||
43 | static const V3270_ACTION actions[] = { | 46 | static const V3270_ACTION actions[] = { |
47 | + | ||
48 | + /* | ||
44 | { | 49 | { |
45 | .name = "keypad-add", | 50 | .name = "keypad-add", |
46 | .keys = "<Mod2>KP_Add", | 51 | .keys = "<Mod2>KP_Add", |
@@ -53,6 +58,7 @@ | @@ -53,6 +58,7 @@ | ||
53 | .group = LIB3270_ACTION_GROUP_ONLINE, | 58 | .group = LIB3270_ACTION_GROUP_ONLINE, |
54 | .activate = fire_kp_sub_action | 59 | .activate = fire_kp_sub_action |
55 | }, | 60 | }, |
61 | + */ | ||
56 | 62 | ||
57 | // Standard Clipboard actions | 63 | // Standard Clipboard actions |
58 | { | 64 | { |
@@ -68,6 +74,24 @@ | @@ -68,6 +74,24 @@ | ||
68 | }, | 74 | }, |
69 | 75 | ||
70 | { | 76 | { |
77 | + .name = "copy-html", | ||
78 | + .group = LIB3270_ACTION_GROUP_SELECTION, | ||
79 | + .label = N_( "Copy as HTML" ), | ||
80 | + .summary = N_("Copy selection in HTML format"), | ||
81 | + .description = N_("Replace current clipboard contents with the selected area in HTML format"), | ||
82 | + .activate = fire_copy_as_html | ||
83 | + }, | ||
84 | + | ||
85 | + { | ||
86 | + .name = "copy-pixbuff", | ||
87 | + .group = LIB3270_ACTION_GROUP_SELECTION, | ||
88 | + .label = N_( "Copy as image" ), | ||
89 | + .summary = N_("Copy selection in image format"), | ||
90 | + .description = N_("Replace current clipboard contents with the selected area in image format"), | ||
91 | + .activate = fire_copy_as_pixbuff | ||
92 | + }, | ||
93 | + | ||
94 | + { | ||
71 | .name = "copy-append", | 95 | .name = "copy-append", |
72 | .keys = "<Alt>c", | 96 | .keys = "<Alt>c", |
73 | .flags = (V3270_ACTION_FLAGS) V3270_COPY_APPEND, | 97 | .flags = (V3270_ACTION_FLAGS) V3270_COPY_APPEND, |
@@ -321,6 +345,17 @@ | @@ -321,6 +345,17 @@ | ||
321 | 345 | ||
322 | } | 346 | } |
323 | 347 | ||
348 | + static int fire_copy_as_html(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { | ||
349 | + v3270_copy_as_html(widget); | ||
350 | + return 0; | ||
351 | + } | ||
352 | + | ||
353 | + static int fire_copy_as_pixbuff(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { | ||
354 | + v3270_copy_as_pixbuff(widget); | ||
355 | + return 0; | ||
356 | + } | ||
357 | + | ||
358 | + /* | ||
324 | int fire_kp_add_action(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { | 359 | int fire_kp_add_action(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { |
325 | 360 | ||
326 | if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) | 361 | if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) |
@@ -342,3 +377,4 @@ | @@ -342,3 +377,4 @@ | ||
342 | return 0; | 377 | return 0; |
343 | 378 | ||
344 | } | 379 | } |
380 | +*/ |
src/terminal/charset.c
@@ -317,13 +317,11 @@ | @@ -317,13 +317,11 @@ | ||
317 | { | 317 | { |
318 | v3270_popup_gerror( | 318 | v3270_popup_gerror( |
319 | widget, | 319 | widget, |
320 | - error, | 320 | + &error, |
321 | _( "Remap Failed" ), | 321 | _( "Remap Failed" ), |
322 | _( "Can't parse %s" ), path | 322 | _( "Can't parse %s" ), path |
323 | ); | 323 | ); |
324 | 324 | ||
325 | - g_error_free(error); | ||
326 | - | ||
327 | } else { | 325 | } else { |
328 | 326 | ||
329 | unsigned int i; | 327 | unsigned int i; |
src/terminal/drawing/oia.c
@@ -762,6 +762,9 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | @@ -762,6 +762,9 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col, | ||
762 | if(!terminal->surface) | 762 | if(!terminal->surface) |
763 | return; | 763 | return; |
764 | 764 | ||
765 | + // Reset input context | ||
766 | + gtk_im_context_reset(terminal->input_method); | ||
767 | + | ||
765 | // Update cursor rectangle | 768 | // Update cursor rectangle |
766 | saved = terminal->cursor.rect; | 769 | saved = terminal->cursor.rect; |
767 | 770 |
src/terminal/keyboard.c
@@ -86,7 +86,7 @@ | @@ -86,7 +86,7 @@ | ||
86 | #ifdef DEBUG | 86 | #ifdef DEBUG |
87 | { | 87 | { |
88 | g_autofree gchar * keyname = gtk_accelerator_name(event->keyval,event->state); | 88 | g_autofree gchar * keyname = gtk_accelerator_name(event->keyval,event->state); |
89 | - debug("%s Keyval: %d (%s) State: %04x %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", | 89 | + debug("%s Keyval: %d (%s) State: %04x %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%", |
90 | __FUNCTION__, | 90 | __FUNCTION__, |
91 | event->keyval, | 91 | event->keyval, |
92 | gdk_keyval_name(event->keyval), | 92 | gdk_keyval_name(event->keyval), |
@@ -111,13 +111,25 @@ | @@ -111,13 +111,25 @@ | ||
111 | } | 111 | } |
112 | #endif // DEBUG | 112 | #endif // DEBUG |
113 | 113 | ||
114 | - if(gtk_im_context_filter_keypress(terminal->input_method,event)) | ||
115 | - return TRUE; | 114 | + // Check +/- keyboard redirection |
115 | + if(lib3270_get_toggle(terminal->host,LIB3270_TOGGLE_KP_ALTERNATIVE) && !(event->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK|GDK_MOD1_MASK))) { | ||
116 | 116 | ||
117 | - /* | ||
118 | - if(!gtk_accelerator_valid(event->keyval,event->state)) | ||
119 | - return FALSE; | ||
120 | - */ | 117 | + switch(event->keyval) { |
118 | + case GDK_KP_Add: | ||
119 | + debug("%s: Calling lib3270_nextfield",__FUNCTION__); | ||
120 | + gtk_im_context_reset(terminal->input_method); | ||
121 | + lib3270_nextfield(terminal->host); | ||
122 | + return TRUE; | ||
123 | + | ||
124 | + case GDK_KP_Subtract: | ||
125 | + debug("%s: Calling lib3270_previousfield",__FUNCTION__); | ||
126 | + gtk_im_context_reset(terminal->input_method); | ||
127 | + lib3270_previousfield(terminal->host); | ||
128 | + return TRUE; | ||
129 | + | ||
130 | + } | ||
131 | + | ||
132 | + } | ||
121 | 133 | ||
122 | // Signal to the application. | 134 | // Signal to the application. |
123 | gboolean handled = FALSE; | 135 | gboolean handled = FALSE; |
@@ -135,37 +147,23 @@ | @@ -135,37 +147,23 @@ | ||
135 | debug("Keyboard action \"%s\" was %s",key_name,handled ? "Handled" : "Not handled"); | 147 | debug("Keyboard action \"%s\" was %s",key_name,handled ? "Handled" : "Not handled"); |
136 | } | 148 | } |
137 | #endif // DEBUG | 149 | #endif // DEBUG |
138 | - if(handled) | ||
139 | - return TRUE; | ||
140 | 150 | ||
151 | + if(handled) { | ||
152 | + gtk_im_context_reset(terminal->input_method); | ||
153 | + return TRUE; | ||
154 | + } | ||
141 | 155 | ||
142 | - // Check for s | 156 | + // Check for acelerator |
143 | const V3270Accelerator * accelerator = v3270_accelerator_map_lookup_entry(widget, event->keyval, event->state); | 157 | const V3270Accelerator * accelerator = v3270_accelerator_map_lookup_entry(widget, event->keyval, event->state); |
144 | if(accelerator) | 158 | if(accelerator) |
145 | { | 159 | { |
146 | debug("Found accelerator %s",v3270_accelerator_get_name(accelerator)); | 160 | debug("Found accelerator %s",v3270_accelerator_get_name(accelerator)); |
161 | + gtk_im_context_reset(terminal->input_method); | ||
147 | v3270_accelerator_activate(accelerator,widget); | 162 | v3270_accelerator_activate(accelerator,widget); |
148 | return TRUE; | 163 | return TRUE; |
149 | } | 164 | } |
150 | 165 | ||
151 | - /* | ||
152 | - if(event->keyval >= GDK_F1 && event->keyval <= GDK_F12 && !(event->state & (GDK_CONTROL_MASK|GDK_MOD1_MASK))) | ||
153 | - { | ||
154 | - // It's a PFKey Action. | ||
155 | - int pfcode = (event->keyval - GDK_F1) + ((event->state & GDK_SHIFT_MASK) ? 13 : 1); | ||
156 | - | ||
157 | - if(pfcode > 0 && pfcode < 25) | ||
158 | - { | ||
159 | - if(lib3270_pfkey(GTK_V3270(widget)->host,pfcode)) | ||
160 | - gdk_display_beep(gtk_widget_get_display(widget)); | ||
161 | - | ||
162 | - return TRUE; | ||
163 | - } | ||
164 | - | ||
165 | - } | ||
166 | - */ | ||
167 | - | ||
168 | - return FALSE; | 166 | + return gtk_im_context_filter_keypress(terminal->input_method,event); |
169 | 167 | ||
170 | } | 168 | } |
171 | 169 |
src/terminal/mouse.c
@@ -38,6 +38,7 @@ | @@ -38,6 +38,7 @@ | ||
38 | #include <lib3270/log.h> | 38 | #include <lib3270/log.h> |
39 | #include <lib3270/trace.h> | 39 | #include <lib3270/trace.h> |
40 | #include <lib3270/ssl.h> | 40 | #include <lib3270/ssl.h> |
41 | + #include <v3270/security.h> | ||
41 | 42 | ||
42 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | 43 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations" |
43 | 44 |
src/terminal/widget.c
@@ -816,6 +816,11 @@ gboolean v3270_focus_out_event(GtkWidget *widget, GdkEventFocus *event) | @@ -816,6 +816,11 @@ gboolean v3270_focus_out_event(GtkWidget *widget, GdkEventFocus *event) | ||
816 | 816 | ||
817 | gtk_im_context_focus_out(terminal->input_method); | 817 | gtk_im_context_focus_out(terminal->input_method); |
818 | 818 | ||
819 | +#ifdef KEY_FLAG_ALT | ||
820 | + terminal->keyflags &= ~KEY_FLAG_ALT; | ||
821 | + v3270_draw_alt_status(terminal); | ||
822 | +#endif // KEY_FLAG_ALT | ||
823 | + | ||
819 | return notify_focus(widget,event); | 824 | return notify_focus(widget,event); |
820 | } | 825 | } |
821 | 826 |
@@ -0,0 +1,190 @@ | @@ -0,0 +1,190 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como - e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + */ | ||
29 | + | ||
30 | + /** | ||
31 | + * @brief Usefull extensions for GtkEntry. | ||
32 | + * | ||
33 | + */ | ||
34 | + | ||
35 | + #include <internals.h> | ||
36 | + #include <v3270/tools.h> | ||
37 | + #include <string.h> | ||
38 | + | ||
39 | + struct FileEntry { | ||
40 | + GtkFileChooserAction action; | ||
41 | + const gchar * title; | ||
42 | + const gchar * pattern; | ||
43 | + const gchar * name; | ||
44 | + const gchar * accept; | ||
45 | + }; | ||
46 | + | ||
47 | + static void icon_response(GtkDialog *dialog, int response_id, GtkEntry *entry) { | ||
48 | + | ||
49 | + if(response_id == GTK_RESPONSE_ACCEPT) { | ||
50 | + | ||
51 | + g_autofree gchar * filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); | ||
52 | + | ||
53 | + if(filename) { | ||
54 | + | ||
55 | + // https://github.com/PerryWerneck/pw3270/issues/9#issuecomment-708963229 | ||
56 | + // | ||
57 | + // Works here (openSUSE Tumbleweed), BUT: the "open session" dialog comes with a filter | ||
58 | + // set to "TN3270 files" and that's good, but when you save a session pw3270 does NOT add | ||
59 | + // the extension, so how do you know what file extension those "TN3270 files" are supposed to have? | ||
60 | + // | ||
61 | + // I tried .tn3270 but it did not work, so I had to look hard in the internet to find out this page | ||
62 | + // ... | ||
63 | + // | ||
64 | + if(strchr(filename,'.')) { | ||
65 | + | ||
66 | + // Filename has extension, use it. | ||
67 | + gtk_entry_set_text(entry,filename); | ||
68 | + | ||
69 | + } else { | ||
70 | + | ||
71 | + // No extension, add it from the standard. | ||
72 | + const gchar *ext = (const gchar *) g_object_get_data(G_OBJECT(dialog),"default-file-extension"); | ||
73 | + if(ext) { | ||
74 | + g_autofree gchar * new_name = g_strconcat(filename,ext,NULL); | ||
75 | + gtk_entry_set_text(entry,new_name); | ||
76 | + } else { | ||
77 | + g_warning("No default file extension set"); | ||
78 | + gtk_entry_set_text(entry,filename); | ||
79 | + } | ||
80 | + | ||
81 | + } | ||
82 | + | ||
83 | + } else { | ||
84 | + gtk_entry_set_text(entry,""); | ||
85 | + } | ||
86 | + } | ||
87 | + | ||
88 | + gtk_widget_destroy(GTK_WIDGET(dialog)); | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + static void icon_press(GtkWidget *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, const struct FileEntry *descr) { | ||
93 | + | ||
94 | + GtkWidget * dialog = | ||
95 | + gtk_file_chooser_dialog_new( | ||
96 | + gettext(descr->title), | ||
97 | + GTK_WINDOW(gtk_widget_get_toplevel(entry)), | ||
98 | + descr->action, | ||
99 | + _("Cancel"), GTK_RESPONSE_CANCEL, | ||
100 | + descr->accept, GTK_RESPONSE_ACCEPT, | ||
101 | + NULL | ||
102 | + ); | ||
103 | + | ||
104 | + { | ||
105 | + GtkFileFilter *filter; | ||
106 | + | ||
107 | + // Standard filter | ||
108 | + filter = gtk_file_filter_new(); | ||
109 | + gtk_file_filter_add_pattern (filter, descr->pattern); | ||
110 | + gtk_file_filter_set_name(filter, gettext(descr->name)); | ||
111 | + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); | ||
112 | + | ||
113 | + const gchar *ext = strchr(descr->pattern,'.'); | ||
114 | + if(ext) { | ||
115 | + g_object_set_data_full(G_OBJECT(dialog),"default-file-extension",g_strdup(ext),g_free); | ||
116 | + } | ||
117 | + | ||
118 | + // All files | ||
119 | + filter = gtk_file_filter_new(); | ||
120 | + gtk_file_filter_add_pattern (filter, "*.*"); | ||
121 | + gtk_file_filter_set_name(filter, _("All files")); | ||
122 | + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); | ||
123 | + | ||
124 | + } | ||
125 | + | ||
126 | + gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); | ||
127 | + gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); | ||
128 | + | ||
129 | + const gchar *filename = gtk_entry_get_text(GTK_ENTRY(entry)); | ||
130 | + | ||
131 | + if(filename && *filename) | ||
132 | + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),filename); | ||
133 | + | ||
134 | + g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); | ||
135 | + g_signal_connect(dialog,"response",G_CALLBACK(icon_response),entry); | ||
136 | + | ||
137 | + gtk_widget_show_all(dialog); | ||
138 | + | ||
139 | + | ||
140 | + } | ||
141 | + | ||
142 | + static void release_ptr(GtkWidget G_GNUC_UNUSED(*object), gpointer ptr) { | ||
143 | + g_free(ptr); | ||
144 | + } | ||
145 | + | ||
146 | + LIB3270_EXPORT void gtk_widget_bind_ptr(GtkWidget *widget, gpointer ptr) { | ||
147 | + g_signal_connect(widget,"destroy",G_CALLBACK(release_ptr),ptr); | ||
148 | + } | ||
149 | + | ||
150 | + LIB3270_EXPORT void gtk_entry_bind_to_filechooser(GtkWidget *widget, GtkFileChooserAction action, const gchar *title, const gchar *icon_name, const gchar *pattern, const gchar *name) { | ||
151 | + | ||
152 | + gtk_entry_set_icon_from_icon_name( | ||
153 | + GTK_ENTRY(widget), | ||
154 | + GTK_ENTRY_ICON_SECONDARY, | ||
155 | + icon_name ? icon_name : "document-open" | ||
156 | + ); | ||
157 | + | ||
158 | + // Store data | ||
159 | + gsize szEntry = sizeof(struct FileEntry) + strlen(title) + strlen(pattern) + strlen(name) + 4; | ||
160 | + struct FileEntry * entry = (struct FileEntry *) g_malloc0(szEntry); | ||
161 | + gtk_widget_bind_ptr(widget,entry); | ||
162 | + | ||
163 | + entry->action = action; | ||
164 | + | ||
165 | + switch(action) { | ||
166 | + case GTK_FILE_CHOOSER_ACTION_OPEN: | ||
167 | + entry->accept = _("_Open"); | ||
168 | + break; | ||
169 | + | ||
170 | + case GTK_FILE_CHOOSER_ACTION_SAVE: | ||
171 | + entry->accept = _("_Save"); | ||
172 | + break; | ||
173 | + | ||
174 | + default: | ||
175 | + entry->accept = _("_Continue"); | ||
176 | + | ||
177 | + } | ||
178 | + | ||
179 | + entry->title = (const char *) (entry+1); | ||
180 | + strcpy((char *) entry->title,title); | ||
181 | + | ||
182 | + entry->pattern = entry->title + strlen(entry->title) +1; | ||
183 | + strcpy((char *) entry->pattern,pattern); | ||
184 | + | ||
185 | + entry->name = entry->pattern + strlen(entry->pattern) + 1; | ||
186 | + strcpy((char *) entry->name,name); | ||
187 | + | ||
188 | + g_signal_connect(widget,"icon_press",G_CALLBACK(icon_press),(gpointer) entry); | ||
189 | + | ||
190 | + } |
src/trace/trace.c
@@ -477,18 +477,12 @@ | @@ -477,18 +477,12 @@ | ||
477 | 477 | ||
478 | g_free(text); | 478 | g_free(text); |
479 | 479 | ||
480 | - if(error) | ||
481 | - { | ||
482 | - v3270_popup_gerror( | ||
483 | - widget, | ||
484 | - error, | ||
485 | - NULL, | ||
486 | - _( "Can't save %s" ), filename | ||
487 | - ); | ||
488 | - | ||
489 | - g_error_free(error); | ||
490 | - | ||
491 | - } | 480 | + v3270_popup_gerror( |
481 | + widget, | ||
482 | + &error, | ||
483 | + NULL, | ||
484 | + _( "Can't save %s" ), filename | ||
485 | + ); | ||
492 | 486 | ||
493 | } | 487 | } |
494 | 488 |
v3270.cbp
@@ -198,6 +198,7 @@ | @@ -198,6 +198,7 @@ | ||
198 | <Unit filename="src/include/v3270/selection.h" /> | 198 | <Unit filename="src/include/v3270/selection.h" /> |
199 | <Unit filename="src/include/v3270/settings.h" /> | 199 | <Unit filename="src/include/v3270/settings.h" /> |
200 | <Unit filename="src/include/v3270/toggle.h" /> | 200 | <Unit filename="src/include/v3270/toggle.h" /> |
201 | + <Unit filename="src/include/v3270/tools.h" /> | ||
201 | <Unit filename="src/include/v3270/trace.h" /> | 202 | <Unit filename="src/include/v3270/trace.h" /> |
202 | <Unit filename="src/selection/copy.c"> | 203 | <Unit filename="src/selection/copy.c"> |
203 | <Option compilerVar="CC" /> | 204 | <Option compilerVar="CC" /> |
@@ -404,6 +405,9 @@ | @@ -404,6 +405,9 @@ | ||
404 | <Unit filename="src/testprogram/toolbar.c"> | 405 | <Unit filename="src/testprogram/toolbar.c"> |
405 | <Option compilerVar="CC" /> | 406 | <Option compilerVar="CC" /> |
406 | </Unit> | 407 | </Unit> |
408 | + <Unit filename="src/tools/entry.c"> | ||
409 | + <Option compilerVar="CC" /> | ||
410 | + </Unit> | ||
407 | <Unit filename="src/trace/exec.c"> | 411 | <Unit filename="src/trace/exec.c"> |
408 | <Option compilerVar="CC" /> | 412 | <Option compilerVar="CC" /> |
409 | </Unit> | 413 | </Unit> |