diff -Nru gtkterm-1.1.1/debian/changelog gtkterm-1.2.1/debian/changelog --- gtkterm-1.1.1/debian/changelog 2022-07-07 14:32:11.000000000 +0000 +++ gtkterm-1.2.1/debian/changelog 2022-07-06 17:20:16.000000000 +0000 @@ -1,3 +1,12 @@ +gtkterm (1.2.1-1) unstable; urgency=medium + + * Upgrade to 3.0 source format. Closes (#1007580). + * debian/watch: Update watchfile + * debian/control: Update Standard to 4.6.1 (no changes needed). + * New upstream version 1.2.1 + + -- Willem van den Akker Wed, 06 Jul 2022 19:20:16 +0200 + gtkterm (1.1.1-1) unstable; urgency=medium * New upstream release; diff -Nru gtkterm-1.1.1/debian/control gtkterm-1.2.1/debian/control --- gtkterm-1.1.1/debian/control 2022-07-07 14:32:11.000000000 +0000 +++ gtkterm-1.2.1/debian/control 2022-07-06 17:18:18.000000000 +0000 @@ -10,7 +10,7 @@ libvte-2.91-dev, intltool, libxml2-utils -Standards-Version: 4.5.1 +Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/debian/gtkterm Vcs-Git: https://salsa.debian.org/debian/gtkterm.git Homepage: https://github.com/Jeija/gtkterm diff -Nru gtkterm-1.1.1/debian/source/format gtkterm-1.2.1/debian/source/format --- gtkterm-1.1.1/debian/source/format 2022-07-07 14:32:11.000000000 +0000 +++ gtkterm-1.2.1/debian/source/format 2021-05-11 20:10:56.000000000 +0000 @@ -1 +1 @@ -1.0 +3.0 (quilt) diff -Nru gtkterm-1.1.1/debian/watch gtkterm-1.2.1/debian/watch --- gtkterm-1.1.1/debian/watch 2022-07-07 14:32:11.000000000 +0000 +++ gtkterm-1.2.1/debian/watch 2022-07-06 17:16:59.000000000 +0000 @@ -1,3 +1,4 @@ version=4 -opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/gtkterm-$1\.tar\.gz/ \ - https://github.com/Jeija/gtkterm/tags .*/?(\d{1,2}\.\d{1,2}(.\d{0,2}))*\.tar\.gz \ No newline at end of file +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*@ARCHIVE_EXT@)%@PACKAGE@-$1%" \ + https://github.com/jeija/gtkterm/tags \ + (?:.*?/)?v?@ANY_VERSION@@ARCHIVE_EXT@ diff -Nru gtkterm-1.1.1/meson.build gtkterm-1.2.1/meson.build --- gtkterm-1.1.1/meson.build 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/meson.build 2022-07-06 14:08:03.000000000 +0000 @@ -1,7 +1,7 @@ project( 'gtkterm', 'c', - version: '1.1.1', + version: '1.2.1', meson_version : '>= 0.46.0' ) @@ -19,7 +19,7 @@ conf = configuration_data() conf.set_quoted('VERSION', meson.project_version()) conf.set_quoted('PACKAGE', meson.project_name()) -conf.set_quoted('RELEASE_DATE', 'December 2020') +conf.set_quoted('RELEASE_DATE', 'July 2022') conf.set_quoted('LOCALEDIR', localedir) cc = meson.get_compiler('c') diff -Nru gtkterm-1.1.1/NEWS gtkterm-1.2.1/NEWS --- gtkterm-1.1.1/NEWS 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/NEWS 2022-07-06 14:08:03.000000000 +0000 @@ -1,3 +1,6 @@ +1.2 : Searchbar added + Load/save config from XDG_CONFIG_HOME + 1.1.1 : Fixed many typos (Thanks to Markus Hiereth) 1.1 : Clear scrollbuffer option diff -Nru gtkterm-1.1.1/README.md gtkterm-1.2.1/README.md --- gtkterm-1.1.1/README.md 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/README.md 2022-07-06 14:08:03.000000000 +0000 @@ -18,10 +18,14 @@ ---:|--- `L` | Clear screen `R` | Send file -`Q` | Quit +`Q` | Quit `S` | Configure port `V` | Paste `C` | Copy +`F` | Find +`K` | Clear Scrollback +`A` | Select All +`B` | Send Break `B` | Send break F5 | Open Port F6 | Close Port @@ -67,6 +71,13 @@ Then build and install as usual. +## Uninstallation +To uninstall GTKTerm, run: + + ninja -C build uninstall + +If you already deleted the `build` directory, just compile and install GTKTerm again as explained in the [previous section](#installation) with the same target location prefix (`-Dprefix`) and perform the uninstall step afterwards. + ## License Original Code by: Julien Schmitt diff -Nru gtkterm-1.1.1/src/gtkterm.c gtkterm-1.2.1/src/gtkterm.c --- gtkterm-1.1.1/src/gtkterm.c 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/gtkterm.c 2022-07-06 14:08:03.000000000 +0000 @@ -38,8 +38,7 @@ { gchar *message; - config_file = g_strdup_printf("%s/.gtktermrc", getenv("HOME")); - + config_file_init(); bindtextdomain(PACKAGE, LOCALEDIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); textdomain(PACKAGE); diff -Nru gtkterm-1.1.1/src/interface.c gtkterm-1.2.1/src/interface.c --- gtkterm-1.1.1/src/interface.c 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/interface.c 2022-07-06 14:08:03.000000000 +0000 @@ -70,6 +70,7 @@ #include "term_config.h" #include "files.h" +#include "search.h" #include "serial.h" #include "interface.h" #include "buffer.h" @@ -87,10 +88,7 @@ GtkWidget *StatusBar; GtkWidget *signals[6]; static GtkWidget *Hex_Box; -static GtkWidget *log_pause_resume_menu = NULL; -static GtkWidget *log_start_menu = NULL; -static GtkWidget *log_stop_menu = NULL; -static GtkWidget *log_clear_menu = NULL; +GtkWidget *searchBar; GtkWidget *scrolled_window; GtkWidget *Fenetre; GtkWidget *popup_menu; @@ -136,6 +134,7 @@ void edit_copy_callback(GtkAction *action, gpointer data); void update_copy_sensivity(VteTerminal *terminal, gpointer data); void edit_paste_callback(GtkAction *action, gpointer data); +void edit_find_callback(GtkAction *action); void edit_select_all_callback(GtkAction *action, gpointer data); /* Menu */ @@ -161,6 +160,7 @@ /* Edit menu */ {"EditCopy", GTK_STOCK_COPY, NULL, "C", NULL, G_CALLBACK(edit_copy_callback)}, {"EditPaste", GTK_STOCK_PASTE, NULL, "V", NULL, G_CALLBACK(edit_paste_callback)}, + {"EditFind", GTK_STOCK_FIND, NULL, "F", NULL, G_CALLBACK(edit_find_callback)}, {"EditSelectAll", GTK_STOCK_SELECT_ALL, NULL, "A", NULL, G_CALLBACK(edit_select_all_callback)}, /* Log Menu */ @@ -229,6 +229,7 @@ " " " " " " + " " " " " " " " @@ -278,6 +279,7 @@ " " " " " " + " " " " " " " " @@ -532,6 +534,9 @@ clear_display(); + searchBar = search_bar_new(GTK_WINDOW(Fenetre), VTE_TERMINAL(display)); + gtk_box_pack_start(GTK_BOX(main_vbox), GTK_WIDGET(searchBar), FALSE, FALSE, 0); + /* make vte window scrollable - inspired by gnome-terminal package */ scrolled_window = gtk_scrolled_window_new(NULL, gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (display))); @@ -607,6 +612,7 @@ gtk_window_set_default_size(GTK_WINDOW(Fenetre), 750, 550); gtk_widget_show_all(Fenetre); + search_bar_hide(searchBar); gtk_widget_hide(GTK_WIDGET(Hex_Box)); } @@ -621,7 +627,6 @@ { static gchar data[128]; static gchar data_byte[6]; - static gchar buffer[128]; gint i = 0; if(size == 0) @@ -957,6 +962,14 @@ vte_terminal_paste_clipboard(VTE_TERMINAL(display)); } +void edit_find_callback(GtkAction *action) +{ + if (gtk_widget_is_visible(searchBar)) + search_bar_hide(searchBar); + else + search_bar_show(searchBar); +} + void edit_select_all_callback(GtkAction *action, gpointer data) { vte_terminal_select_all(VTE_TERMINAL(display)); diff -Nru gtkterm-1.1.1/src/interface.h gtkterm-1.2.1/src/interface.h --- gtkterm-1.1.1/src/interface.h 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/interface.h 2022-07-06 14:08:03.000000000 +0000 @@ -29,6 +29,8 @@ void show_message(gchar *, gint); void clear_display(void); void set_view(guint); +void Set_crlfauto(gboolean crlfauto); +void Set_timestamp(gboolean timestamp); gint send_serial(gchar *, gint); void Put_temp_message(const gchar *, gint); void Set_window_title(gchar *msg); diff -Nru gtkterm-1.1.1/src/meson.build gtkterm-1.2.1/src/meson.build --- gtkterm-1.1.1/src/meson.build 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/meson.build 2022-07-06 14:08:03.000000000 +0000 @@ -18,6 +18,8 @@ 'macros.h', 'parsecfg.c', 'parsecfg.h', + 'search.c', + 'search.h', 'serial.c', 'serial.h', 'term_config.c', diff -Nru gtkterm-1.1.1/src/search.c gtkterm-1.2.1/src/search.c --- gtkterm-1.1.1/src/search.c 1970-01-01 00:00:00.000000000 +0000 +++ gtkterm-1.2.1/src/search.c 2022-07-06 14:08:03.000000000 +0000 @@ -0,0 +1,190 @@ +/***********************************************************************/ +/* search.c */ +/* -------- */ +/* GTKTerm Software */ +/* (c) Julien Schmitt */ +/* */ +/* ------------------------------------------------------------------- */ +/* */ +/* Purpose */ +/* Search text from the VTE */ +/* Written by Tomi Lähteenmäki - lihis@lihis.net */ +/* */ +/***********************************************************************/ + +#include "search.h" +#include + +#define PCRE2_CODE_UNIT_WIDTH 0 +#include + +static GtkWindow *parentWindow; +static VteTerminal *term; +static GtkWidget *box; +static GtkWidget *searchBar; +static GtkWidget *prevImage; +static GtkWidget *prevButton; +static GtkWidget *nextImage; +static GtkWidget *nextButton; +static VteRegex *regex; +static GtkWidget *entry; + +typedef enum +{ + FIND_PREVIOUS, + FIND_NEXT +} FindDirection; + +void entry_changed_callback() +{ + gboolean sensitive = FALSE; + + if (regex != NULL) + { + vte_regex_unref(regex); + regex = NULL; + } + + if (gtk_entry_get_text_length(GTK_ENTRY(entry))) + sensitive = TRUE; + + gtk_widget_set_sensitive(prevButton, sensitive); + gtk_widget_set_sensitive(nextButton, sensitive); +} + +void search_callback(GtkWidget *widget, gpointer data) +{ + (void)widget; + FindDirection direction = (FindDirection)GPOINTER_TO_UINT(data); + + if (regex == NULL) + { + const gchar *pattern = gtk_entry_get_text(GTK_ENTRY(entry)); + GError *error = NULL; + regex = vte_regex_new_for_search(pattern, + strlen(pattern), + PCRE2_MULTILINE | PCRE2_CASELESS, + &error); + if (regex == NULL) + { + GtkDialogFlags flags = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT; + GtkWidget *dialog = gtk_message_dialog_new(parentWindow, + flags, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + error->message, + NULL); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + g_error_free(error); + return; + } + + vte_terminal_search_set_regex(term, regex, 0); + } + + if (direction == FIND_PREVIOUS) + vte_terminal_search_find_previous(term); + else + vte_terminal_search_find_next(term); +} + +static gboolean entry_key_press_event_callback(GtkEntry *entry, GdkEventKey *event, GtkWidget *searchBar) +{ + guint mask = gtk_accelerator_get_default_mod_mask(); + gboolean handled = FALSE; + + /* + * Additional search keybindings + * Escape key: Close search toolbar + * Shift + Enter: Go to previous search result + */ + if ((event->state & mask) == 0) + { + handled = TRUE; + switch (event->keyval) + { + case GDK_KEY_Escape: + search_bar_hide(searchBar); + break; + default: + handled = FALSE; + break; + } + } + else if ((event->state & mask) == GDK_SHIFT_MASK && + (event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_KP_Enter || + event->keyval == GDK_KEY_ISO_Enter)) + { + handled = TRUE; + search_callback(NULL, GUINT_TO_POINTER(FIND_PREVIOUS)); + } + + return handled; +} + +GtkWidget *search_bar_new(GtkWindow *parent, VteTerminal *terminal) +{ + parentWindow = parent; + term = terminal; + regex = NULL; + vte_terminal_search_set_wrap_around(term, TRUE); + + searchBar = gtk_search_bar_new(); + gtk_search_bar_connect_entry(GTK_SEARCH_BAR(searchBar), GTK_ENTRY(entry)); + gtk_search_bar_set_search_mode(GTK_SEARCH_BAR(searchBar), FALSE); + gtk_search_bar_set_show_close_button(GTK_SEARCH_BAR(searchBar), TRUE); + + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_style_context_add_class(gtk_widget_get_style_context(box), "linked"); + gtk_container_add(GTK_CONTAINER(searchBar), box); + + entry = gtk_search_entry_new(); + gtk_entry_set_width_chars(GTK_ENTRY(entry), 30); + gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0); + g_signal_connect(entry, "changed", G_CALLBACK(entry_changed_callback), NULL); + g_signal_connect(entry, "key-press-event", G_CALLBACK(entry_key_press_event_callback), searchBar); + + prevImage = gtk_image_new_from_icon_name("go-up-symbolic", GTK_ICON_SIZE_MENU); + prevButton = gtk_button_new(); + gtk_button_set_image(GTK_BUTTON(prevButton), prevImage); + gtk_box_pack_start(GTK_BOX(box), prevButton, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(prevButton), "clicked", G_CALLBACK(search_callback), GUINT_TO_POINTER(FIND_PREVIOUS)); + gtk_widget_set_sensitive(prevButton, FALSE); + + nextImage = gtk_image_new_from_icon_name("go-down-symbolic", GTK_ICON_SIZE_MENU); + nextButton = gtk_button_new(); + gtk_button_set_image(GTK_BUTTON(nextButton), nextImage); + gtk_box_pack_start(GTK_BOX(box), nextButton, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(nextButton), "clicked", G_CALLBACK(search_callback), GUINT_TO_POINTER(FIND_NEXT)); + gtk_widget_set_sensitive(nextButton, FALSE); + + return searchBar; +} + +void search_bar_show(GtkWidget *self) +{ + gtk_widget_show(self); + gtk_search_bar_set_search_mode(GTK_SEARCH_BAR(searchBar), TRUE); + + gtk_widget_grab_focus(entry); + + /* Set Enter key to "press" next button by default */ + gtk_widget_set_can_default(nextButton, TRUE); + gtk_widget_grab_default(nextButton); + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); +} + +void search_bar_hide(GtkWidget *self) +{ + gtk_widget_hide(self); + vte_terminal_search_set_regex(term, NULL, 0); + gtk_search_bar_set_search_mode(GTK_SEARCH_BAR(searchBar), FALSE); + + if (regex != NULL) + { + vte_regex_unref(regex); + regex = NULL; + } +} diff -Nru gtkterm-1.1.1/src/search.h gtkterm-1.2.1/src/search.h --- gtkterm-1.1.1/src/search.h 1970-01-01 00:00:00.000000000 +0000 +++ gtkterm-1.2.1/src/search.h 2022-07-06 14:08:03.000000000 +0000 @@ -0,0 +1,24 @@ +/***********************************************************************/ +/* search.h */ +/* --------- */ +/* GTKTerm Software */ +/* (c) Julien Schmitt */ +/* */ +/* ------------------------------------------------------------------- */ +/* */ +/* Purpose */ +/* Search text from the VTE */ +/* Written by Tomi Lähteenmäki - lihis@lihis.net */ +/* */ +/***********************************************************************/ + +#ifndef FIND_H +#define FIND_H + +#include + +GtkWidget *search_bar_new(GtkWindow *parent, VteTerminal *terminal); +void search_bar_show(GtkWidget *search_box); +void search_bar_hide(GtkWidget *search_box); + +#endif diff -Nru gtkterm-1.1.1/src/serial.c gtkterm-1.2.1/src/serial.c --- gtkterm-1.1.1/src/serial.c 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/serial.c 2022-07-06 14:08:03.000000000 +0000 @@ -222,6 +222,9 @@ case 1000000: termios_p.c_cflag = B1000000; break; + case 1500000: + termios_p.c_cflag = B1500000; + break; case 2000000: termios_p.c_cflag = B2000000; break; diff -Nru gtkterm-1.1.1/src/term_config.c gtkterm-1.2.1/src/term_config.c --- gtkterm-1.1.1/src/term_config.c 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/term_config.c 2022-07-06 14:08:03.000000000 +0000 @@ -52,6 +52,7 @@ #define DEVICE_NUMBERS_TO_CHECK 12 +#define CONFIGURATION_FILENAME ".gtktermrc" gchar *devices_to_check[] = { @@ -129,7 +130,7 @@ {NULL, CFG_END, NULL} }; -gchar *config_file; +GFile *config_file; struct configuration_port config; display_config_t term_conf; @@ -156,6 +157,22 @@ extern GtkWidget *display; +void config_file_init(void) +{ + /* + * Old location of configuration file was $HOME/.gtktermrc + * New location is $XDG_CONFIG_HOME/.gtktermrc + * + * If configuration file exists at new location, use that one. + * Otherwise, if file exists at old location, move file to new location. + */ + GFile *config_file_old = g_file_new_build_filename(getenv("HOME"), CONFIGURATION_FILENAME, NULL); + config_file = g_file_new_build_filename(g_get_user_config_dir(), CONFIGURATION_FILENAME, NULL); + + if (!g_file_query_exists(config_file, NULL) && g_file_query_exists(config_file_old, NULL)) + g_file_move(config_file_old, config_file, G_FILE_COPY_NONE, NULL, NULL, NULL, NULL); +} + void ConfigFlags(void) { Set_crlfauto(config.crlfauto); @@ -269,6 +286,7 @@ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(Combo), "576000"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(Combo), "921600"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(Combo), "1000000"); + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(Combo), "1500000"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(Combo), "2000000"); /* set the current choice to the previous setting */ @@ -482,11 +500,11 @@ Combos[9] = Spin; - Bouton_OK = gtk_button_new_from_stock(GTK_STOCK_OK); + Bouton_OK = gtk_button_new_with_label(_("OK")); gtk_box_pack_start(GTK_BOX(action_area), Bouton_OK, FALSE, TRUE, 0); g_signal_connect(GTK_WIDGET(Bouton_OK), "clicked", G_CALLBACK(Lis_Config), (gpointer)Combos); g_signal_connect_swapped(GTK_WIDGET(Bouton_OK), "clicked", G_CALLBACK(gtk_widget_destroy), GTK_WIDGET(Dialogue)); - Bouton_annule = gtk_button_new_from_stock(GTK_STOCK_CANCEL); + Bouton_annule = gtk_button_new_with_label(_("Cancel")); g_signal_connect_swapped(GTK_WIDGET(Bouton_annule), "clicked", G_CALLBACK(gtk_widget_destroy), GTK_WIDGET(Dialogue)); gtk_box_pack_start(GTK_BOX(action_area), Bouton_annule, FALSE, TRUE, 0); @@ -580,7 +598,7 @@ void read_font_button(GtkFontButton *fontButton) { g_free(term_conf.font); - term_conf.font = g_strdup(gtk_font_button_get_font_name(fontButton)); + term_conf.font = g_strdup(gtk_font_chooser_get_font(GTK_FONT_CHOOSER(fontButton))); if(term_conf.font != NULL) vte_terminal_set_font(VTE_TERMINAL(display), pango_font_description_from_string(term_conf.font)); @@ -625,7 +643,7 @@ /* Parse the config file */ - max = cfgParse(config_file, cfg, CFG_INI); + max = cfgParse(g_file_get_path(config_file), cfg, CFG_INI); if(max == -1) { @@ -640,9 +658,9 @@ dialog = gtk_dialog_new_with_buttons (title, NULL, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, + "_Cancel", GTK_RESPONSE_NONE, - GTK_STOCK_OK, + "_OK", GTK_RESPONSE_ACCEPT, NULL); @@ -705,9 +723,9 @@ dialog = gtk_dialog_new_with_buttons (_("Save configuration"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, + "_Cancel", GTK_RESPONSE_NONE, - GTK_STOCK_OK, + "_OK", GTK_RESPONSE_ACCEPT, NULL); content_area = gtk_dialog_get_content_area (GTK_DIALOG(dialog)); @@ -744,7 +762,7 @@ if(id == GTK_RESPONSE_ACCEPT) { - max = cfgParse(config_file, cfg, CFG_INI); + max = cfgParse(g_file_get_path(config_file), cfg, CFG_INI); if(max == -1) { @@ -766,12 +784,12 @@ } else { - if(remove_section(config_file, (char *)data) == -1) + if(remove_section(g_file_get_path(config_file), (char *)data) == -1) { show_message(_("Cannot overwrite section!"), MSG_ERR); return; } - if(max == cfgParse(config_file, cfg, CFG_INI)) + if(max == cfgParse(g_file_get_path(config_file), cfg, CFG_INI)) { show_message(_("Cannot read configuration file!"), MSG_ERR); return; @@ -781,7 +799,7 @@ } Copy_configuration(cfg_num); - cfgDump(config_file, cfg, CFG_INI, max); + cfgDump(g_file_get_path(config_file), cfg, CFG_INI, max); string = g_strdup_printf(_("Configuration [%s] saved\n"), (char *)data); show_message(string, MSG_WRN); @@ -798,7 +816,7 @@ if(id == GTK_RESPONSE_ACCEPT) { - max = cfgParse(config_file, cfg, CFG_INI); + max = cfgParse(g_file_get_path(config_file), cfg, CFG_INI); if(max == -1) { @@ -821,9 +839,9 @@ config_name); gtk_dialog_add_buttons(GTK_DIALOG(message_dialog), - GTK_STOCK_CANCEL, + "_Cancel", GTK_RESPONSE_NONE, - GTK_STOCK_YES, + "_Yes", GTK_RESPONSE_ACCEPT, NULL); @@ -876,7 +894,7 @@ if(gtk_tree_selection_get_selected(Selection_Liste, &Modele, &iter)) { gtk_tree_model_get(GTK_TREE_MODEL(Modele), &iter, 0, (gint *)&txt, -1); - if(remove_section(config_file, txt) == -1) + if(remove_section(g_file_get_path(config_file), txt) == -1) show_message(_("Cannot delete section!"), MSG_ERR); } } @@ -890,7 +908,7 @@ macro_t *macros = NULL; cfgList *t; - max = cfgParse(config_file, cfg, CFG_INI); + max = cfgParse(g_file_get_path(config_file), cfg, CFG_INI); if(max == -1) { @@ -1143,7 +1161,7 @@ gchar *string = NULL; /* is configuration file present ? */ - if(stat(config_file, &my_stat) == 0) + if(stat(g_file_get_path(config_file), &my_stat) == 0) { /* If bad configuration file, fallback to _hardcoded_ defaults! */ if(Load_configuration_from_file("default") == -1) @@ -1156,12 +1174,12 @@ /* if not, create it, with the [default] section */ else { - string = g_strdup_printf(_("Configuration file (%s) with\n[default] configuration has been created.\n"), config_file); + string = g_strdup_printf(_("Configuration file (%s) with\n[default] configuration has been created.\n"), g_file_get_path(config_file)); show_message(string, MSG_WRN); cfgAllocForNewSection(cfg, "default"); Hard_default_configuration(); Copy_configuration(0); - cfgDump(config_file, cfg, CFG_INI, 1); + cfgDump(g_file_get_path(config_file), cfg, CFG_INI, 1); g_free(string); } return 0; @@ -1451,7 +1469,7 @@ GtkWidget *dialog; dialog = GTK_WIDGET(gtk_builder_get_object(builder, "dialog")); - gtk_window_set_transient_for(dialog, Fenetre); + gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(Fenetre)); gtk_window_set_title(GTK_WINDOW(dialog), _("Main Window")); /** Connect signals **/ @@ -1475,13 +1493,13 @@ // Text color GtkWidget *cfg_text_color; cfg_text_color = GTK_WIDGET(gtk_builder_get_object(builder, "cfg_text_color")); - gtk_color_button_set_rgba(GTK_COLOR_BUTTON(cfg_text_color), &term_conf.foreground_color); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(cfg_text_color), &term_conf.foreground_color); g_signal_connect(cfg_text_color, "color-set", G_CALLBACK (config_fg_color), 0); // Background color GtkWidget *cfg_background_color; cfg_background_color = GTK_WIDGET(gtk_builder_get_object(builder, "cfg_background_color")); - gtk_color_button_set_rgba(GTK_COLOR_BUTTON(cfg_background_color), &term_conf.background_color); + gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(cfg_background_color), &term_conf.background_color); g_signal_connect(cfg_background_color, "color-set", G_CALLBACK (config_bg_color), 0); // Close button @@ -1511,21 +1529,21 @@ { gchar *string; - gtk_color_button_get_rgba (GTK_COLOR_BUTTON (button), &term_conf.foreground_color); + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(button), &term_conf.foreground_color); vte_terminal_set_color_foreground (VTE_TERMINAL(display), &term_conf.foreground_color); gtk_widget_queue_draw (display); - string = g_strdup_printf ("%d", term_conf.foreground_color.red); + string = g_strdup_printf ("%d", (gint)term_conf.foreground_color.red); cfgStoreValue (cfg, "term_foreground_red", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.foreground_color.green); + string = g_strdup_printf ("%d", (gint)term_conf.foreground_color.green); cfgStoreValue (cfg, "term_foreground_green", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.foreground_color.blue); + string = g_strdup_printf ("%d", (gint)term_conf.foreground_color.blue); cfgStoreValue (cfg, "term_foreground_blue", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.foreground_color.alpha); + string = g_strdup_printf ("%d", (gint)term_conf.foreground_color.alpha); cfgStoreValue (cfg, "term_foreground_alpha", string, CFG_INI, 0); g_free (string); } @@ -1534,21 +1552,21 @@ { gchar *string; - gtk_color_button_get_rgba (GTK_COLOR_BUTTON (button), &term_conf.background_color); + gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(button), &term_conf.background_color); vte_terminal_set_color_background (VTE_TERMINAL(display), &term_conf.background_color); gtk_widget_queue_draw (display); - string = g_strdup_printf ("%d", term_conf.background_color.red); + string = g_strdup_printf ("%d", (gint)term_conf.background_color.red); cfgStoreValue (cfg, "term_background_red", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.background_color.green); + string = g_strdup_printf ("%d", (gint)term_conf.background_color.green); cfgStoreValue (cfg, "term_background_green", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.background_color.blue); + string = g_strdup_printf ("%d", (gint)term_conf.background_color.blue); cfgStoreValue (cfg, "term_background_blue", string, CFG_INI, 0); g_free (string); - string = g_strdup_printf ("%d", term_conf.background_color.alpha); + string = g_strdup_printf ("%d", (gint)term_conf.background_color.alpha); cfgStoreValue (cfg, "term_background_alpha", string, CFG_INI, 0); g_free (string); } diff -Nru gtkterm-1.1.1/src/term_config.h gtkterm-1.2.1/src/term_config.h --- gtkterm-1.1.1/src/term_config.h 2020-12-03 13:51:55.000000000 +0000 +++ gtkterm-1.2.1/src/term_config.h 2022-07-06 14:08:03.000000000 +0000 @@ -15,6 +15,7 @@ #ifndef TERM_CONFIG_H_ #define TERM_CONFIG_H_ +void config_file_init(void); void ConfigFlags(void); void Config_Port_Fenetre(GtkAction *action, gpointer data); gint Lis_Config(GtkWidget *bouton, GtkWidget **Combos); @@ -43,7 +44,7 @@ gint delai; // end of char delay: in ms gint rs485_rts_time_before_transmit; gint rs485_rts_time_after_transmit; - gchar car; // caractere à attendre + gchar car; // caractere attendre gboolean echo; // echo local gboolean crlfauto; // line feed auto gboolean timestamp; @@ -77,6 +78,4 @@ #define DEFAULT_DELAY_RS485 30 #define DEFAULT_ECHO FALSE -extern gchar *config_file; - #endif