Commit 7daf2ea7978618321281194a8c74c63e29358434

Authored by Perry Werneck
Committed by GitHub
2 parents db42ffbd 07a72433
Exists in master and in 1 other branch develop

Merge pull request #13 from PerryWerneck/develop

Update to latest developmento level.
Makefile.in
... ... @@ -109,7 +109,8 @@ DEPENDS= \
109 109 src/filetransfer/marshal.h \
110 110 src/filetransfer/private.h \
111 111 src/terminal/marshal.h \
112   - src/trace/marshal.h
  112 + src/trace/marshal.h \
  113 + src/dialogs/settings/marshal.h
113 114  
114 115 DATE_FMT = +%Y%m%d
115 116 ifdef SOURCE_DATE_EPOCH
... ... @@ -239,6 +240,14 @@ src/terminal/marshal.h: \
239 240  
240 241 @$(GENMARSHAL) --prefix=v3270 --header $< > $@
241 242  
  243 +src/dialogs/settings/marshal.h: \
  244 + src/dialogs/settings/marshal
  245 +
  246 + @echo $@ ...
  247 + @$(MKDIR) $(@D)
  248 +
  249 + @$(GENMARSHAL) --prefix=v3270 --header $< > $@
  250 +
242 251 $(OBJDIR)/marshal/v3270.c: \
243 252 src/terminal/marshal
244 253  
... ...
locale/pt_BR.po
1 1 #
2   -# Perry Werneck <perry.werneck@gmail.com>, 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020.
  2 +# Perry Werneck <perry.werneck@gmail.com>, 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021.
3 3 #
4 4 msgid ""
5 5 msgstr ""
6 6 "Project-Id-Version: pw3270 5.0\n"
7 7 "Report-Msgid-Bugs-To: \n"
8   -"POT-Creation-Date: 2020-10-24 11:11-0300\n"
9   -"PO-Revision-Date: 2020-10-15 15:37-0300\n"
  8 +"POT-Creation-Date: 2021-04-19 00:14-0300\n"
  9 +"PO-Revision-Date: 2021-04-19 00:49-0300\n"
10 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11   -"Language-Team: Português <>\n"
  11 +"Language-Team: Português <perry.werneck@gmail.com>\n"
12 12 "Language: pt_BR\n"
13 13 "MIME-Version: 1.0\n"
14 14 "Content-Type: text/plain; charset=UTF-8\n"
... ... @@ -16,11 +16,10 @@ msgstr &quot;&quot;
16 16 "X-Poedit-Language: Portuguese\n"
17 17 "X-Poedit-Country: BRAZIL\n"
18 18 "X-Poedit-SourceCharset: utf-8\n"
19   -"Plural-Forms: nplurals=4; plural= (n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
20   -"11) ? 2 : 3;\n"
  19 +"Plural-Forms: nplurals=2; plural=(n > 1);\n"
21 20 "X-Generator: Gtranslator 2.91.7\n"
22 21  
23   -#: src/dialogs/settings/host.c:170
  22 +#: src/dialogs/settings/host.c:169
24 23 msgid "16 colors"
25 24 msgstr "16 cores"
26 25  
... ... @@ -31,15 +30,15 @@ msgstr &quot;16 cores&quot;
31 30 msgid "3270 File transfer"
32 31 msgstr "Transferência de arquivos 3270"
33 32  
34   -#: src/terminal/accessible.c:101
  33 +#: src/terminal/accessible.c:100
35 34 msgid "3270 screen"
36 35 msgstr "Tela 3270"
37 36  
38   -#: src/dialogs/settings/host.c:169
  37 +#: src/dialogs/settings/host.c:168
39 38 msgid "8 colors"
40 39 msgstr "8 cores"
41 40  
42   -#: src/terminal/widget.c:158
  41 +#: src/terminal/widget.c:159
43 42 msgid ""
44 43 "<b>Identity not verified</b>\n"
45 44 "Disconnected from host"
... ... @@ -55,7 +54,7 @@ msgstr &quot;&lt;b&gt;Opções de texto&lt;/b&gt;&quot;
55 54 msgid "A_ppend to file"
56 55 msgstr "_Adicionar ao arquivo"
57 56  
58   -#: src/dialogs/security.c:241
  57 +#: src/dialogs/security.c:238
59 58 msgid "About security"
60 59 msgstr "Sobre a segurança"
61 60  
... ... @@ -84,11 +83,11 @@ msgstr &quot;Atividade já está na fila&quot;
84 83 msgid "Add to copy"
85 84 msgstr "Adicionar à cópia"
86 85  
87   -#: src/dialogs/settings/host.c:216
  86 +#: src/dialogs/settings/url.c:209
88 87 msgid "Address or name of the host to connect."
89 88 msgstr "Endereço ou nome do host a conectar."
90 89  
91   -#: src/tools/entry.c:121
  90 +#: src/tools/entry.c:122
92 91 msgid "All files"
93 92 msgstr "Todos os arquivos"
94 93  
... ... @@ -129,7 +128,7 @@ msgstr &quot;Adiciona conteúdo do arquivo origem ao final do arquivo destino.&quot;
129 128 msgid "Assign it to action (<b>%s</b>)?"
130 129 msgstr "Associar com a ação (<b>%s</b>)?"
131 130  
132   -#: src/dialogs/settings/host.c:510
  131 +#: src/dialogs/settings/host.c:463
133 132 msgid "Auto _disconnect"
134 133 msgstr "Desconexão automática"
135 134  
... ... @@ -166,7 +165,7 @@ msgstr &quot;Azul&quot;
166 165 msgid "Bold"
167 166 msgstr "Negrito"
168 167  
169   -#: src/dialogs/load.c:181 src/dialogs/save/save.c:268
  168 +#: src/dialogs/load.c:199 src/dialogs/save/save.c:276
170 169 msgid "C_haracter Coding"
171 170 msgstr "C_odificação de caracteres"
172 171  
... ... @@ -188,7 +187,7 @@ msgstr &quot;Não encontrei uma fonte válida com o nome \&quot;%s\&quot;&quot;
188 187 msgid "Can't load %s"
189 188 msgstr "Não foi possível carregar %s"
190 189  
191   -#: src/dialogs/load.c:323
  190 +#: src/dialogs/load.c:317
192 191 #, c-format
193 192 msgid "Can't open %s"
194 193 msgstr "Não foi possível abrir %s"
... ... @@ -215,26 +214,25 @@ msgid &quot;Can&#39;t paste text&quot;
215 214 msgstr "Não é possível colar texto"
216 215  
217 216 #: 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
  217 +#: src/trace/trace.c:484 src/dialogs/transfer.c:91 src/dialogs/save/save.c:608
219 218 #, c-format
220 219 msgid "Can't save %s"
221 220 msgstr "Não foi possível salvar arquivo %s"
222 221  
223   -#: src/filetransfer/worker.c:610 src/filetransfer/v3270ftprogress.c:773
  222 +#: src/filetransfer/worker.c:618 src/filetransfer/v3270ftprogress.c:781
224 223 msgid "Can't set callback table"
225 224 msgstr "Não foi possível setar a tabela de retornos"
226 225  
227   -#: src/terminal/iocallback.c:200
  226 +#: src/terminal/iocallback.c:196
228 227 msgid "Can't set lib3270 I/O controller"
229 228 msgstr "Não foi possível registrar manipuladores de I/O 3270"
230 229  
231   -#: src/filetransfer/worker.c:591 src/filetransfer/v3270ftprogress.c:760
  230 +#: src/filetransfer/worker.c:599 src/filetransfer/v3270ftprogress.c:768
232 231 msgid "Can't start file transfer session"
233 232 msgstr "Não foi possível iniciar transferência de arquivo"
234 233  
235 234 #: src/filetransfer/v3270ftprogress.c:433 src/filetransfer/transfer.c:89
236   -#: src/dialogs/load.c:111 src/dialogs/save/save.c:117
237   -#: src/dialogs/settings/host.c:401 src/tools/entry.c:99
  235 +#: src/dialogs/settings/host.c:366 src/tools/entry.c:99
238 236 msgid "Cancel"
239 237 msgstr "Cancelar"
240 238  
... ... @@ -246,18 +244,6 @@ msgstr &quot;Cancelar transferência&quot;
246 244 msgid "Check this if the file consists of character data only."
247 245 msgstr "Marque se o arquivo contem apenas texto."
248 246  
249   -#: src/dialogs/load.c:206 src/dialogs/save/save.c:343
250   -msgid "Click to cancel operation"
251   -msgstr "Clique para cancelar operação"
252   -
253   -#: src/dialogs/load.c:211
254   -msgid "Click to load file"
255   -msgstr "Clique para carregar arquivo"
256   -
257   -#: src/dialogs/save/save.c:348
258   -msgid "Click to save file"
259   -msgstr "Clique para salvar arquivo"
260   -
261 247 #: src/dialogs/settings/clipboard.c:420
262 248 msgid "Clipboard"
263 249 msgstr "Área de transferência"
... ... @@ -286,11 +272,11 @@ msgstr &quot;Cores&quot;
286 272 msgid "Comma separated list of LU names"
287 273 msgstr "Lista de LUs separadas por vírgula"
288 274  
289   -#: src/dialogs/settings/host.c:268
  275 +#: src/dialogs/settings/host.c:241
290 276 msgid "Comma separated list of LU names."
291 277 msgstr "Lista de LUs separadas por vírgula."
292 278  
293   -#: src/dialogs/save/save.c:55
  279 +#: src/dialogs/save/save.c:56
294 280 msgid "Comma-separated values (CSV)"
295 281 msgstr "Arquivo separado por vírgulas (CSV)"
296 282  
... ... @@ -298,7 +284,7 @@ msgstr &quot;Arquivo separado por vírgulas (CSV)&quot;
298 284 msgid "Command to execute"
299 285 msgstr "Comando a executar"
300 286  
301   -#: src/dialogs/settings/host.c:471
  287 +#: src/dialogs/settings/host.c:430
302 288 msgid "Connection"
303 289 msgstr "Conexão"
304 290  
... ... @@ -355,7 +341,7 @@ msgstr &quot;Cria arquivo com registros de tamanho variável.&quot;
355 341 msgid "Cross hair cursor"
356 342 msgstr "Cursor mira"
357 343  
358   -#: src/dialogs/tools.c:182
  344 +#: src/dialogs/tools.c:178
359 345 #, c-format
360 346 msgid "Current (%s)"
361 347 msgstr "Atual (%s)"
... ... @@ -372,7 +358,7 @@ msgstr &quot;Posição atual da transferência&quot;
372 358 msgid "Current:"
373 359 msgstr "Atual:"
374 360  
375   -#: src/dialogs/settings/host.c:254
  361 +#: src/dialogs/settings/host.c:227
376 362 msgid "Custom Remap"
377 363 msgstr "Mapeamento personalizado"
378 364  
... ... @@ -417,7 +403,7 @@ msgstr &quot;Turquesa Escuro&quot;
417 403 msgid "Default"
418 404 msgstr "Padrão"
419 405  
420   -#: src/dialogs/popups.c:149
  406 +#: src/dialogs/popups.c:155
421 407 msgid "Don't ask again"
422 408 msgstr "Não perguntar de novo"
423 409  
... ... @@ -433,7 +419,7 @@ msgstr &quot;ETA:&quot;
433 419 msgid "Emit a PA Key action"
434 420 msgstr "Emite uma ação de tecla PA"
435 421  
436   -#: src/dialogs/settings/host.c:481
  422 +#: src/dialogs/settings/host.c:440
437 423 msgid "Emulation"
438 424 msgstr "Emulação"
439 425  
... ... @@ -445,7 +431,7 @@ msgstr &quot;Habilitado&quot;
445 431 msgid "Error on print operation"
446 432 msgstr "Erro na operação de impressão"
447 433  
448   -#: src/dialogs/save/save.c:579
  434 +#: src/dialogs/save/save.c:562
449 435 msgid "Error saving image"
450 436 msgstr "Erro ao salvar imagem"
451 437  
... ... @@ -457,7 +443,7 @@ msgstr &quot;Tempo estimado para a transferência&quot;
457 443 msgid "Field colors"
458 444 msgstr "Cor dos campos"
459 445  
460   -#: src/dialogs/save/save.c:282
  446 +#: src/dialogs/save/save.c:290
461 447 msgid "File _Format"
462 448 msgstr "_Formato do arquivo"
463 449  
... ... @@ -544,27 +530,31 @@ msgstr &quot;Verde&quot;
544 530 msgid "HTML options"
545 531 msgstr "Opções HTML"
546 532  
547   -#: src/dialogs/settings/host.c:664
  533 +#: src/dialogs/settings/host.c:580
548 534 msgid "Host"
549 535 msgstr "Servidor"
550 536  
551   -#: src/dialogs/settings/host.c:663
  537 +#: src/dialogs/settings/host.c:579
552 538 msgid "Host settings"
553 539 msgstr "Configurações do servidor"
554 540  
555   -#: src/dialogs/save/save.c:59
  541 +#: src/dialogs/settings/url.c:208
  542 +msgid "Hostname"
  543 +msgstr "Nome do host"
  544 +
  545 +#: src/dialogs/save/save.c:60
556 546 msgid "HyperText Markup Language (HTML)"
557 547 msgstr "Documento HTML"
558 548  
559   -#: src/dialogs/settings/host.c:140
  549 +#: src/dialogs/settings/host.c:139
560 550 msgid "IBM AS/400"
561 551 msgstr "IBM AS/400"
562 552  
563   -#: src/dialogs/settings/host.c:139
  553 +#: src/dialogs/settings/host.c:138
564 554 msgid "IBM S/390"
565 555 msgstr "IBM S/390"
566 556  
567   -#: src/terminal/properties/init.c:113 src/dialogs/settings/host.c:514
  557 +#: src/terminal/properties/init.c:113 src/dialogs/settings/host.c:467
568 558 msgid "IDLE minutes for automatic disconnection"
569 559 msgstr "Minutos para desconexão automática"
570 560  
... ... @@ -608,7 +598,7 @@ msgstr &quot;Intensificado/Protegido&quot;
608 598 msgid "Intensified/Unprotected"
609 599 msgstr "Intensificado/Desprotegido"
610 600  
611   -#: src/terminal/callbacks.c:440
  601 +#: src/terminal/callbacks.c:463
612 602 #, c-format
613 603 msgid ""
614 604 "Invalid callback table, the release %s of lib%s can't be used (expecting "
... ... @@ -625,7 +615,7 @@ msgstr &quot;Valor cgcsgid é inválido&quot;
625 615 msgid "Invalid remap scope"
626 616 msgstr "Escopo de mapeamento inválido"
627 617  
628   -#: src/dialogs/security.c:186
  618 +#: src/dialogs/security.c:185
629 619 msgid "Invalid state"
630 620 msgstr "Estado inválido"
631 621  
... ... @@ -634,7 +624,7 @@ msgstr &quot;Estado inválido&quot;
634 624 msgid "Keyboard accelerators"
635 625 msgstr "Atalhos de teclado"
636 626  
637   -#: src/dialogs/settings/host.c:267
  627 +#: src/dialogs/settings/host.c:240
638 628 msgid "L_U Names"
639 629 msgstr "Nomes de L_U"
640 630  
... ... @@ -654,7 +644,7 @@ msgstr &quot;Arquivo local:&quot;
654 644 msgid "Local:"
655 645 msgstr "Local:"
656 646  
657   -#: src/dialogs/settings/host.c:242
  647 +#: src/dialogs/settings/host.c:215
658 648 msgid "Makes the screen larger than the default for the chosen model number."
659 649 msgstr "Usa tamanho maior do que o padrão para o modelo escolhido."
660 650  
... ... @@ -662,23 +652,23 @@ msgstr &quot;Usa tamanho maior do que o padrão para o modelo escolhido.&quot;
662 652 msgid "Misc colors"
663 653 msgstr "Cores diversas"
664 654  
665   -#: src/dialogs/settings/host.c:197
  655 +#: src/dialogs/settings/host.c:196
666 656 msgid "Model 2 - 80x24"
667 657 msgstr "Modelo 2 - 80x24"
668 658  
669   -#: src/dialogs/settings/host.c:198
  659 +#: src/dialogs/settings/host.c:197
670 660 msgid "Model 3 - 80x32"
671 661 msgstr "Modelo 3 - 80x32"
672 662  
673   -#: src/dialogs/settings/host.c:199
  663 +#: src/dialogs/settings/host.c:198
674 664 msgid "Model 4 - 80x43"
675 665 msgstr "Modelo 4 - 80x43"
676 666  
677   -#: src/dialogs/settings/host.c:200
  667 +#: src/dialogs/settings/host.c:199
678 668 msgid "Model 5 - 132x27"
679 669 msgstr "Modelo 5 - 132x27"
680 670  
681   -#: src/dialogs/settings/host.c:168
  671 +#: src/dialogs/settings/host.c:167
682 672 msgid "Monochrome"
683 673 msgstr "Monocromático"
684 674  
... ... @@ -690,7 +680,7 @@ msgstr &quot;Mostarda&quot;
690 680 msgid "Name"
691 681 msgstr "Nome"
692 682  
693   -#: src/dialogs/settings/host.c:471
  683 +#: src/dialogs/settings/host.c:430
694 684 msgid "Network connection settings"
695 685 msgstr "Configuração da conexão de rede"
696 686  
... ... @@ -698,6 +688,10 @@ msgstr &quot;Configuração da conexão de rede&quot;
698 688 msgid "No active transfer"
699 689 msgstr "Nenhuma transferência ativa"
700 690  
  691 +#: src/dialogs/popups.c:141
  692 +msgid "No host"
  693 +msgstr "Nenhum servidor"
  694 +
701 695 #: src/terminal/properties/get.c:205
702 696 msgid "No host defined"
703 697 msgstr "Nenhum servidor definido"
... ... @@ -710,7 +704,7 @@ msgstr &quot;Sem etiqueta&quot;
710 704 msgid "No transfer"
711 705 msgstr "Nenhuma transferência"
712 706  
713   -#: src/filetransfer/worker.c:601
  707 +#: src/filetransfer/worker.c:609
714 708 msgid "No transfer in progress"
715 709 msgstr "Nenhuma transferência em andamento"
716 710  
... ... @@ -762,10 +756,6 @@ msgstr &quot;Estado inválido na OIA&quot;
762 756 msgid "OIA status ok"
763 757 msgstr "Estado normal na OIA"
764 758  
765   -#: src/dialogs/load.c:93 src/dialogs/load.c:112
766   -msgid "Open"
767   -msgstr "Abrir"
768   -
769 759 #: src/dialogs/save/convenience.c:65 src/dialogs/save/convenience.c:93
770 760 msgid "Operation has failed"
771 761 msgstr "Operação falhou"
... ... @@ -778,15 +768,15 @@ msgstr &quot;Opções&quot;
778 768 msgid "Orange"
779 769 msgstr "Laranja"
780 770  
781   -#: src/dialogs/settings/host.c:141
  771 +#: src/dialogs/settings/host.c:140
782 772 msgid "Other (TSO)"
783 773 msgstr "Outro (TSO)"
784 774  
785   -#: src/dialogs/settings/host.c:142
  775 +#: src/dialogs/settings/host.c:141
786 776 msgid "Other (VM/CMS)"
787 777 msgstr "Outro (VM/CMS)"
788 778  
789   -#: src/dialogs/settings/host.c:241
  779 +#: src/dialogs/settings/host.c:214
790 780 msgid "Oversize"
791 781 msgstr "Oversize"
792 782  
... ... @@ -814,7 +804,7 @@ msgstr &quot;Colar arquivo&quot;
814 804 msgid "Paste formatted screen"
815 805 msgstr "Colar tela formatada"
816 806  
817   -#: src/dialogs/load.c:249
  807 +#: src/dialogs/load.c:243
818 808 msgid "Paste from file"
819 809 msgstr "Colar de um arquivo"
820 810  
... ... @@ -834,11 +824,11 @@ msgstr &quot;Colar tela semelhante&quot;
834 824 msgid "Path and name of the local file"
835 825 msgstr "Caminho e nome do arquivo local"
836 826  
837   -#: src/dialogs/settings/host.c:255
  827 +#: src/dialogs/settings/host.c:228
838 828 msgid "Path to XML file with custom charset mapping."
839 829 msgstr "Caminho do arquivo XML com o mapeamento personalizado de caracteres."
840 830  
841   -#: src/dialogs/security.c:138 src/dialogs/security.c:157
  831 +#: src/dialogs/security.c:137 src/dialogs/security.c:156
842 832 msgid "Peer certificate"
843 833 msgstr "Certificado apresentado"
844 834  
... ... @@ -846,7 +836,7 @@ msgstr &quot;Certificado apresentado&quot;
846 836 msgid "Pink"
847 837 msgstr "Rosa"
848 838  
849   -#: src/dialogs/save/save.c:51
  839 +#: src/dialogs/save/save.c:52
850 840 msgid "Plain text"
851 841 msgstr "Texto puro"
852 842  
... ... @@ -854,7 +844,7 @@ msgstr &quot;Texto puro&quot;
854 844 msgid "Plain text only"
855 845 msgstr "Apenas texto puro"
856 846  
857   -#: src/dialogs/settings/host.c:229
  847 +#: src/dialogs/settings/url.c:215
858 848 msgid "Port or service name."
859 849 msgstr "Nº da porta ou nome do serviço."
860 850  
... ... @@ -890,7 +880,7 @@ msgstr &quot;Imprimir cópia&quot;
890 880 msgid "Print operation failed"
891 881 msgstr "Operação de impressão falhou"
892 882  
893   -#: src/dialogs/print/convenience.c:102
  883 +#: src/dialogs/print/convenience.c:103
894 884 msgid "Print operation has failed"
895 885 msgstr "Operação de impressão falhou"
896 886  
... ... @@ -938,7 +928,7 @@ msgstr &quot;Receber arquivo&quot;
938 928 msgid "Receive text file"
939 929 msgstr "Receber arquivo texto"
940 930  
941   -#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:124
  931 +#: src/filetransfer/v3270ftprogress.c:747 src/dialogs/transfer.c:124
942 932 msgid "Receiving file"
943 933 msgstr "Recebendo arquivo"
944 934  
... ... @@ -1001,7 +991,7 @@ msgstr &quot;&quot;
1001 991 msgid "Retry"
1002 992 msgstr "Repetir"
1003 993  
1004   -#: src/dialogs/security.c:144
  994 +#: src/dialogs/security.c:143
1005 995 msgid "Revocation list"
1006 996 msgstr "Lista de revogados"
1007 997  
... ... @@ -1013,7 +1003,7 @@ msgstr &quot;&quot;
1013 1003 "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only "
1014 1004 "one option can be used."
1015 1005  
1016   -#: src/dialogs/settings/host.c:560
  1006 +#: src/dialogs/settings/url.c:264
1017 1007 msgid "SSL/TLS"
1018 1008 msgstr "SSL/TLS"
1019 1009  
... ... @@ -1039,7 +1029,7 @@ msgstr &quot;Salvar _Como&quot;
1039 1029 msgid "Save all"
1040 1030 msgstr "Salvar tela"
1041 1031  
1042   -#: src/terminal/actions/table.c:286 src/dialogs/save/save.c:377
  1032 +#: src/terminal/actions/table.c:286 src/dialogs/save/save.c:363
1043 1033 msgid "Save copy"
1044 1034 msgstr "Salvar cópia"
1045 1035  
... ... @@ -1059,11 +1049,11 @@ msgstr &quot;Salvar tela ou seleção&quot;
1059 1049 msgid "Save selected"
1060 1050 msgstr "Salvar seleção"
1061 1051  
1062   -#: src/terminal/actions/table.c:277 src/dialogs/save/save.c:376
  1052 +#: src/terminal/actions/table.c:277 src/dialogs/save/save.c:362
1063 1053 msgid "Save selected area"
1064 1054 msgstr "Salvar área selecionada"
1065 1055  
1066   -#: src/dialogs/save/save.c:375
  1056 +#: src/dialogs/save/save.c:361
1067 1057 msgid "Save terminal contents"
1068 1058 msgstr "Salvar conteúdo da tela"
1069 1059  
... ... @@ -1075,7 +1065,7 @@ msgstr &quot;Salvar trace para arquivo&quot;
1075 1065 msgid "Save transfer activity to file"
1076 1066 msgstr "Salvar atividade de transferência para arquivo"
1077 1067  
1078   -#: src/dialogs/transfer.c:189
  1068 +#: src/dialogs/transfer.c:187
1079 1069 msgid "Save transfer information to file"
1080 1070 msgstr "Salvar informações da transferência para arquivo"
1081 1071  
... ... @@ -1115,27 +1105,33 @@ msgstr &quot;&quot;
1115 1105 msgid "Secondary space"
1116 1106 msgstr "Secondary space"
1117 1107  
  1108 +#: src/dialogs/settings/url.c:220
  1109 +msgid "Security"
  1110 +msgstr "Segurança"
  1111 +
  1112 +#: src/dialogs/settings/url.c:221
  1113 +msgid "Security engine"
  1114 +msgstr "Mecanismo de segurança"
  1115 +
1118 1116 #: src/filetransfer/v3270ft.c:303 src/filetransfer/settings.c:209
1119   -#: src/dialogs/save/save.c:98 src/dialogs/save/save.c:118
1120   -#: src/dialogs/settings/host.c:402
  1117 +#: src/dialogs/settings/host.c:367
1121 1118 msgid "Select"
1122 1119 msgstr "Selecionar"
1123 1120  
1124   -#: src/dialogs/settings/host.c:497
  1121 +#: src/dialogs/settings/host.c:452
1125 1122 msgid "Select charset remap file"
1126 1123 msgstr "Selecionar arquivo com mapeamento personalizado"
1127 1124  
1128   -#: src/dialogs/settings/host.c:398
  1125 +#: src/dialogs/settings/host.c:363
1129 1126 msgid "Select custom charset mapping"
1130 1127 msgstr "Seleciona mapeamento de teclado personalizado"
1131 1128  
1132   -#: src/dialogs/save/save.c:97 src/dialogs/save/save.c:114
  1129 +#: src/dialogs/save/save.c:263
1133 1130 msgid "Select destination file"
1134 1131 msgstr "Selecionar arquivo destino"
1135 1132  
1136 1133 #: src/filetransfer/v3270ft.c:591 src/filetransfer/settings.c:467
1137   -#: src/dialogs/load.c:92 src/dialogs/load.c:108 src/dialogs/load.c:171
1138   -#: src/dialogs/save/save.c:258
  1134 +#: src/dialogs/load.c:186
1139 1135 msgid "Select file"
1140 1136 msgstr "Selecionar arquivo"
1141 1137  
... ... @@ -1175,10 +1171,14 @@ msgstr &quot;Enviar arquivo&quot;
1175 1171 msgid "Send text file"
1176 1172 msgstr "Enviar arquivo texto"
1177 1173  
1178   -#: src/filetransfer/v3270ftprogress.c:739 src/dialogs/transfer.c:124
  1174 +#: src/filetransfer/v3270ftprogress.c:747 src/dialogs/transfer.c:124
1179 1175 msgid "Sending file"
1180 1176 msgstr "Enviando arquivo"
1181 1177  
  1178 +#: src/dialogs/settings/url.c:214
  1179 +msgid "Service/Port"
  1180 +msgstr "Serviço/Porta"
  1181 +
1182 1182 #: src/terminal/actions/table.c:241
1183 1183 msgid "Set the font to the best size for window"
1184 1184 msgstr "Ajusta a fonte para o melhor tamanho"
... ... @@ -1255,11 +1255,11 @@ msgstr &quot;Iniciar transferência de arquivo&quot;
1255 1255 msgid "Start transfer"
1256 1256 msgstr "Iniciar transferência"
1257 1257  
1258   -#: src/filetransfer/v3270ftprogress.c:790
  1258 +#: src/filetransfer/v3270ftprogress.c:798
1259 1259 msgid "Starting"
1260 1260 msgstr "Iniciando"
1261 1261  
1262   -#: src/filetransfer/worker.c:314 src/dialogs/transfer.c:142
  1262 +#: src/filetransfer/worker.c:314 src/dialogs/transfer.c:140
1263 1263 msgid "Starting transfer"
1264 1264 msgstr "Iniciando transferência"
1265 1265  
... ... @@ -1279,22 +1279,26 @@ msgstr &quot;Estado do espaçamento dinâmico&quot;
1279 1279 msgid "Summary"
1280 1280 msgstr "Sumário"
1281 1281  
1282   -#: src/dialogs/settings/host.c:125
  1282 +#: src/dialogs/settings/host.c:124
1283 1283 msgid "System _type"
1284 1284 msgstr "_Tipo de servidor"
1285 1285  
1286   -#: src/dialogs/settings/host.c:167
  1286 +#: src/dialogs/settings/host.c:166
1287 1287 msgid "System default"
1288 1288 msgstr "Padrão do sistema"
1289 1289  
1290   -#: src/dialogs/settings/host.c:411
  1290 +#: src/dialogs/settings/host.c:376
1291 1291 msgid "TN3270 Custom charset"
1292 1292 msgstr "Código de página TN3270 personalizado"
1293 1293  
1294   -#: src/dialogs/settings/host.c:481
  1294 +#: src/dialogs/settings/host.c:440
1295 1295 msgid "TN3270 Emulation settings"
1296 1296 msgstr "Configuração da emulação TN3270"
1297 1297  
  1298 +#: src/dialogs/settings/url.c:122
  1299 +msgid "TN3270 Host URL"
  1300 +msgstr "URL do servidor TN3270"
  1301 +
1298 1302 #: src/terminal/properties/init.c:97
1299 1303 msgid "TN3270 Session name"
1300 1304 msgstr "Nome da sessão TN3270"
... ... @@ -1308,6 +1312,10 @@ msgstr &quot;Cores do terminal&quot;
1308 1312 msgid "Terminal font"
1309 1313 msgstr "Fonte do terminal"
1310 1314  
  1315 +#: src/dialogs/load.c:189
  1316 +msgid "Text files"
  1317 +msgstr "Arquivos de texto"
  1318 +
1311 1319 #: src/filetransfer/v3270ftprogress.c:211
1312 1320 msgid ""
1313 1321 "The CMS disk is full, or the maximum number of files on the minidisk (3400) "
... ... @@ -1318,7 +1326,7 @@ msgstr &quot;&quot;
1318 1326 "has been reached, or the maximum number of data blocks per file (16060) has "
1319 1327 "been reached."
1320 1328  
1321   -#: src/dialogs/settings/host.c:645
  1329 +#: src/dialogs/settings/host.c:561
1322 1330 msgid "The EBCDIC host character set. "
1323 1331 msgstr "A tabela de caracteres EBCDIC."
1324 1332  
... ... @@ -1330,7 +1338,7 @@ msgstr &quot;A etiqueda da ação&quot;
1330 1338 msgid "The action tooltip"
1331 1339 msgstr "Dicas sobre a ação"
1332 1340  
1333   -#: src/filetransfer/worker.c:622
  1341 +#: src/filetransfer/worker.c:630
1334 1342 msgid ""
1335 1343 "The callback table for file transfer was rejected, possible version mismatch "
1336 1344 "on lib3270"
... ... @@ -1338,7 +1346,7 @@ msgstr &quot;&quot;
1338 1346 "Tabela de callbacks para transferência de arquivos inválida, possível "
1339 1347 "divergência de versão na lib3270"
1340 1348  
1341   -#: src/dialogs/save/save.c:425
  1349 +#: src/dialogs/save/save.c:408
1342 1350 #, c-format
1343 1351 msgid "The file \"%s\" already exists. Replace it?"
1344 1352 msgstr "O arquivo \"%s\" já existe, substituir?"
... ... @@ -1366,7 +1374,7 @@ msgstr &quot;O host detectou um erro no arquivo durante a operação de recebimento.&quot;
1366 1374 msgid "The label for the action"
1367 1375 msgstr "A etiqueta da ação"
1368 1376  
1369   -#: src/dialogs/settings/host.c:182
  1377 +#: src/dialogs/settings/host.c:181
1370 1378 msgid "The model of 3270 display to be emulated"
1371 1379 msgstr "Modelo de tela 3270 a ser emulada"
1372 1380  
... ... @@ -1430,7 +1438,7 @@ msgstr &quot;The type of the state kept by the action&quot;
1430 1438 msgid "There is not enough space available for data on the host."
1431 1439 msgstr "Não existe espaço suficiente no host para os dados."
1432 1440  
1433   -#: src/dialogs/security.c:193
  1441 +#: src/dialogs/security.c:192
1434 1442 msgid "There's no security information in the session"
1435 1443 msgstr "Não existe informação de segurança na sessão"
1436 1444  
... ... @@ -1462,11 +1470,11 @@ msgstr &quot;Janela de trace&quot;
1462 1470 msgid "Tracks"
1463 1471 msgstr "Trilhas"
1464 1472  
1465   -#: src/filetransfer/worker.c:568 src/filetransfer/v3270ftprogress.c:721
  1473 +#: src/filetransfer/worker.c:576 src/filetransfer/v3270ftprogress.c:729
1466 1474 msgid "Transfer failed"
1467 1475 msgstr "Transferência falhou"
1468 1476  
1469   -#: src/filetransfer/worker.c:554
  1477 +#: src/filetransfer/worker.c:562
1470 1478 msgid "Transfer operation has timed out"
1471 1479 msgstr "Operação de transferência esgotou o tempo de espera"
1472 1480  
... ... @@ -1500,7 +1508,7 @@ msgstr &quot;Tente de novo com o mesmo arquivo.&quot;
1500 1508 msgid "Turquoise"
1501 1509 msgstr "Turquesa"
1502 1510  
1503   -#: src/dialogs/tools.c:171
  1511 +#: src/dialogs/tools.c:167
1504 1512 msgid "UTF-8"
1505 1513 msgstr "UTF-8"
1506 1514  
... ... @@ -1513,17 +1521,17 @@ msgstr &quot;Incapaz de colar dados formatados.&quot;
1513 1521 msgid "Undefined"
1514 1522 msgstr "Indefinido"
1515 1523  
1516   -#: src/terminal/callbacks.c:449
  1524 +#: src/terminal/callbacks.c:472
1517 1525 #, c-format
1518 1526 msgid "Unexpected callback table, the release %s of lib%s is invalid"
1519 1527 msgstr "Tabela de callbacks inesperada, a revisão %s da lib%s é inválida"
1520 1528  
1521   -#: src/dialogs/save/save.c:495
  1529 +#: src/dialogs/save/save.c:478
1522 1530 #, c-format
1523 1531 msgid "Unexpected format %d"
1524 1532 msgstr "Formato inesperado %d"
1525 1533  
1526   -#: src/dialogs/save/save.c:463 src/dialogs/save/save.c:559
  1534 +#: src/dialogs/save/save.c:446 src/dialogs/save/save.c:542
1527 1535 #, c-format
1528 1536 msgid "Unexpected mode %d"
1529 1537 msgstr "Modo inesperado %d"
... ... @@ -1533,14 +1541,10 @@ msgstr &quot;Modo inesperado %d&quot;
1533 1541 msgid "Unexpected status %d in print operation"
1534 1542 msgstr "Estado inesperado %d na operação de impressão"
1535 1543  
1536   -#: src/dialogs/settings/host.c:559
  1544 +#: src/dialogs/settings/url.c:263
1537 1545 msgid "Unsecure"
1538 1546 msgstr "Insegura"
1539 1547  
1540   -#: src/dialogs/save/save.c:130
1541   -msgid "Untitled document"
1542   -msgstr "Documento sem título"
1543   -
1544 1548 #: src/filetransfer/tables.c:75
1545 1549 msgid "Use host default record format."
1546 1550 msgstr "Utilizar o formato de registro padrão do servidor."
... ... @@ -1554,7 +1558,7 @@ msgstr &quot;Usar espaço inseparável&quot;
1554 1558 msgid "Variable"
1555 1559 msgstr "Variável"
1556 1560  
1557   -#: src/dialogs/tools.c:172
  1561 +#: src/dialogs/tools.c:168
1558 1562 msgid "Western Europe (ISO 8859-1)"
1559 1563 msgstr "Europa ocidental (ISO 8859-1)"
1560 1564  
... ... @@ -1591,52 +1595,52 @@ msgstr &quot;&quot;
1591 1595 msgid "White"
1592 1596 msgstr "Branco"
1593 1597  
1594   -#: src/dialogs/tools.c:173
  1598 +#: src/dialogs/tools.c:169
1595 1599 msgid "Windows Western languages (CP1252)"
1596 1600 msgstr "Windows ocidental (CP1252)"
1597 1601  
1598   -#: src/terminal/drawing/oia.c:431 src/terminal/drawing/oia.c:455
1599   -#: src/terminal/drawing/oia.c:459
  1602 +#: src/terminal/drawing/oia.c:490 src/terminal/drawing/oia.c:514
  1603 +#: src/terminal/drawing/oia.c:518
1600 1604 msgid "X"
1601 1605 msgstr "X"
1602 1606  
1603   -#: src/terminal/drawing/oia.c:435
  1607 +#: src/terminal/drawing/oia.c:494
1604 1608 msgid "X -f"
1605 1609 msgstr "X -f"
1606 1610  
1607   -#: src/terminal/drawing/oia.c:467
  1611 +#: src/terminal/drawing/oia.c:526
1608 1612 msgid "X Connecting"
1609 1613 msgstr "X Conectando"
1610 1614  
1611   -#: src/terminal/drawing/oia.c:451
  1615 +#: src/terminal/drawing/oia.c:510
1612 1616 msgid "X Inhibit"
1613 1617 msgstr "X Inibido"
1614 1618  
1615   -#: src/terminal/drawing/oia.c:427
  1619 +#: src/terminal/drawing/oia.c:486
1616 1620 msgid "X Not Connected"
1617 1621 msgstr "X Desconectado"
1618 1622  
1619   -#: src/terminal/drawing/oia.c:443
  1623 +#: src/terminal/drawing/oia.c:502
1620 1624 msgid "X Numeric"
1621 1625 msgstr "X Numérico"
1622 1626  
1623   -#: src/terminal/drawing/oia.c:447
  1627 +#: src/terminal/drawing/oia.c:506
1624 1628 msgid "X Overflow"
1625 1629 msgstr "X Estouro"
1626 1630  
1627   -#: src/terminal/drawing/oia.c:439
  1631 +#: src/terminal/drawing/oia.c:498
1628 1632 msgid "X Protected"
1629 1633 msgstr "X Protegido"
1630 1634  
1631   -#: src/terminal/drawing/oia.c:463
  1635 +#: src/terminal/drawing/oia.c:522
1632 1636 msgid "X Resolving"
1633 1637 msgstr "X Resolvendo"
1634 1638  
1635   -#: src/terminal/drawing/oia.c:415
  1639 +#: src/terminal/drawing/oia.c:474
1636 1640 msgid "X System"
1637 1641 msgstr "X Sistema"
1638 1642  
1639   -#: src/terminal/drawing/oia.c:419
  1643 +#: src/terminal/drawing/oia.c:478
1640 1644 msgid "X Wait"
1641 1645 msgstr "X Aguarde"
1642 1646  
... ... @@ -1739,33 +1743,33 @@ msgstr &quot;Reduzir&quot;
1739 1743 msgid "_ASCII text"
1740 1744 msgstr "Texto _ASCII"
1741 1745  
1742   -#: src/dialogs/settings/dialog.c:232
  1746 +#: src/dialogs/settings/dialog.c:213
1743 1747 msgid "_Apply"
1744 1748 msgstr "_Aplicar"
1745 1749  
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
  1750 +#: src/selection/linux/paste.c:85 src/dialogs/popups.c:179
  1751 +#: src/dialogs/load.c:214 src/dialogs/linux/select.c:51
1748 1752 #: src/dialogs/linux/select.c:77 src/dialogs/print/settingsdialog.c:410
1749   -#: src/dialogs/print/settingsdialog.c:429 src/dialogs/save/save.c:342
1750   -#: src/dialogs/save/save.c:361 src/dialogs/settings/dialog.c:231
  1753 +#: src/dialogs/print/settingsdialog.c:429 src/dialogs/save/save.c:341
  1754 +#: src/dialogs/settings/dialog.c:212
1751 1755 msgid "_Cancel"
1752 1756 msgstr "_Cancelar"
1753 1757  
1754   -#: src/dialogs/settings/host.c:644
  1758 +#: src/dialogs/settings/host.c:560
1755 1759 msgid "_Charset"
1756 1760 msgstr "Tabela de _Caracteres"
1757 1761  
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
  1762 +#: src/trace/tracewindow.c:125 src/dialogs/transfer.c:159
  1763 +#: src/dialogs/transfer.c:179 src/dialogs/security.c:233
  1764 +#: src/dialogs/popups.c:101
1761 1765 msgid "_Close"
1762 1766 msgstr "_Close"
1763 1767  
1764   -#: src/dialogs/settings/host.c:153
  1768 +#: src/dialogs/settings/host.c:152
1765 1769 msgid "_Color table"
1766 1770 msgstr "_Tabela de cores"
1767 1771  
1768   -#: src/tools/entry.c:175
  1772 +#: src/tools/entry.c:172
1769 1773 msgid "_Continue"
1770 1774 msgstr "_Continuar"
1771 1775  
... ... @@ -1773,7 +1777,7 @@ msgstr &quot;_Continuar&quot;
1773 1777 msgid "_File"
1774 1778 msgstr "_Arquivo"
1775 1779  
1776   -#: src/dialogs/load.c:163 src/dialogs/save/save.c:250
  1780 +#: src/dialogs/load.c:168 src/dialogs/save/save.c:247
1777 1781 msgid "_Filename"
1778 1782 msgstr "Nome do _Arquivo"
1779 1783  
... ... @@ -1781,11 +1785,7 @@ msgstr &quot;Nome do _Arquivo&quot;
1781 1785 msgid "_Font:"
1782 1786 msgstr "_Fonte:"
1783 1787  
1784   -#: src/dialogs/settings/host.c:215
1785   -msgid "_Host"
1786   -msgstr "_Servidor"
1787   -
1788   -#: src/dialogs/load.c:210 src/dialogs/load.c:225
  1788 +#: src/dialogs/load.c:215
1789 1789 msgid "_Load"
1790 1790 msgstr "_Carregar"
1791 1791  
... ... @@ -1793,16 +1793,16 @@ msgstr &quot;_Carregar&quot;
1793 1793 msgid "_Local file"
1794 1794 msgstr "Arquivo _local:"
1795 1795  
1796   -#: src/dialogs/settings/host.c:181
  1796 +#: src/dialogs/settings/host.c:180
1797 1797 msgid "_Model"
1798 1798 msgstr "_Modelo"
1799 1799  
1800   -#: src/dialogs/popups.c:86 src/dialogs/popups.c:92 src/dialogs/popups.c:98
1801   -#: src/dialogs/popups.c:110
  1800 +#: src/dialogs/popups.c:83 src/dialogs/popups.c:89 src/dialogs/popups.c:95
  1801 +#: src/dialogs/popups.c:107
1802 1802 msgid "_Ok"
1803 1803 msgstr "_Ok"
1804 1804  
1805   -#: src/tools/entry.c:167
  1805 +#: src/tools/entry.c:164
1806 1806 msgid "_Open"
1807 1807 msgstr "_Abrir"
1808 1808  
... ... @@ -1818,19 +1818,11 @@ msgstr &quot;_Colar como texto&quot;
1818 1818 msgid "_Remote file"
1819 1819 msgstr "Arquivo _remoto:"
1820 1820  
1821   -#: src/trace/tracewindow.c:123 src/dialogs/save/save.c:347
1822   -#: src/dialogs/save/save.c:362 src/tools/entry.c:171
  1821 +#: src/trace/tracewindow.c:123 src/dialogs/save/save.c:342
  1822 +#: src/tools/entry.c:168
1823 1823 msgid "_Save"
1824 1824 msgstr "_Salvar"
1825 1825  
1826   -#: src/dialogs/settings/host.c:545
1827   -msgid "_Security"
1828   -msgstr "_Segurança"
1829   -
1830   -#: src/dialogs/settings/host.c:228
1831   -msgid "_Service"
1832   -msgstr "_Serviço"
1833   -
1834 1826 #: src/filetransfer/tables.c:43
1835 1827 msgid "_Text file"
1836 1828 msgstr "Arquivo _texto"
... ... @@ -2366,6 +2358,15 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
2366 2358 #~ msgid "Clear AID key"
2367 2359 #~ msgstr "Clear AID"
2368 2360  
  2361 +#~ msgid "Click to cancel operation"
  2362 +#~ msgstr "Clique para cancelar operação"
  2363 +
  2364 +#~ msgid "Click to load file"
  2365 +#~ msgstr "Clique para carregar arquivo"
  2366 +
  2367 +#~ msgid "Click to save file"
  2368 +#~ msgstr "Clique para salvar arquivo"
  2369 +
2369 2370 #~ msgid "Color setup"
2370 2371 #~ msgstr "Configuração de cores"
2371 2372  
... ... @@ -2717,9 +2718,6 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
2717 2718 #~ msgid "Host to connect"
2718 2719 #~ msgstr "Servidor a conectar"
2719 2720  
2720   -#~ msgid "Host type name"
2721   -#~ msgstr "Nome do tipo de host"
2722   -
2723 2721 #~ msgid "Hostname syntax error"
2724 2722 #~ msgstr "Formato inválido no nome do servidor"
2725 2723  
... ... @@ -2998,6 +2996,9 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
2998 2996 #~ "Permitida apenas uma opção dentre TRACKS, CYLINDERS, AVBLOCK: "
2999 2997 #~ "Transferência cancelada"
3000 2998  
  2999 +#~ msgid "Open"
  3000 +#~ msgstr "Abrir"
  3001 +
3001 3002 #~ msgid "Operation failed"
3002 3003 #~ msgstr "Operação falhou"
3003 3004  
... ... @@ -3404,9 +3405,6 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
3404 3405 #~ msgid "Secure connection was successful."
3405 3406 #~ msgstr "Conexão segura efetuada com sucesso."
3406 3407  
3407   -#~ msgid "Security warning"
3408   -#~ msgstr "Alerta de segurança"
3409   -
3410 3408 #~ msgid "Select Field"
3411 3409 #~ msgstr "Selecionar campo"
3412 3410  
... ... @@ -3572,9 +3570,6 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
3572 3570 #~ msgid "Text file"
3573 3571 #~ msgstr "Arquivo texto"
3574 3572  
3575   -#~ msgid "Text files"
3576   -#~ msgstr "Arquivos de texto"
3577   -
3578 3573 #~ msgid "The CRL has expired."
3579 3574 #~ msgstr "A lista de certificados revogados expirou."
3580 3575  
... ... @@ -4032,6 +4027,9 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
4032 4027 #~ msgid "Unsupported socks 4 proxy"
4033 4028 #~ msgstr "Unsupported socks 4 proxy"
4034 4029  
  4030 +#~ msgid "Untitled document"
  4031 +#~ msgstr "Documento sem título"
  4032 +
4035 4033 #~ msgid "Uppercase only"
4036 4034 #~ msgstr "Apenas maiúsculas"
4037 4035  
... ... @@ -4099,6 +4097,9 @@ msgstr &quot;Diminui o tamanho da fonte&quot;
4099 4097 #~ msgid "_Edit"
4100 4098 #~ msgstr "_Editar"
4101 4099  
  4100 +#~ msgid "_Host"
  4101 +#~ msgstr "_Servidor"
  4102 +
4102 4103 #~ msgid "_Network"
4103 4104 #~ msgstr "_Rede"
4104 4105  
... ...
src/dialogs/settings/host.c
... ... @@ -38,6 +38,7 @@
38 38 #include <lib3270/log.h>
39 39 #include <lib3270/toggle.h>
40 40 #include <lib3270/properties.h>
  41 + #include <v3270/settings/url.h>
41 42  
42 43 /*--[ Globals ]--------------------------------------------------------------------------------------*/
43 44  
... ... @@ -52,21 +53,21 @@
52 53 {
53 54 {
54 55 .left = 2,
55   - .top = 2,
  56 + .top = 3,
56 57 .width = 2,
57 58 .grid = CONNECTION,
58 59 .id = LIB3270_TOGGLE_CONNECT_ON_STARTUP,
59 60 },
60 61 {
61 62 .left = 4,
62   - .top = 2,
  63 + .top = 3,
63 64 .width = 1,
64 65 .grid = CONNECTION,
65 66 .id = LIB3270_TOGGLE_RECONNECT,
66 67 },
67 68 {
68 69 .left = 5,
69   - .top = 2,
  70 + .top = 3,
70 71 .width = 1,
71 72 .grid = CONNECTION,
72 73 .id = LIB3270_TOGGLE_KEEP_ALIVE,
... ... @@ -94,8 +95,6 @@
94 95  
95 96 enum _entry
96 97 {
97   - ENTRY_HOSTNAME,
98   - ENTRY_SRVCNAME,
99 98 ENTRY_OVERSIZE,
100 99 ENTRY_REMAP_FILE,
101 100 ENTRY_LU_NAMES,
... ... @@ -206,32 +205,6 @@
206 205  
207 206 static const struct EntryFieldDefinition entryfields[] = {
208 207 {
209   - .left = 0,
210   - .top = 0,
211   - .width = 5,
212   - .height = 1,
213   - .grid = CONNECTION,
214   -
215   - .label = N_( "_Host" ),
216   - .tooltip = N_("Address or name of the host to connect."),
217   - .max_length = 0xFF,
218   - .width_chars = 50,
219   -
220   - },
221   - {
222   - .left = 0,
223   - .top = 1,
224   - .width = 1,
225   - .height = 1,
226   - .grid = CONNECTION,
227   -
228   - .label = N_( "_Service" ),
229   - .tooltip = N_("Port or service name."),
230   - .max_length = 6,
231   - .width_chars = 7,
232   - },
233   -
234   - {
235 208 .top = 1,
236 209 .left = 3,
237 210 .width = 2,
... ... @@ -258,9 +231,9 @@
258 231 },
259 232  
260 233 {
261   - .left = 2,
262   - .top = 1,
263   - .width = 3,
  234 + .left = 0,
  235 + .top = 2,
  236 + .width = 5,
264 237 .height = 1,
265 238 .grid = CONNECTION,
266 239  
... ... @@ -279,12 +252,12 @@
279 252 struct
280 253 {
281 254 GtkEntry * entry[G_N_ELEMENTS(entryfields)]; ///< @brief Entry fields for host & service name.
282   - GtkComboBox * ssl; ///< @brief SSL Connection?
283 255 GtkComboBox * combos[G_N_ELEMENTS(combos)]; ///< @brief Combo-boxes.
284 256 GtkComboBox * charset; ///< @brief Charset combo box.
285 257 GtkToggleButton * toggles[G_N_ELEMENTS(toggleList)]; ///< @brief Toggle checks.
286 258 GtkSpinButton * auto_disconnect; ///< @brief Auto disconnect.
287 259 GtkSpinButton * unlock_delay; ///< @brief Unlock delay.
  260 + GtkWidget * url; ///< @brief The URL entry widget.
288 261  
289 262 } input;
290 263  
... ... @@ -307,7 +280,7 @@ static void update_message(GtkWidget *widget, GtkWidget *terminal)
307 280 gtk_widget_set_sensitive(widget, lib3270_is_disconnected(v3270_get_session(terminal)));
308 281 }
309 282  
310   -static void V3270HostSelectWidget_class_init(G_GNUC_UNUSED V3270HostSelectWidgetClass *klass)
  283 +static void V3270HostSelectWidget_class_init(V3270HostSelectWidgetClass *klass)
311 284 {
312 285 V3270SettingsClass * widget = GTK_V3270_SETTINGS_CLASS(klass);
313 286  
... ... @@ -339,19 +312,7 @@ static gboolean oversize_validate(GtkEditable *editable) {
339 312 static void update_valid(V3270HostSelectWidget *settings, gboolean valid) {
340 313  
341 314 if(valid) {
342   -
343   - // Check required inputs.
344   -
345   - static const int required[] = { ENTRY_HOSTNAME, ENTRY_SRVCNAME };
346   - size_t ix;
347   -
348   - for(ix = 0; ix < G_N_ELEMENTS(required); ix++) {
349   - const gchar * chars = gtk_editable_get_chars(GTK_EDITABLE(settings->input.entry[required[ix]]),0,-1);
350   - if(!*chars) {
351   - valid = FALSE;
352   - break;
353   - }
354   - }
  315 + valid = v3270_url_edit_is_valid(settings->input.url);
355 316 }
356 317  
357 318 if(valid) {
... ... @@ -362,10 +323,14 @@ static void update_valid(V3270HostSelectWidget *settings, gboolean valid) {
362 323  
363 324 }
364 325  
365   -static void required_changed(GtkEditable *editable, GtkWidget *settings) {
  326 +static void url_valid(GtkWidget G_GNUC_UNUSED(*url), gboolean valid, V3270HostSelectWidget *settings) {
366 327  
367   - const gchar * chars = gtk_editable_get_chars(editable,0,-1);
368   - update_valid(GTK_V3270HostSelectWidget(settings),(*chars ? TRUE : FALSE));
  328 + if(valid) {
  329 + update_valid(settings,valid);
  330 + return;
  331 + }
  332 +
  333 + v3270_settings_set_valid(GTK_WIDGET(settings),valid);
369 334  
370 335 }
371 336  
... ... @@ -454,18 +419,12 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
454 419 {
455 420 GtkWidget *grids[GRID_COUNT];
456 421  
457   - {
458   - size_t grid;
  422 + grids[CONNECTION] = widget->input.url = v3270_url_edit_new();
  423 + g_signal_connect(grids[CONNECTION],"valid",G_CALLBACK(url_valid),widget);
459 424  
460   - for(grid = 0; grid < G_N_ELEMENTS(grids); grid++)
461   - grids[grid] = gtk_grid_new();
462   -
463   - }
  425 + grids[EMULATION] = gtk_grid_new();
464 426  
465 427 // Connection properties
466   - gtk_grid_set_row_spacing(GTK_GRID(grids[CONNECTION]),6);
467   - gtk_grid_set_column_spacing(GTK_GRID(grids[CONNECTION]),12);
468   -
469 428 gtk_grid_attach(
470 429 GTK_GRID(widget),
471 430 v3270_dialog_section_new(_("Connection"),_("Network connection settings"),grids[CONNECTION]),
... ... @@ -486,10 +445,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
486 445 {
487 446 v3270_settings_create_entry_fields(entryfields, G_N_ELEMENTS(entryfields), grids, widget->input.entry);
488 447  
489   - // Custom settings
490   - // gtk_entry_set_placeholder_text(widget->input.entry[ENTRY_SRVCNAME],"telnet");
491   -
492   - gtk_widget_set_hexpand(GTK_WIDGET(widget->input.entry[ENTRY_HOSTNAME]),TRUE);
493 448 gtk_widget_set_hexpand(GTK_WIDGET(widget->input.entry[ENTRY_REMAP_FILE]),TRUE);
494 449  
495 450 gtk_entry_set_icon_from_icon_name(widget->input.entry[ENTRY_REMAP_FILE],GTK_ENTRY_ICON_SECONDARY,"document-open");
... ... @@ -500,8 +455,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
500 455 g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_REMAP_FILE]),"changed",G_CALLBACK(remap_file_changed),widget);
501 456  
502 457 g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_OVERSIZE]),"changed",G_CALLBACK(oversize_changed),widget);
503   - g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_HOSTNAME]),"changed",G_CALLBACK(required_changed),widget);
504   - g_signal_connect(G_OBJECT(widget->input.entry[ENTRY_SRVCNAME]),"changed",G_CALLBACK(required_changed),widget);
505 458  
506 459 }
507 460  
... ... @@ -516,8 +469,8 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
516 469  
517 470 gtk_spin_button_set_increments(widget->input.auto_disconnect,1,1);
518 471  
519   - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,2,1,1);
520   - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.auto_disconnect),1,2,1,1);
  472 + gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,3,1,1);
  473 + gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.auto_disconnect),1,3,1,1);
521 474 g_signal_connect(G_OBJECT(widget->input.auto_disconnect),"output",G_CALLBACK(spin_format),widget);
522 475 }
523 476  
... ... @@ -540,43 +493,6 @@ static void V3270HostSelectWidget_init(V3270HostSelectWidget *widget)
540 493  
541 494 }
542 495  
543   - // SSL input
544   - {
545   - GtkWidget *label = gtk_label_new_with_mnemonic(_( "_Security" ));
546   - gtk_widget_set_halign(label,GTK_ALIGN_END);
547   - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),label,0,3,1,1);
548   -
549   - GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(1,G_TYPE_STRING);
550   -
551   - widget->input.ssl = GTK_COMBO_BOX(gtk_combo_box_new_with_model(model));
552   -
553   - GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new();
554   - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget->input.ssl), text_renderer, TRUE);
555   - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget->input.ssl), text_renderer, "text", 0, NULL);
556   -
557   - static const gchar * levels[] =
558   - {
559   - N_("Unsecure"),
560   - N_("SSL/TLS")
561   - };
562   -
563   - size_t level;
564   - for(level = 0; level < G_N_ELEMENTS(levels); level++)
565   - {
566   - GtkTreeIter iter;
567   - gtk_list_store_append((GtkListStore *) model, &iter);
568   - gtk_list_store_set((GtkListStore *) model, &iter, 0, levels[level], -1);
569   - };
570   -
571   - /*
572   - widget->input.ssl = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic(_( "_Secure connection." )));
573   - gtk_widget_set_tooltip_text(GTK_WIDGET(widget->input.ssl),_( "Check for SSL secure connection." ));
574   - gtk_widget_set_halign(GTK_WIDGET(widget->input.ssl),GTK_ALIGN_START);
575   - */
576   -
577   - gtk_grid_attach(GTK_GRID(grids[CONNECTION]),GTK_WIDGET(widget->input.ssl),1,3,2,1);
578   - }
579   -
580 496 // Toggle checkboxes
581 497 v3270_settings_create_toggle_buttons(toggleList, G_N_ELEMENTS(toggleList), grids, widget->input.toggles);
582 498  
... ... @@ -725,20 +641,7 @@ static void apply(GtkWidget *w, GtkWidget *terminal)
725 641 H3270 *hSession = v3270_get_session(terminal);
726 642  
727 643 // Apply URL
728   - {
729   - g_autofree gchar * url =
730   - g_strconcat(
731   - (gtk_combo_box_get_active(widget->input.ssl) > 0 ? "tn3270s://" : "tn3270://"),
732   - gtk_entry_get_text(widget->input.entry[ENTRY_HOSTNAME]),
733   - ":",
734   - gtk_entry_get_text(widget->input.entry[ENTRY_SRVCNAME]),
735   - NULL
736   - );
737   -
738   - debug("URL=[%s]",url);
739   - lib3270_set_url(hSession,url);
740   -
741   - }
  644 + lib3270_set_url(hSession,v3270_url_edit_get_url(widget->input.url));
742 645  
743 646 // Apply LU names
744 647 v3270_set_lunames(terminal,gtk_entry_get_text(widget->input.entry[ENTRY_LU_NAMES]));
... ... @@ -801,42 +704,7 @@ static void load(GtkWidget *w, GtkWidget *terminal)
801 704 H3270 *hSession = v3270_get_session(terminal);
802 705 V3270HostSelectWidget *widget = GTK_V3270HostSelectWidget(w);
803 706  
804   - const gchar * u = lib3270_get_url(hSession);
805   -
806   - if(u)
807   - {
808   -
809   - g_autofree gchar * url = g_strdup(u);
810   -
811   - gtk_combo_box_set_active(widget->input.ssl,(g_str_has_prefix(u,"tn3270s") ? 1 : 0));
812   -// gtk_toggle_button_set_active(widget->input.ssl,g_str_has_prefix(u,"tn3270s"));
813   -
814   - gchar *hostname = strstr(url,"://");
815   - if(!hostname)
816   - {
817   - g_message("Invalid URL: \"%s\" (no scheme)",url);
818   - }
819   - else
820   - {
821   - hostname += 3;
822   -
823   - gchar *srvcname = strchr(hostname,':');
824   -
825   - if(srvcname)
826   - {
827   - *(srvcname++) = 0;
828   - }
829   - else
830   - {
831   - srvcname = "23";
832   - }
833   -
834   - gtk_entry_set_text(widget->input.entry[ENTRY_HOSTNAME],hostname);
835   - gtk_entry_set_text(widget->input.entry[ENTRY_SRVCNAME],srvcname);
836   -
837   - }
838   -
839   - }
  707 + v3270_url_edit_set_url(widget->input.url,lib3270_get_url(hSession));
840 708  
841 709 // Load LU names
842 710 g_autofree gchar * lunames = v3270_get_lunames(terminal);
... ...
src/dialogs/settings/marshal 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +VOID:BOOLEAN
  2 +
... ...
src/dialogs/settings/url.c 0 → 100644
... ... @@ -0,0 +1,382 @@
  1 +/* SPDX-License-Identifier: LGPL-3.0-or-later */
  2 +
  3 +/*
  4 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  5 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  6 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  7 + *
  8 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  9 + *
  10 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  11 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  12 + * Free Software Foundation.
  13 + *
  14 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  15 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  16 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  17 + * obter mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  20 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  21 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  22 + *
  23 + * Este programa está nomeado como - e possui - linhas de código.
  24 + *
  25 + * Contatos:
  26 + *
  27 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  28 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  29 + *
  30 + */
  31 +
  32 + #include "private.h"
  33 + #include "marshal.h"
  34 + #include <v3270/settings/url.h>
  35 + #include <ctype.h>
  36 +
  37 + enum {
  38 + PROP_0,
  39 + PROP_URL
  40 + };
  41 +
  42 + enum {
  43 + SIGNAL_VALID,
  44 + LAST_SIGNAL
  45 + };
  46 +
  47 + static guint signals[LAST_SIGNAL] = { 0 };
  48 +
  49 + struct _V3270URLEdit {
  50 +
  51 + GtkGrid parent;
  52 +
  53 + /// @brief Entry fields
  54 + struct {
  55 + GtkWidget *host; ///< @brief The hostname
  56 + GtkWidget *service; ///< @brief The service/port name
  57 + GtkWidget *ssl; ///< @brief The Security Drop-Down
  58 + } entry;
  59 +
  60 + /// @brief Current URL
  61 + gchar *url;
  62 +
  63 + /// @brief Is the entry valid?
  64 + gboolean isValid;
  65 +
  66 + };
  67 +
  68 + struct _V3270URLEditClass {
  69 +
  70 + GtkGridClass parent;
  71 +
  72 + GParamSpec *url;
  73 +
  74 + };
  75 +
  76 + G_DEFINE_TYPE(V3270URLEdit, V3270URLEdit, GTK_TYPE_GRID);
  77 +
  78 + GtkWidget * v3270_url_edit_new() {
  79 + return g_object_new(GTK_TYPE_V3270URLEdit, NULL);
  80 + }
  81 +
  82 + static void finalize(GObject *object) {
  83 +
  84 + V3270URLEdit *edit = GTK_V3270URLEdit(object);
  85 +
  86 + if(edit->url) {
  87 + g_free(edit->url);
  88 + edit->url = NULL;
  89 + }
  90 +
  91 + G_OBJECT_CLASS(V3270URLEdit_parent_class)->finalize(object);
  92 + }
  93 +
  94 + static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) {
  95 +
  96 + switch(prop_id) {
  97 + case PROP_URL:
  98 + v3270_url_edit_set_url(GTK_WIDGET(object),g_value_get_string(value));
  99 + break;
  100 + }
  101 + }
  102 +
  103 + static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) {
  104 + switch(prop_id) {
  105 + case PROP_URL:
  106 + g_value_set_string(value,v3270_url_edit_get_url(GTK_WIDGET(object)));
  107 + break;
  108 + }
  109 + }
  110 +
  111 + static void V3270URLEdit_class_init(V3270URLEditClass *klass) {
  112 +
  113 + GObjectClass *goc = G_OBJECT_CLASS(klass);
  114 +
  115 + goc->finalize = finalize;
  116 + goc->set_property = set_property;
  117 + goc->get_property = get_property;
  118 +
  119 + klass->url =
  120 + g_param_spec_string(
  121 + "url", "url",
  122 + _( "TN3270 Host URL" ),
  123 + lib3270_get_default_host(NULL),
  124 + G_PARAM_READWRITE
  125 + );
  126 +
  127 + g_object_class_install_property(
  128 + goc,
  129 + PROP_URL,
  130 + klass->url
  131 + );
  132 +
  133 + signals[SIGNAL_VALID] =
  134 + g_signal_new(
  135 + I_("valid"),
  136 + G_OBJECT_CLASS_TYPE(goc),
  137 + G_SIGNAL_RUN_FIRST,
  138 + 0,
  139 + NULL, NULL,
  140 + v3270_VOID__BOOLEAN,
  141 + G_TYPE_NONE, 1, G_TYPE_BOOLEAN, 0
  142 + );
  143 +
  144 + }
  145 +
  146 + static void entry_changed(GtkEntry *entry, V3270URLEdit *widget) {
  147 +
  148 + g_object_notify_by_pspec(G_OBJECT(widget),GTK_V3270URLEdit_GET_CLASS(widget)->url);
  149 +
  150 + gboolean isValid = (gtk_entry_get_text(entry)[0] != 0);
  151 + if(widget->isValid == isValid) {
  152 + return;
  153 + }
  154 +
  155 + if(isValid) {
  156 +
  157 + size_t ix;
  158 +
  159 + // Verify entry-fields
  160 + GtkWidget *widgets[] = {
  161 + widget->entry.host,
  162 + widget->entry.service
  163 + };
  164 +
  165 + for(ix = 0; ix < G_N_ELEMENTS(widgets); ix++) {
  166 +
  167 + const gchar *str = gtk_entry_get_text(GTK_ENTRY(widgets[ix]));
  168 + while(*str && isspace(*str)) {
  169 + str++;
  170 + }
  171 +
  172 + if(!*str) {
  173 + isValid = FALSE;
  174 + break;
  175 + }
  176 +
  177 + }
  178 +
  179 + }
  180 +
  181 + if(isValid == widget->isValid) {
  182 + return;
  183 + }
  184 +
  185 + debug("The URL box is %s", isValid ? "valid" : "invalid");
  186 +
  187 + widget->isValid = isValid;
  188 + g_signal_emit(widget, signals[SIGNAL_VALID], 0, isValid);
  189 +
  190 + }
  191 +
  192 + static void V3270URLEdit_init(V3270URLEdit *widget) {
  193 +
  194 + size_t ix;
  195 +
  196 + widget->isValid = FALSE;
  197 +
  198 + // Table of constants.
  199 + static const struct _labels {
  200 + int row;
  201 + int col;
  202 + const char *text;
  203 + const char *tooltip;
  204 + } labels[] = {
  205 + {
  206 + .row = 0,
  207 + .col = 0,
  208 + .text = N_("Hostname"),
  209 + .tooltip = N_("Address or name of the host to connect."),
  210 + },
  211 + {
  212 + .row = 1,
  213 + .col = 0,
  214 + .text = N_("Service/Port"),
  215 + .tooltip = N_("Port or service name."),
  216 + },
  217 + {
  218 + .row = 1,
  219 + .col = 2,
  220 + .text = N_("Security"),
  221 + .tooltip = N_("Security engine"),
  222 + }
  223 + };
  224 +
  225 + // setup grid
  226 + gtk_widget_set_vexpand(GTK_WIDGET(widget),FALSE);
  227 + gtk_grid_set_row_spacing(GTK_GRID(widget),6);
  228 + gtk_grid_set_column_spacing(GTK_GRID(widget),12);
  229 +
  230 + // Create hostname field.
  231 + {
  232 + widget->entry.host = gtk_entry_new();
  233 + gtk_widget_set_hexpand(widget->entry.host,TRUE);
  234 + gtk_entry_set_width_chars(GTK_ENTRY(widget->entry.host),50);
  235 + gtk_widget_set_tooltip_text(widget->entry.host,g_dgettext(GETTEXT_PACKAGE,labels[0].tooltip));
  236 + gtk_grid_attach(GTK_GRID(widget),widget->entry.host,1,0,5,1);
  237 + g_signal_connect(widget->entry.host,"changed",G_CALLBACK(entry_changed),widget);
  238 + }
  239 +
  240 + // Create the service/port field.
  241 + {
  242 + widget->entry.service = gtk_entry_new();
  243 + gtk_widget_set_hexpand(widget->entry.service,FALSE);
  244 + gtk_entry_set_max_length(GTK_ENTRY(widget->entry.service),6);
  245 + gtk_entry_set_width_chars(GTK_ENTRY(widget->entry.service),7);
  246 + gtk_widget_set_tooltip_text(widget->entry.service,g_dgettext(GETTEXT_PACKAGE,labels[1].tooltip));
  247 + gtk_grid_attach(GTK_GRID(widget),widget->entry.service,1,1,1,1);
  248 + g_signal_connect(widget->entry.service,"changed",G_CALLBACK(entry_changed),widget);
  249 + }
  250 +
  251 + // Create the security dropbox.
  252 + {
  253 + GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(1,G_TYPE_STRING);
  254 + widget->entry.ssl = gtk_combo_box_new_with_model(model);
  255 + gtk_widget_set_hexpand(widget->entry.ssl,TRUE);
  256 +
  257 + GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new();
  258 + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget->entry.ssl), text_renderer, TRUE);
  259 + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget->entry.ssl), text_renderer, "text", 0, NULL);
  260 +
  261 + static const gchar * levels[] =
  262 + {
  263 + N_("Unsecure"),
  264 + N_("SSL/TLS")
  265 + };
  266 +
  267 + size_t level;
  268 + for(level = 0; level < G_N_ELEMENTS(levels); level++)
  269 + {
  270 + GtkTreeIter iter;
  271 + gtk_list_store_append((GtkListStore *) model, &iter);
  272 + gtk_list_store_set((GtkListStore *) model, &iter, 0, g_dgettext(GETTEXT_PACKAGE,levels[level]), -1);
  273 + };
  274 +
  275 + gtk_widget_set_tooltip_text(widget->entry.ssl,g_dgettext(GETTEXT_PACKAGE,labels[2].tooltip));
  276 + gtk_grid_attach(GTK_GRID(widget),widget->entry.ssl,3,1,3,1);
  277 + }
  278 +
  279 + // Create labels.
  280 + {
  281 +
  282 + for(ix = 0; ix < G_N_ELEMENTS(labels);ix++) {
  283 + GtkWidget * label = gtk_label_new(g_dgettext(GETTEXT_PACKAGE,labels[ix].text));
  284 + gtk_widget_set_halign(label,GTK_ALIGN_END);
  285 + gtk_widget_set_hexpand(label,FALSE);
  286 + gtk_grid_attach(GTK_GRID(widget),label,labels[ix].col,labels[ix].row,1,1);
  287 + gtk_widget_set_tooltip_text(label,g_dgettext(GETTEXT_PACKAGE,labels[ix].tooltip));
  288 + }
  289 +
  290 +
  291 + }
  292 +
  293 + v3270_url_edit_set_url(GTK_WIDGET(widget),NULL);
  294 +
  295 + }
  296 +
  297 + void v3270_url_edit_set_url(GtkWidget *widget, const gchar *url) {
  298 +
  299 + g_return_if_fail(GTK_IS_V3270URLEdit(widget));
  300 + V3270URLEdit *edit = GTK_V3270URLEdit(widget);
  301 +
  302 + if(edit->url) {
  303 + g_free(edit->url);
  304 + edit->url = NULL;
  305 + }
  306 +
  307 + if(!(url && *url)) {
  308 + gtk_combo_box_set_active(GTK_COMBO_BOX(edit->entry.ssl),0);
  309 + gtk_entry_set_text(GTK_ENTRY(edit->entry.host),"");
  310 + gtk_entry_set_text(GTK_ENTRY(edit->entry.service),"");
  311 + return;
  312 + }
  313 +
  314 + edit->url = g_strdup(url);
  315 +
  316 + gtk_combo_box_set_active(GTK_COMBO_BOX(edit->entry.ssl),(g_str_has_prefix(edit->url,"tn3270s") ? 1 : 0));
  317 +
  318 + gchar *hostname = strstr(url,"://");
  319 + if(!hostname)
  320 + {
  321 + g_message("Invalid URL: \"%s\" (no scheme)",url);
  322 + gtk_entry_set_text(GTK_ENTRY(edit->entry.host),"");
  323 + gtk_entry_set_text(GTK_ENTRY(edit->entry.service),"");
  324 + return;
  325 + }
  326 +
  327 + hostname += 3;
  328 + g_autofree gchar *str = g_strdup(hostname);
  329 +
  330 + gchar *srvcname = strchr(str,':');
  331 +
  332 + if(srvcname) {
  333 + *(srvcname++) = 0;
  334 + } else {
  335 + srvcname = "3270";
  336 + }
  337 +
  338 + gtk_entry_set_text(GTK_ENTRY(edit->entry.host),str);
  339 + gtk_entry_set_text(GTK_ENTRY(edit->entry.service),srvcname);
  340 +
  341 + }
  342 +
  343 + const gchar * v3270_url_edit_get_url(GtkWidget *widget) {
  344 +
  345 + g_return_val_if_fail(GTK_IS_V3270URLEdit(widget),NULL);
  346 + V3270URLEdit *edit = GTK_V3270URLEdit(widget);
  347 +
  348 + if(edit->url) {
  349 + return edit->url;
  350 + }
  351 +
  352 + const gchar *host = gtk_entry_get_text(GTK_ENTRY(edit->entry.host));
  353 + if(!*host)
  354 + return "";
  355 +
  356 + const gchar *service = gtk_entry_get_text(GTK_ENTRY(edit->entry.service));
  357 + if(!*service)
  358 + service = "3270";
  359 +
  360 + edit->url =
  361 + g_strconcat(
  362 + (gtk_combo_box_get_active(GTK_COMBO_BOX(edit->entry.ssl)) > 0 ? "tn3270s://" : "tn3270://"),
  363 + host,
  364 + ":",
  365 + service,
  366 + NULL
  367 + );
  368 +
  369 + return edit->url;
  370 + }
  371 +
  372 + gboolean v3270_url_edit_is_valid(GtkWidget *widget) {
  373 + g_return_val_if_fail(GTK_IS_V3270URLEdit(widget),FALSE);
  374 +
  375 + V3270URLEdit *edit = GTK_V3270URLEdit(widget);
  376 +
  377 + const gchar *host = gtk_entry_get_text(GTK_ENTRY(edit->entry.host));
  378 + if(!*host)
  379 + return FALSE;
  380 +
  381 + return TRUE;
  382 + }
... ...
src/include/v3270/settings/url.h 0 → 100644
... ... @@ -0,0 +1,59 @@
  1 +/* SPDX-License-Identifier: LGPL-3.0-or-later */
  2 +
  3 +/*
  4 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  5 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  6 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  7 + *
  8 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  9 + *
  10 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  11 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  12 + * Free Software Foundation.
  13 + *
  14 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  15 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  16 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  17 + * obter mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  20 + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin
  21 + * St, Fifth Floor, Boston, MA 02110-1301 USA
  22 + *
  23 + * Este programa está nomeado como - e possui - linhas de código.
  24 + *
  25 + * Contatos:
  26 + *
  27 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  28 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  29 + *
  30 + */
  31 +
  32 +#ifndef V3270_SETTINGS_URL_H_INCLUDED
  33 +
  34 + #define V3270_SETTINGS_URL_H_INCLUDED
  35 +
  36 + #include <gtk/gtk.h>
  37 +
  38 + /*--[ URL Settings Widget ]--------------------------------------------------------------------------*/
  39 +
  40 + G_BEGIN_DECLS
  41 +
  42 + #define GTK_TYPE_V3270URLEdit (V3270URLEdit_get_type ())
  43 + #define GTK_V3270URLEdit(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_V3270URLEdit, V3270URLEdit))
  44 + #define GTK_V3270URLEdit_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_V3270URLEdit, V3270URLEditClass))
  45 + #define GTK_IS_V3270URLEdit(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_V3270URLEdit))
  46 + #define GTK_IS_V3270URLEdit_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270URLEdit))
  47 + #define GTK_V3270URLEdit_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270URLEdit, V3270URLEditClass))
  48 +
  49 + typedef struct _V3270URLEdit V3270URLEdit;
  50 + typedef struct _V3270URLEditClass V3270URLEditClass;
  51 +
  52 + GtkWidget * v3270_url_edit_new();
  53 + void v3270_url_edit_set_url(GtkWidget *widget, const gchar *url);
  54 + const gchar * v3270_url_edit_get_url(GtkWidget *widget);
  55 + gboolean v3270_url_edit_is_valid(GtkWidget *widget);
  56 +
  57 + G_END_DECLS
  58 +
  59 +#endif // V3270_SETTINGS_URL_H_INCLUDED
... ...
src/terminal/drawing/oia.c
... ... @@ -144,7 +144,7 @@ static void setup_cursor_position(GdkRectangle *rect, v3270FontInfo *metrics, ca
144 144 rect->width = metrics->width * 8;
145 145 rect->x -= rect->width;
146 146  
147   - if(lib3270_get_toggle(host,LIB3270_TOGGLE_CURSOR_POS))
  147 + if(lib3270_get_toggle(host,LIB3270_TOGGLE_CURSOR_POS) && lib3270_is_connected(host))
148 148 {
149 149 int addr = lib3270_get_cursor_address(host);
150 150 draw_cursor_position(cr,rect,metrics,addr/cols,addr%cols);
... ... @@ -871,7 +871,7 @@ void v3270_update_cursor(H3270 *session, unsigned short row, unsigned short col,
871 871 v3270_queue_draw_area(GTK_WIDGET(terminal),terminal->cursor.rect.x,0,1,terminal->oia.rect->y-3);
872 872 }
873 873  
874   - if(lib3270_get_toggle(session,LIB3270_TOGGLE_CURSOR_POS))
  874 + if(lib3270_get_toggle(session,LIB3270_TOGGLE_CURSOR_POS) && lib3270_is_connected(session))
875 875 {
876 876 // Update OIA
877 877 GdkRectangle * rect;
... ...
src/terminal/keyboard/accelerator.c
... ... @@ -160,24 +160,24 @@
160 160  
161 161 switch(accel->type) {
162 162 case V3270_ACCELERATOR_TYPE_LIB3270_ACTION:
163   - debug("%s","V3270_ACCELERATOR_TYPE_LIB3270_ACTION");
  163 +// debug("%s","V3270_ACCELERATOR_TYPE_LIB3270_ACTION");
164 164 description = lib3270_property_get_summary(property);
165 165 break;
166 166  
167 167 case V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE:
168   - debug("%s","V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE");
  168 +// debug("%s","V3270_ACCELERATOR_TYPE_LIB3270_TOGGLE");
169 169 description = lib3270_property_get_summary(property);
170 170 break;
171 171  
172 172 case V3270_ACCELERATOR_TYPE_INTERNAL:
173   - debug("%s","V3270_ACCELERATOR_TYPE_INTERNAL");
  173 +// debug("%s","V3270_ACCELERATOR_TYPE_INTERNAL");
174 174 if(property->summary)
175 175 description = g_dgettext(GETTEXT_PACKAGE,property->summary);
176 176 break;
177 177  
178 178 }
179 179  
180   - debug("%s=%s",__FUNCTION__,description);
  180 +// debug("%s=%s",__FUNCTION__,description);
181 181  
182 182 if(description && *description)
183 183 return description;
... ...
src/terminal/keyboard/keyfile.c
... ... @@ -106,7 +106,7 @@
106 106  
107 107 if(!accel)
108 108 {
109   - g_warning("Can't parse accelerator %s",name);
  109 + g_warning("Can't parse accelerator '%s' with keys '%s'",name,keys);
110 110 return;
111 111 }
112 112  
... ...
src/terminal/widget.c
... ... @@ -868,20 +868,30 @@ LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget)
868 868 static gboolean bg_emit_save_settings(v3270 *terminal)
869 869 {
870 870 GdkWindow * window = gtk_widget_get_window(GTK_WIDGET(terminal));
871   - gdk_window_set_cursor(
872   - window,
873   - GTK_V3270_GET_CLASS(terminal)->cursors[LIB3270_POINTER_WAITING]
874   - );
875 871  
876   - gdk_display_sync(gtk_widget_get_display(GTK_WIDGET(terminal)));
  872 + if(window) {
877 873  
878   - terminal->freeze = 0;
879   - g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
  874 + gdk_window_set_cursor(
  875 + window,
  876 + GTK_V3270_GET_CLASS(terminal)->cursors[LIB3270_POINTER_WAITING]
  877 + );
880 878  
881   - gdk_window_set_cursor(
882   - window,
883   - NULL
884   - );
  879 + gdk_display_sync(gtk_widget_get_display(GTK_WIDGET(terminal)));
  880 +
  881 + terminal->freeze = 0;
  882 + g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
  883 +
  884 + gdk_window_set_cursor(
  885 + window,
  886 + NULL
  887 + );
  888 +
  889 + } else {
  890 +
  891 + terminal->freeze = 0;
  892 + g_signal_emit(terminal,v3270_widget_signal[V3270_SIGNAL_SAVE_SETTINGS], 0, FALSE);
  893 +
  894 + }
885 895  
886 896 g_object_unref(terminal);
887 897  
... ...
v3270.cbp
... ... @@ -121,6 +121,9 @@
121 121 <Unit filename="src/dialogs/settings/tools.c">
122 122 <Option compilerVar="CC" />
123 123 </Unit>
  124 + <Unit filename="src/dialogs/settings/url.c">
  125 + <Option compilerVar="CC" />
  126 + </Unit>
124 127 <Unit filename="src/dialogs/settings/widget.c">
125 128 <Option compilerVar="CC" />
126 129 </Unit>
... ... @@ -197,6 +200,7 @@
197 200 <Unit filename="src/include/v3270/security.h" />
198 201 <Unit filename="src/include/v3270/selection.h" />
199 202 <Unit filename="src/include/v3270/settings.h" />
  203 + <Unit filename="src/include/v3270/settings/url.h" />
200 204 <Unit filename="src/include/v3270/toggle.h" />
201 205 <Unit filename="src/include/v3270/tools.h" />
202 206 <Unit filename="src/include/v3270/trace.h" />
... ...