From f87a1b5dd0e6fd7e741cb8abf14d0b15b7c5949e Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Sun, 19 May 2024 17:24:12 +0100 Subject: [PATCH] wmclockmon: build against GTK+ 2.0. Link: https://bugs.debian.org/437442 Link: https://bugs.debian.org/641335 Co-developed-by: Doug Torrance --- wmclockmon/configure.ac | 1 + wmclockmon/wmclockmon-cal/Makefile.am | 3 ++ wmclockmon/wmclockmon-cal/mainwindow.c | 59 +++++++++++++++---------------- wmclockmon/wmclockmon-config/Makefile.am | 3 ++ wmclockmon/wmclockmon-config/dialogs.c | 2 -- wmclockmon/wmclockmon-config/edit.c | 1 - wmclockmon/wmclockmon-config/mainwindow.c | 25 +++++++------ 7 files changed, 48 insertions(+), 46 deletions(-) diff --git a/wmclockmon/configure.ac b/wmclockmon/configure.ac index 06a5760..e7de2d8 100644 --- a/wmclockmon/configure.ac +++ b/wmclockmon/configure.ac @@ -28,6 +28,7 @@ AC_ARG_WITH(incs-from, [ --with-incs-from pass compiler flags to look for header files], [inc_search_path="$withval $inc_search_path"]) +PKG_CHECK_MODULES([gtk], [gtk+-2.0]) dnl =========================================== dnl Stuff that uses X diff --git a/wmclockmon/wmclockmon-cal/Makefile.am b/wmclockmon/wmclockmon-cal/Makefile.am index 6f20aae..17ab29c 100644 --- a/wmclockmon/wmclockmon-cal/Makefile.am +++ b/wmclockmon/wmclockmon-cal/Makefile.am @@ -11,6 +11,9 @@ wmclockmon_cal_SOURCES = \ CPPFLAGS = @CPPFLAGS@ @DFLAGS@ +AM_CFLAGS = $(gtk_CFLAGS) +LIBS += $(gtk_LIBS) + INCLUDES = @HEADER_SEARCH_PATH@ wmclockmon_LDADD = @LIBRARY_SEARCH_PATH@ @XLIBS@ diff --git a/wmclockmon/wmclockmon-cal/mainwindow.c b/wmclockmon/wmclockmon-cal/mainwindow.c index b815d85..2ae1e59 100644 --- a/wmclockmon/wmclockmon-cal/mainwindow.c +++ b/wmclockmon/wmclockmon-cal/mainwindow.c @@ -51,7 +51,6 @@ static void show_editor() { gtk_widget_hide(calendar); gtk_widget_hide(closewindow); gtk_widget_grab_default(GTK_WIDGET(cancel)); - gtk_widget_draw_default(GTK_WIDGET(cancel)); gtk_widget_grab_focus(GTK_WIDGET(edit)); gtk_widget_show(text_buttons); gtk_widget_show(edit); @@ -69,7 +68,6 @@ static void hide_editor() { gtk_widget_hide(cancel); gtk_widget_show(calendar); gtk_widget_grab_default(GTK_WIDGET(closewindow)); - gtk_widget_draw_default(GTK_WIDGET(closewindow)); gtk_widget_grab_focus(GTK_WIDGET(closewindow)); gtk_widget_show(closewindow); } @@ -93,13 +91,20 @@ static void load_file(const char *datestr) { FILE *file; char *filename = get_file(datestr); + GtkTextIter iter; + GtkTextBuffer *buf; + + buf = GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))); + gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &iter); + gtk_text_buffer_place_cursor(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &iter); + if ((file = fopen(filename, "r")) != NULL) { while (! feof(file)) { char line[MAXSTRLEN + 1]; bzero(line, MAXSTRLEN + 1); fgets(line, MAXSTRLEN, file); if (line[0] != 0) - gtk_text_insert(GTK_TEXT(edit), NULL, NULL, NULL, line, -1); + gtk_text_buffer_insert(buf, &iter, line, -1); } fclose(file); } @@ -154,21 +159,14 @@ static void set_buttons_text() { static void editor_flush() { - int cont = TRUE; - - while (cont) { - cont = gtk_text_backward_delete(GTK_TEXT(edit), 1); - } - cont = TRUE; - while (cont) { - cont = gtk_text_forward_delete(GTK_TEXT(edit), 1); - } + gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), "", 0); } static void editor_fill(int which) { char *filename, *dstr; GtkWidget *label; + GtkTextIter iter; switch (which) { case UNIQUE: label = label_u; break; @@ -179,11 +177,10 @@ static void editor_fill(int which) { gtk_label_get(GTK_LABEL(label), &dstr); strcpy(daystr, dstr); to_button(which); - gtk_text_freeze(GTK_TEXT(edit)); editor_flush(); load_file(daystr); - gtk_text_set_point(GTK_TEXT(edit), gtk_text_get_length(GTK_TEXT(edit))); - gtk_text_thaw(GTK_TEXT(edit)); + gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &iter); + gtk_text_buffer_place_cursor(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &iter); } @@ -225,8 +222,15 @@ static void save_datas() { char *dirname = xmalloc(len + 2); struct stat stat_buf; + GtkTextIter ts, te; + gchar *tbuf; + int tlen; + + tlen = gtk_text_buffer_get_char_count(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit)))); + gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &ts, &te); + sprintf(dirname, "%s/%s", robust_home(), DEFAULT_CONFIGDIR); - if (gtk_text_get_length(GTK_TEXT(edit)) > 0) { + if (tlen > 0) { if (! ((stat(dirname, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode))) mkdir(dirname, 0755); @@ -235,13 +239,11 @@ static void save_datas() { int year, month, day; if (file) { - int i; - for (i = 0 ; i < gtk_text_get_length(GTK_TEXT(edit)) ; i++) { - char t = GTK_TEXT_INDEX(GTK_TEXT(edit), i); - fprintf(file, "%c", t); - } - fflush(file); - fclose(file); + tbuf = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(edit))), &ts, &te, TRUE); + fprintf(file, "%s", tbuf); + g_free(tbuf); + fflush(file); + fclose(file); } gtk_calendar_get_date(GTK_CALENDAR(calendar), &year, &month, &day); gtk_calendar_mark_day(GTK_CALENDAR(calendar), day); @@ -259,9 +261,7 @@ static void delete_file() { gtk_calendar_get_date(GTK_CALENDAR(calendar), &year, &month, &day); gtk_calendar_unmark_day(GTK_CALENDAR(calendar), day); FREE(filename); - gtk_text_freeze(GTK_TEXT(edit)); editor_flush(); - gtk_text_thaw(GTK_TEXT(edit)); } @@ -357,10 +357,10 @@ void create_mainwindow() { GTK_SIGNAL_FUNC(mark_days), NULL); gtk_widget_show(calendar); - edit = gtk_text_new(NULL, NULL); - gtk_text_set_editable(GTK_TEXT(edit), TRUE); - gtk_text_set_word_wrap(GTK_TEXT(edit), TRUE); - gtk_text_set_line_wrap(GTK_TEXT(edit), TRUE); + edit = gtk_text_view_new(); + gtk_text_view_set_editable(GTK_TEXT_VIEW(edit), TRUE); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(edit), GTK_WRAP_WORD_CHAR); + gtk_box_pack_start(GTK_BOX(main_vbox), edit, TRUE, TRUE, 1); @@ -413,7 +413,6 @@ void create_mainwindow() { gtk_box_pack_start(GTK_BOX(buttons_hbox), closewindow, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS(GTK_WIDGET(closewindow), GTK_CAN_DEFAULT); gtk_widget_grab_default(GTK_WIDGET(closewindow)); - gtk_widget_draw_default(GTK_WIDGET(closewindow)); gtk_widget_show(closewindow); diff --git a/wmclockmon/wmclockmon-config/Makefile.am b/wmclockmon/wmclockmon-config/Makefile.am index 08ec3ca..73c1140 100644 --- a/wmclockmon/wmclockmon-config/Makefile.am +++ b/wmclockmon/wmclockmon-config/Makefile.am @@ -18,6 +18,9 @@ wmclockmon_config_SOURCES = \ CPPFLAGS = @CPPFLAGS@ @DFLAGS@ +AM_CFLAGS = $(gtk_CFLAGS) +LIBS += $(gtk_LIBS) + INCLUDES = @HEADER_SEARCH_PATH@ wmclockmon_LDADD = @LIBRARY_SEARCH_PATH@ @XLIBS@ diff --git a/wmclockmon/wmclockmon-config/dialogs.c b/wmclockmon/wmclockmon-config/dialogs.c index d497ed1..978dbe9 100644 --- a/wmclockmon/wmclockmon-config/dialogs.c +++ b/wmclockmon/wmclockmon-config/dialogs.c @@ -38,7 +38,6 @@ void ync_dialog(const char *title, const char *text, void *f_yes, void *f_no) { bouton, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT); gtk_widget_grab_default(GTK_WIDGET(bouton)); - gtk_widget_draw_default(GTK_WIDGET(bouton)); gtk_widget_show(bouton); bouton = gtk_button_new_with_label("No"); @@ -96,7 +95,6 @@ void ok_dialog(const char *title, const char *text) { bouton, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT); gtk_widget_grab_default(GTK_WIDGET(bouton)); - gtk_widget_draw_default(GTK_WIDGET(bouton)); gtk_widget_show(bouton); gtk_container_set_border_width(GTK_CONTAINER diff --git a/wmclockmon/wmclockmon-config/edit.c b/wmclockmon/wmclockmon-config/edit.c index f9800c1..bfb03a9 100644 --- a/wmclockmon/wmclockmon-config/edit.c +++ b/wmclockmon/wmclockmon-config/edit.c @@ -76,7 +76,6 @@ void edit_dialog(const char *title, bouton, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT); gtk_widget_grab_default(GTK_WIDGET(bouton)); - gtk_widget_draw_default(GTK_WIDGET(bouton)); gtk_widget_show(bouton); bouton = gtk_button_new_with_label("Cancel"); diff --git a/wmclockmon/wmclockmon-config/mainwindow.c b/wmclockmon/wmclockmon-config/mainwindow.c index afed4db..26a2f97 100644 --- a/wmclockmon/wmclockmon-config/mainwindow.c +++ b/wmclockmon/wmclockmon-config/mainwindow.c @@ -10,9 +10,9 @@ #include "actions.h" -static GtkWidget *edit; -static GtkWidget *set; -static GtkWidget *remove; +static GtkWidget *b_edit; +static GtkWidget *b_set; +static GtkWidget *b_remove; static gint list_sel_cb (GtkCList *clist, gint row, @@ -20,9 +20,9 @@ static gint list_sel_cb (GtkCList *clist, GdkEventButton *event, void *data) { selected_row = row; - gtk_widget_set_sensitive(edit, TRUE); - gtk_widget_set_sensitive(set, TRUE); - gtk_widget_set_sensitive(remove, TRUE); + gtk_widget_set_sensitive(b_edit, TRUE); + gtk_widget_set_sensitive(b_set, TRUE); + gtk_widget_set_sensitive(b_remove, TRUE); return TRUE; } @@ -33,9 +33,9 @@ gint list_unsel_cb (GtkCList *clist, GdkEventButton *event, void *data) { selected_row = -1; - gtk_widget_set_sensitive(edit, FALSE); - gtk_widget_set_sensitive(set, FALSE); - gtk_widget_set_sensitive(remove, FALSE); + gtk_widget_set_sensitive(b_edit, FALSE); + gtk_widget_set_sensitive(b_set, FALSE); + gtk_widget_set_sensitive(b_remove, FALSE); return TRUE; } @@ -267,7 +267,7 @@ void create_mainwindow() { gtk_table_attach_defaults(GTK_TABLE(table), bouton, 0, 1, 1, 2); gtk_widget_set_sensitive(bouton, FALSE); gtk_widget_show(bouton); - edit = bouton; + b_edit = bouton; bouton = gtk_button_new_with_label(" Switch On/Off "); gtk_signal_connect(GTK_OBJECT(bouton), "clicked", @@ -275,7 +275,7 @@ void create_mainwindow() { gtk_table_attach_defaults(GTK_TABLE(table), bouton, 1, 2, 1, 2); gtk_widget_set_sensitive(bouton, FALSE); gtk_widget_show(bouton); - set = bouton; + b_set = bouton; bouton = gtk_button_new_with_label(" Remove alarm "); gtk_signal_connect(GTK_OBJECT(bouton), "clicked", @@ -283,7 +283,7 @@ void create_mainwindow() { gtk_table_attach_defaults(GTK_TABLE(table), bouton, 1, 2, 0, 1); gtk_widget_set_sensitive(bouton, FALSE); gtk_widget_show(bouton); - remove = bouton; + b_remove = bouton; label = gtk_label_new(" Alarms "); @@ -312,7 +312,6 @@ void create_mainwindow() { gtk_box_pack_start(GTK_BOX(buttons_hbox), bouton, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT); gtk_widget_grab_default(GTK_WIDGET(bouton)); - gtk_widget_draw_default(GTK_WIDGET(bouton)); gtk_widget_show(bouton); bouton = gtk_button_new_with_label(" Cancel "); -- 2.11.4.GIT