Commit e5a2791d6efe18cb03adee0d249e0b355d812a57
1 parent
6ef3c964
Exists in
master
and in
1 other branch
Implementing settings popup dialog.
Showing
8 changed files
with
213 additions
and
121 deletions
Show diff stats
src/dialogs/settings/dialog.c
1 | +/* SPDX-License-Identifier: LGPL-3.0-or-later */ | ||
2 | + | ||
1 | /* | 3 | /* |
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. | 4 | + * Copyright (C) 2008 Banco do Brasil S.A. |
22 | * | 5 | * |
23 | - * Contatos: | 6 | + * This program is free software: you can redistribute it and/or modify |
7 | + * it under the terms of the GNU Lesser General Public License as published | ||
8 | + * by the Free Software Foundation, either version 3 of the License, or | ||
9 | + * (at your option) any later version. | ||
24 | * | 10 | * |
25 | - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | 11 | + * This program is distributed in the hope that it will be useful, |
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
27 | * | 15 | * |
16 | + * You should have received a copy of the GNU Lesser General Public License | ||
17 | + * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
28 | */ | 18 | */ |
29 | 19 | ||
30 | #include "../private.h" | 20 | #include "../private.h" |
@@ -301,6 +291,11 @@ void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *ter | @@ -301,6 +291,11 @@ void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *ter | ||
301 | g_message("No active page on settings dialog"); | 291 | g_message("No active page on settings dialog"); |
302 | } | 292 | } |
303 | 293 | ||
294 | + gtk_window_set_transient_for( | ||
295 | + GTK_WINDOW(widget), | ||
296 | + GTK_WINDOW(gtk_widget_get_toplevel(terminal)) | ||
297 | + ); | ||
298 | + | ||
304 | } | 299 | } |
305 | 300 | ||
306 | void v3270_settings_dialog_set_has_subtitle(GtkWidget *widget, gboolean has_subtitle) | 301 | void v3270_settings_dialog_set_has_subtitle(GtkWidget *widget, gboolean has_subtitle) |
@@ -332,32 +327,6 @@ void v3270_setttings_dialog_response(GtkDialog *dialog, gint response_id, GtkWid | @@ -332,32 +327,6 @@ void v3270_setttings_dialog_response(GtkDialog *dialog, gint response_id, GtkWid | ||
332 | 327 | ||
333 | } | 328 | } |
334 | 329 | ||
335 | -void v3270_settings_popup_dialog(GtkWidget *widget, GtkWidget *terminal, gboolean modal) | ||
336 | -{ | ||
337 | - g_return_if_fail(GTK_IS_V3270(terminal) && GTK_IS_V3270_SETTINGS(widget)); | ||
338 | - | ||
339 | - GtkWidget * dialog = v3270_settings_dialog_new(); | ||
340 | - V3270Settings * settings = GTK_V3270_SETTINGS(widget); | ||
341 | - | ||
342 | - v3270_settings_dialog_set_has_subtitle(dialog,FALSE); | ||
343 | - | ||
344 | - if(settings->title) | ||
345 | - gtk_window_set_title(GTK_WINDOW(dialog),settings->title); | ||
346 | - | ||
347 | - gtk_container_add(GTK_CONTAINER(dialog), widget); | ||
348 | - gtk_dialog_set_toplevel(dialog,terminal); | ||
349 | - | ||
350 | - gtk_window_set_modal(GTK_WINDOW(dialog),modal); | ||
351 | - | ||
352 | - v3270_settings_dialog_set_terminal_widget(dialog, terminal); | ||
353 | - | ||
354 | - g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); | ||
355 | - g_signal_connect(dialog,"response",G_CALLBACK(v3270_setttings_dialog_response),NULL); | ||
356 | - | ||
357 | - gtk_widget_show_all(dialog); | ||
358 | - | ||
359 | -} | ||
360 | - | ||
361 | GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal) { | 330 | GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal) { |
362 | 331 | ||
363 | const gchar * title = GTK_V3270_SETTINGS(settings)->title; | 332 | const gchar * title = GTK_V3270_SETTINGS(settings)->title; |
src/dialogs/settings/host.c
@@ -588,6 +588,7 @@ LIB3270_EXPORT GtkWidget * v3270_host_select_new() | @@ -588,6 +588,7 @@ LIB3270_EXPORT GtkWidget * v3270_host_select_new() | ||
588 | return v3270_host_settings_new(); | 588 | return v3270_host_settings_new(); |
589 | } | 589 | } |
590 | 590 | ||
591 | +/* | ||
591 | LIB3270_EXPORT void v3270_select_host(GtkWidget *widget) | 592 | LIB3270_EXPORT void v3270_select_host(GtkWidget *widget) |
592 | { | 593 | { |
593 | g_return_if_fail(GTK_IS_V3270(widget)); | 594 | g_return_if_fail(GTK_IS_V3270(widget)); |
@@ -633,6 +634,7 @@ LIB3270_EXPORT void v3270_select_host(GtkWidget *widget) | @@ -633,6 +634,7 @@ LIB3270_EXPORT void v3270_select_host(GtkWidget *widget) | ||
633 | gtk_widget_destroy(dialog); | 634 | gtk_widget_destroy(dialog); |
634 | 635 | ||
635 | } | 636 | } |
637 | +*/ | ||
636 | 638 | ||
637 | static void apply(GtkWidget *w, GtkWidget *terminal) | 639 | static void apply(GtkWidget *w, GtkWidget *terminal) |
638 | { | 640 | { |
@@ -0,0 +1,54 @@ | @@ -0,0 +1,54 @@ | ||
1 | +/* SPDX-License-Identifier: LGPL-3.0-or-later */ | ||
2 | + | ||
3 | +/* | ||
4 | + * Copyright (C) 2008 Banco do Brasil S.A. | ||
5 | + * | ||
6 | + * This program is free software: you can redistribute it and/or modify | ||
7 | + * it under the terms of the GNU Lesser General Public License as published | ||
8 | + * by the Free Software Foundation, either version 3 of the License, or | ||
9 | + * (at your option) any later version. | ||
10 | + * | ||
11 | + * This program is distributed in the hope that it will be useful, | ||
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
15 | + * | ||
16 | + * You should have received a copy of the GNU Lesser General Public License | ||
17 | + * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
18 | + */ | ||
19 | + | ||
20 | + #include "private.h" | ||
21 | + #include <v3270/settings.h> | ||
22 | + #include <v3270/tools.h> | ||
23 | + | ||
24 | + GtkWidget * v3270_settings_popup_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal) | ||
25 | + { | ||
26 | +#ifdef DEBUG | ||
27 | + g_message("terminal=%d settings=%d",(int) GTK_IS_V3270(terminal), (int) GTK_IS_V3270_SETTINGS(settings)); | ||
28 | +#endif // DEBUG | ||
29 | + if( !(GTK_IS_V3270(terminal) && GTK_IS_V3270_SETTINGS(settings))) { | ||
30 | + g_message("%s was called with invalid arguments",__FUNCTION__); | ||
31 | + if(g_object_is_floating(settings)) { | ||
32 | + g_object_ref_sink(settings); | ||
33 | + } | ||
34 | + g_object_unref(settings); | ||
35 | + return; | ||
36 | + } | ||
37 | + | ||
38 | + GtkWidget * dialog = v3270_settings_dialog_new(); | ||
39 | + v3270_settings_dialog_set_has_subtitle(dialog,FALSE); | ||
40 | + | ||
41 | + gtk_window_set_title(GTK_WINDOW(dialog), v3270_settings_get_title(settings)); | ||
42 | + gtk_container_add(GTK_CONTAINER(dialog), settings); | ||
43 | + | ||
44 | + gtk_dialog_set_toplevel(dialog,terminal); | ||
45 | + gtk_window_set_modal(GTK_WINDOW(dialog),modal); | ||
46 | + | ||
47 | + v3270_settings_dialog_set_terminal_widget(dialog, terminal); | ||
48 | + | ||
49 | + g_signal_connect(dialog,"response",G_CALLBACK(v3270_setttings_dialog_response),NULL); | ||
50 | + g_signal_connect(dialog,"close",G_CALLBACK(gtk_widget_destroy),NULL); | ||
51 | + | ||
52 | + return dialog; | ||
53 | + | ||
54 | + } |
src/include/v3270.h
@@ -239,7 +239,7 @@ | @@ -239,7 +239,7 @@ | ||
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 | // Auxiliary widgets | 241 | // Auxiliary widgets |
242 | - LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); | 242 | + // LIB3270_EXPORT void v3270_select_host(GtkWidget *widget); |
243 | 243 | ||
244 | 244 | ||
245 | LIB3270_EXPORT int v3270_print(GtkWidget *widget, GError **error); | 245 | LIB3270_EXPORT int v3270_print(GtkWidget *widget, GError **error); |
src/include/v3270/settings.h
@@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
102 | LIB3270_EXPORT const gchar * v3270_settings_get_tooltip(GtkWidget *widget); | 102 | LIB3270_EXPORT const gchar * v3270_settings_get_tooltip(GtkWidget *widget); |
103 | 103 | ||
104 | /// @brief Popup a settings dialog for the terminal. | 104 | /// @brief Popup a settings dialog for the terminal. |
105 | - LIB3270_EXPORT void v3270_settings_popup_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal); | 105 | + LIB3270_EXPORT GtkWidget * v3270_settings_popup_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal); |
106 | 106 | ||
107 | /// @brief Get an edit dialog for the settings widget. | 107 | /// @brief Get an edit dialog for the settings widget. |
108 | LIB3270_EXPORT GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal); | 108 | LIB3270_EXPORT GtkWidget * v3270_settings_get_edit_dialog(GtkWidget *settings, GtkWidget *terminal, gboolean modal); |
src/terminal/actions/table.c
1 | +/* SPDX-License-Identifier: LGPL-3.0-or-later */ | ||
2 | + | ||
1 | /* | 3 | /* |
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. | 4 | + * Copyright (C) 2008 Banco do Brasil S.A. |
16 | * | 5 | * |
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 | 6 | + * This program is free software: you can redistribute it and/or modify |
7 | + * it under the terms of the GNU Lesser General Public License as published | ||
8 | + * by the Free Software Foundation, either version 3 of the License, or | ||
9 | + * (at your option) any later version. | ||
20 | * | 10 | * |
21 | - * Este programa está nomeado como properties.c 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) | 11 | + * This program is distributed in the hope that it will be useful, |
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
27 | * | 15 | * |
16 | + * You should have received a copy of the GNU Lesser General Public License | ||
17 | + * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
28 | */ | 18 | */ |
29 | 19 | ||
30 | #include "private.h" | 20 | #include "private.h" |
31 | #include <lib3270/actions.h> | 21 | #include <lib3270/actions.h> |
32 | #include <v3270/actions.h> | 22 | #include <v3270/actions.h> |
33 | #include <v3270/selection.h> | 23 | #include <v3270/selection.h> |
24 | + #include <v3270/settings.h> | ||
34 | #include <terminal.h> | 25 | #include <terminal.h> |
35 | 26 | ||
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); | 27 | 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); | 28 | static int fire_copy_as_pixbuff(GtkWidget *widget, const struct _v3270_action * action); |
29 | + static int fire_accelerators_dialog(GtkWidget *widget, const struct _v3270_action * action); | ||
30 | + static int fire_host_dialog(GtkWidget *widget, const struct _v3270_action * action); | ||
41 | 31 | ||
42 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 32 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
43 | 33 | ||
@@ -45,7 +35,9 @@ | @@ -45,7 +35,9 @@ | ||
45 | 35 | ||
46 | static const V3270_ACTION actions[] = { | 36 | static const V3270_ACTION actions[] = { |
47 | 37 | ||
38 | + // | ||
48 | // Standard Clipboard actions | 39 | // Standard Clipboard actions |
40 | + // | ||
49 | { | 41 | { |
50 | .flags = (V3270_ACTION_FLAGS) V3270_COPY_SMART, | 42 | .flags = (V3270_ACTION_FLAGS) V3270_COPY_SMART, |
51 | .name = "copy", | 43 | .name = "copy", |
@@ -320,6 +312,28 @@ | @@ -320,6 +312,28 @@ | ||
320 | 312 | ||
321 | }, | 313 | }, |
322 | 314 | ||
315 | + // | ||
316 | + // Dialog actions | ||
317 | + // | ||
318 | + { | ||
319 | + .group = LIB3270_ACTION_GROUP_NONE, | ||
320 | + .name = "dialog-accelerators", | ||
321 | + .label = N_("Change keyboard accelerators"), | ||
322 | + .activate = fire_accelerators_dialog | ||
323 | + | ||
324 | + }, | ||
325 | + | ||
326 | + { | ||
327 | + .group = LIB3270_ACTION_GROUP_OFFLINE, | ||
328 | + .name = "dialog-host", | ||
329 | + .label = N_("Change host settings"), | ||
330 | + .activate = fire_host_dialog | ||
331 | + | ||
332 | + }, | ||
333 | + | ||
334 | + // | ||
335 | + // Terminator | ||
336 | + // | ||
323 | { | 337 | { |
324 | .name = NULL | 338 | .name = NULL |
325 | } | 339 | } |
@@ -339,26 +353,71 @@ | @@ -339,26 +353,71 @@ | ||
339 | return 0; | 353 | return 0; |
340 | } | 354 | } |
341 | 355 | ||
342 | - /* | ||
343 | - int fire_kp_add_action(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { | 356 | + static int fire_accelerators_dialog(GtkWidget *widget, const struct _v3270_action * action) { |
357 | + | ||
358 | + /* | ||
359 | + v3270_settings_popup_dialog( | ||
360 | + v3270_accelerator_settings_new(), | ||
361 | + widget, | ||
362 | + TRUE | ||
363 | + ); | ||
364 | + */ | ||
365 | + | ||
366 | + return 0; | ||
367 | + } | ||
344 | 368 | ||
345 | - if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) | ||
346 | - return lib3270_nextfield(GTK_V3270(widget)->host); | 369 | + static int fire_host_dialog(GtkWidget *widget, const struct _v3270_action * action) { |
347 | 370 | ||
348 | - v3270_set_string(widget, "+"); | 371 | + gtk_widget_show_all( |
372 | + v3270_settings_popup_dialog( | ||
373 | + v3270_host_settings_new(), | ||
374 | + widget, | ||
375 | + TRUE | ||
376 | + ) | ||
377 | + ); | ||
349 | 378 | ||
350 | return 0; | 379 | return 0; |
351 | 380 | ||
352 | - } | 381 | + /* |
382 | + GtkWidget * dialog = v3270_settings_dialog_new(); | ||
383 | + GtkWidget * settings = v3270_host_settings_new(); | ||
353 | 384 | ||
354 | - int fire_kp_sub_action(GtkWidget *widget, const struct _v3270_action G_GNUC_UNUSED(* action)) { | 385 | + v3270_settings_dialog_set_has_subtitle(dialog,FALSE); |
355 | 386 | ||
356 | - if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) | ||
357 | - return lib3270_previousfield(GTK_V3270(widget)->host); | 387 | + gtk_window_set_title(GTK_WINDOW(dialog), v3270_settings_get_title(settings)); |
388 | + gtk_container_add(GTK_CONTAINER(dialog), settings); | ||
358 | 389 | ||
359 | - v3270_set_string(widget, "-"); | 390 | + gtk_dialog_set_toplevel(dialog,widget); |
391 | + gtk_window_set_modal(GTK_WINDOW(dialog),TRUE); | ||
360 | 392 | ||
361 | - return 0; | 393 | + v3270_settings_dialog_set_terminal_widget(dialog, widget); |
394 | + | ||
395 | + gtk_window_set_default_size(GTK_WINDOW(dialog), 700, 150); | ||
396 | + gtk_widget_show_all(dialog); | ||
397 | + | ||
398 | + gboolean again = TRUE; | ||
399 | + while(again) | ||
400 | + { | ||
401 | + gtk_widget_set_sensitive(dialog,TRUE); | ||
402 | + gtk_widget_set_visible(dialog,TRUE); | ||
403 | + | ||
404 | + switch(gtk_dialog_run(GTK_DIALOG(dialog))) | ||
405 | + { | ||
406 | + case GTK_RESPONSE_APPLY: | ||
407 | + debug("V3270HostSelectWidget::%s=%s",__FUNCTION__,"GTK_RESPONSE_APPLY"); | ||
408 | + v3270_settings_dialog_apply(dialog); | ||
409 | + again = lib3270_reconnect(v3270_get_session(widget),0); | ||
410 | + break; | ||
411 | + | ||
412 | + case GTK_RESPONSE_CANCEL: | ||
413 | + again = FALSE; | ||
414 | + debug("V3270HostSelectWidget::%s=%s",__FUNCTION__,"GTK_RESPONSE_CANCEL"); | ||
415 | + v3270_settings_dialog_revert(dialog); | ||
416 | + break; | ||
417 | + } | ||
418 | + } | ||
419 | + | ||
420 | + gtk_widget_destroy(dialog); | ||
421 | + */ | ||
362 | 422 | ||
363 | } | 423 | } |
364 | -*/ |
src/trace/exec.c
1 | +/* SPDX-License-Identifier: LGPL-3.0-or-later */ | ||
2 | + | ||
1 | /* | 3 | /* |
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. | 4 | + * Copyright (C) 2008 Banco do Brasil S.A. |
16 | * | 5 | * |
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 | 6 | + * This program is free software: you can redistribute it and/or modify |
7 | + * it under the terms of the GNU Lesser General Public License as published | ||
8 | + * by the Free Software Foundation, either version 3 of the License, or | ||
9 | + * (at your option) any later version. | ||
20 | * | 10 | * |
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) | 11 | + * This program is distributed in the hope that it will be useful, |
12 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | + * GNU General Public License for more details. | ||
27 | * | 15 | * |
16 | + * You should have received a copy of the GNU Lesser General Public License | ||
17 | + * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
28 | */ | 18 | */ |
29 | 19 | ||
30 | #include "private.h" | 20 | #include "private.h" |
@@ -34,6 +24,7 @@ | @@ -34,6 +24,7 @@ | ||
34 | #include <lib3270/actions.h> | 24 | #include <lib3270/actions.h> |
35 | #include <internals.h> | 25 | #include <internals.h> |
36 | #include <v3270/selection.h> | 26 | #include <v3270/selection.h> |
27 | + #include <v3270/actions.h> | ||
37 | 28 | ||
38 | static const gchar * get_word(gchar **ptr) | 29 | static const gchar * get_word(gchar **ptr) |
39 | { | 30 | { |
@@ -308,19 +299,33 @@ | @@ -308,19 +299,33 @@ | ||
308 | } | 299 | } |
309 | 300 | ||
310 | // Check for external interpreters | 301 | // Check for external interpreters |
311 | - gboolean handled = FALSE; | ||
312 | - gchar * args = cmdline; | 302 | + { |
303 | + gboolean handled = FALSE; | ||
304 | + gchar * args = cmdline; | ||
313 | 305 | ||
314 | - while(*args && !g_ascii_isspace(*args)) | ||
315 | - args++; | 306 | + while(*args && !g_ascii_isspace(*args)) |
307 | + args++; | ||
316 | 308 | ||
317 | - if(*args) | ||
318 | - *(args++) = 0; | 309 | + if(*args) |
310 | + *(args++) = 0; | ||
319 | 311 | ||
320 | - v3270_trace_signal_emit(GTK_WIDGET(t), V3270_TRACE_SIGNAL_COMMAND, cmdline, args, &handled); | 312 | + v3270_trace_signal_emit(GTK_WIDGET(t), V3270_TRACE_SIGNAL_COMMAND, cmdline, args, &handled); |
321 | 313 | ||
322 | - if(handled) | ||
323 | - return 0; | 314 | + if(handled) |
315 | + return 0; | ||
316 | + } | ||
317 | + | ||
318 | + // Check for v3270 actions | ||
319 | + { | ||
320 | + const V3270_ACTION * action = v3270_get_actions(); | ||
321 | + | ||
322 | + while(action->name) { | ||
323 | + if(!g_ascii_strcasecmp(action->name,cmdline)) { | ||
324 | + return action->activate(terminal,action); | ||
325 | + } | ||
326 | + action++; | ||
327 | + } | ||
328 | + } | ||
324 | 329 | ||
325 | return errno = ENOENT; | 330 | return errno = ENOENT; |
326 | } | 331 | } |
v3270.cbp
@@ -117,6 +117,9 @@ | @@ -117,6 +117,9 @@ | ||
117 | <Unit filename="src/dialogs/settings/host.c"> | 117 | <Unit filename="src/dialogs/settings/host.c"> |
118 | <Option compilerVar="CC" /> | 118 | <Option compilerVar="CC" /> |
119 | </Unit> | 119 | </Unit> |
120 | + <Unit filename="src/dialogs/settings/popup.c"> | ||
121 | + <Option compilerVar="CC" /> | ||
122 | + </Unit> | ||
120 | <Unit filename="src/dialogs/settings/private.h" /> | 123 | <Unit filename="src/dialogs/settings/private.h" /> |
121 | <Unit filename="src/dialogs/settings/tools.c"> | 124 | <Unit filename="src/dialogs/settings/tools.c"> |
122 | <Option compilerVar="CC" /> | 125 | <Option compilerVar="CC" /> |