Commit 8c67970fc273d1133a05bed0e71c21ecc47799a6

Authored by Perry Werneck
Committed by GitHub
2 parents 0aca5542 d5dbe350
Exists in master and in 1 other branch develop

Merge pull request #9 from PerryWerneck/develop

Updating to the last development version; many fixes and improvements.
@@ -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
@@ -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 &quot;&quot; @@ -5,8 +5,8 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -24,7 +24,7 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -47,7 +47,7 @@ msgstr &quot;&quot;
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 &quot;Nome da Ação&quot; @@ -80,7 +80,7 @@ msgstr &quot;Nome da Ação&quot;
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 &quot;Adicionar à cópia&quot; @@ -88,6 +88,10 @@ msgstr &quot;Adicionar à cópia&quot;
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 &quot;&quot; @@ -108,11 +112,11 @@ msgstr &quot;&quot;
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 &quot;Não é possível adicionar atividade&quot; @@ -179,12 +183,12 @@ msgstr &quot;Não é possível adicionar atividade&quot;
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 &quot;Erro ao converter valor do cgcsid&quot; @@ -202,7 +206,7 @@ msgstr &quot;Erro ao converter valor do cgcsid&quot;
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 &quot;Não é possivel colar&quot; @@ -210,13 +214,13 @@ msgstr &quot;Não é possivel colar&quot;
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 &quot;Não foi possível setar a tabela de retornos&quot; @@ -224,13 +228,13 @@ msgstr &quot;Não foi possível setar a tabela de retornos&quot;
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 &quot;Comando a executar&quot; @@ -298,15 +302,23 @@ msgstr &quot;Comando a executar&quot;
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 &quot;Copiar como tabela&quot; @@ -314,7 +326,15 @@ msgstr &quot;Copiar como tabela&quot;
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 &quot;Atual:&quot; @@ -356,20 +376,20 @@ msgstr &quot;Atual:&quot;
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 &quot;Turquesa Escuro&quot; @@ -397,20 +417,19 @@ msgstr &quot;Turquesa Escuro&quot;
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 &quot;Emulação&quot; @@ -422,7 +441,7 @@ msgstr &quot;Emulação&quot;
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 &quot;_Formato do arquivo&quot; @@ -446,7 +465,7 @@ msgstr &quot;_Formato do arquivo&quot;
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 &quot;Ignore the fail and remove the file from queue.&quot; @@ -569,11 +588,11 @@ msgstr &quot;Ignore the fail and remove the file from queue.&quot;
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 &quot;Intensificado/Protegido&quot; @@ -589,7 +608,7 @@ msgstr &quot;Intensificado/Protegido&quot;
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 &quot;Atalhos de teclado&quot; @@ -619,11 +638,11 @@ msgstr &quot;Atalhos de teclado&quot;
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 &quot;Nenhum (Não exporta cores)&quot; @@ -703,6 +722,10 @@ msgstr &quot;Nenhum (Não exporta cores)&quot;
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 &quot;Normal/Protegido&quot; @@ -711,7 +734,7 @@ msgstr &quot;Normal/Protegido&quot;
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 &quot;Abrir&quot; @@ -747,7 +770,7 @@ msgstr &quot;Abrir&quot;
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 &quot;Oversize&quot; @@ -771,23 +794,23 @@ msgstr &quot;Oversize&quot;
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 &quot;Colar tela formatada&quot; @@ -795,7 +818,7 @@ msgstr &quot;Colar tela formatada&quot;
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 &quot;Colar de um arquivo texto&quot; @@ -803,7 +826,7 @@ msgstr &quot;Colar de um arquivo texto&quot;
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 &quot;&quot; @@ -855,11 +878,11 @@ msgstr &quot;&quot;
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 &quot;Operação de impressão falhou&quot; @@ -871,19 +894,19 @@ msgstr &quot;Operação de impressão falhou&quot;
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 &quot;Imprimir área selecionada&quot; @@ -891,7 +914,7 @@ msgstr &quot;Imprimir área selecionada&quot;
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 &quot;Receber arquivo&quot; @@ -915,7 +938,7 @@ msgstr &quot;Receber arquivo&quot;
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 &quot;Recebendo arquivo&quot; @@ -923,7 +946,7 @@ msgstr &quot;Recebendo arquivo&quot;
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 &quot;Remoto:&quot; @@ -956,10 +979,24 @@ msgstr &quot;Remoto:&quot;
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 &quot;SSL/TLS&quot; @@ -984,13 +1021,13 @@ msgstr &quot;SSL/TLS&quot;
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 &quot;Salvar cópia&quot; @@ -998,31 +1035,31 @@ msgstr &quot;Salvar cópia&quot;
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 &quot;Salvar área selecionada&quot; @@ -1030,7 +1067,7 @@ msgstr &quot;Salvar área selecionada&quot;
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 &quot;Salvar trace para arquivo&quot; @@ -1038,7 +1075,7 @@ msgstr &quot;Salvar trace para arquivo&quot;
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 &quot;Salvar fila de transferências para arquivo&quot; @@ -1058,7 +1095,7 @@ msgstr &quot;Salvar fila de transferências para arquivo&quot;
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 &quot;&quot; @@ -1078,7 +1115,7 @@ msgstr &quot;&quot;
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 &quot;Seleciona mapeamento de teclado personalizado&quot; @@ -1096,7 +1133,7 @@ msgstr &quot;Seleciona mapeamento de teclado personalizado&quot;
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 &quot;Selecionar primeiro arquivo&quot; @@ -1110,7 +1147,7 @@ msgstr &quot;Selecionar primeiro arquivo&quot;
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 &quot;Enviar arquivo&quot; @@ -1138,11 +1175,11 @@ msgstr &quot;Enviar arquivo&quot;
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 &quot;Skip this transfer, keep the file on queue.&quot; @@ -1162,7 +1199,7 @@ msgstr &quot;Skip this transfer, keep the file on queue.&quot;
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 &quot;Iniciar transferência&quot; @@ -1222,7 +1259,7 @@ msgstr &quot;Iniciar transferência&quot;
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 &quot;Nome do ícone associado à ação&quot; @@ -1345,18 +1382,18 @@ msgstr &quot;Nome do ícone associado à ação&quot;
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 &quot;Janela de trace&quot; @@ -1425,7 +1462,7 @@ msgstr &quot;Janela de trace&quot;
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 &quot;Transferência falhou&quot; @@ -1433,7 +1470,7 @@ msgstr &quot;Transferência falhou&quot;
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 &quot;Turquesa&quot; @@ -1467,16 +1504,16 @@ msgstr &quot;Turquesa&quot;
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 &quot;Formato inesperado %d&quot; @@ -1491,7 +1528,7 @@ msgstr &quot;Formato inesperado %d&quot;
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 &quot;Estado inesperado %d na operação de impressão&quot; @@ -1500,7 +1537,7 @@ msgstr &quot;Estado inesperado %d na operação de impressão&quot;
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 &quot;&quot; @@ -1690,11 +1727,11 @@ msgstr &quot;&quot;
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 &quot;Texto _ASCII&quot; @@ -1706,9 +1743,9 @@ msgstr &quot;Texto _ASCII&quot;
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 &quot;_Cancelar&quot; @@ -1718,9 +1755,9 @@ msgstr &quot;_Cancelar&quot;
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 &quot;_Close&quot; @@ -1728,6 +1765,10 @@ msgstr &quot;_Close&quot;
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 &quot;Arquivo _local:&quot; @@ -1756,16 +1797,20 @@ msgstr &quot;Arquivo _local:&quot;
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 &quot;_Remote file&quot; @@ -1774,7 +1819,7 @@ msgid &quot;_Remote file&quot;
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 &quot;_Serviço&quot; @@ -1790,7 +1835,7 @@ msgstr &quot;_Serviço&quot;
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 &quot;Diminui o tamanho da fonte&quot; @@ -1977,9 +2022,6 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
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 &quot;Diminui o tamanho da fonte&quot; @@ -2357,15 +2399,9 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
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 &quot;Diminui o tamanho da fonte&quot; @@ -2950,9 +2986,6 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
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);
src/include/v3270/tools.h 0 → 100644
@@ -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
src/tools/entry.c 0 → 100644
@@ -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
@@ -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>