diff --git a/src/sbbs3/gtkmonitor/events.c b/src/sbbs3/gtkmonitor/events.c index 2b622071c4f275a1d6a6053f0366366e4b103504..b7f3180a88e44944a10527b60d2d805fa4ffbf3f 100644 --- a/src/sbbs3/gtkmonitor/events.c +++ b/src/sbbs3/gtkmonitor/events.c @@ -7,6 +7,80 @@ #include "gtkmonitor.h" #include "util_funcs.h" +#include "datewrap.h" + +int got_date=0; + +void destroy_calendar_window(GtkWidget *t, gpointer data) +{ + if(!got_date) + gtk_main_quit(); +} + +void changed_day(GtkWidget *t, gpointer data) +{ + got_date=1; + gtk_main_quit(); +} + +int get_date(GtkWidget *t, isoDate_t *date) +{ + GladeXML *cxml; + GtkWidget *w; + GtkWidget *win; + GtkWidget *thiswin; + gint x,x_off; + gint y,y_off; + guint year; + guint month; + guint day; + isoDate_t odate=*date; + + got_date=0; + cxml = glade_xml_new(glade_path, "CalendarWindow", NULL); + if(cxml==NULL) { + fprintf(stderr,"Could not locate Calendar Window XML\n"); + return(-1); + } + /* connect the signals in the interface */ + glade_xml_signal_autoconnect(cxml); + win=glade_xml_get_widget(cxml, "CalendarWindow"); + if(win==NULL) { + fprintf(stderr,"Could not locate Calendar window\n"); + return(-1); + } + + thiswin = gtk_widget_get_toplevel(t); + if(thiswin==NULL) { + fprintf(stderr,"Could not locate main window\n"); + return(-1); + } + if(!(gtk_widget_translate_coordinates(GTK_WIDGET(t) + ,GTK_WIDGET(thiswin), 0, 0, &x_off, &y_off))) { + fprintf(stderr,"Could not get position of button in window"); + } + gtk_window_get_position(GTK_WINDOW(thiswin), &x, &y); + + gtk_window_move(GTK_WINDOW(win), x+x_off, y+y_off); + + w=glade_xml_get_widget(cxml, "Calendar"); + if(w==NULL) { + fprintf(stderr,"Could not locate Calendar widget\n"); + return(-1); + } + gtk_calendar_select_month(GTK_CALENDAR(w), isoDate_month(*date)-1, isoDate_year(*date)); + gtk_calendar_select_day(GTK_CALENDAR(w), isoDate_day(*date)); + gtk_window_present(GTK_WINDOW(win)); + /* Wait for window to close... */ + gtk_main(); + w=glade_xml_get_widget(cxml, "Calendar"); + if(w==NULL) + return(-1); + gtk_calendar_get_date(GTK_CALENDAR(w), &year, &month, &day); + gtk_widget_destroy(GTK_WIDGET(gtk_widget_get_toplevel(GTK_WIDGET(w)))); + *date=isoDate_create(year, month+1, day); + return(odate!=*date); +} void update_stats_callback(GtkWidget *wiggy, gpointer data) { @@ -192,7 +266,14 @@ void on_yesterdays_log1_activate(GtkWidget *wiggy, gpointer data) } void on_another_days_log1_activate(GtkWidget *wiggy, gpointer data) { - /* ToDo */ + isoDate_t date; + char fn[20]; + GtkWidget *w; + + date=time_to_isoDate(time(NULL)); + get_date(wiggy, &date); + sprintf(fn,"logs/%02d%02d%02d.log",isoDate_month(date),isoDate_day(date),isoDate_year(date)%100); + exec_cmdstr(gtkm_conf.view_text_file, cfg.logs_dir, fn); } void on_spam_log1_activate(GtkWidget *wiggy, gpointer data) diff --git a/src/sbbs3/gtkmonitor/gtkmonitor.glade b/src/sbbs3/gtkmonitor/gtkmonitor.glade index bafb9864975efdfafa625d3939b442773aed37a0..f259e71210489464de42740506aaa3c91ed039e7 100644 --- a/src/sbbs3/gtkmonitor/gtkmonitor.glade +++ b/src/sbbs3/gtkmonitor/gtkmonitor.glade @@ -3390,4 +3390,31 @@ Set9</property> </child> </widget> +<widget class="GtkWindow" id="CalendarWindow"> + <property name="title" translatable="yes">Calendar</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">True</property> + <property name="icon_name"></property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">True</property> + <property name="skip_pager_hint">True</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> + <signal name="destroy" handler="destroy_calendar_window" last_modification_time="Sun, 07 May 2006 04:15:11 GMT"/> + + <child> + <widget class="GtkCalendar" id="Calendar"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="display_options">GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES</property> + <signal name="day_selected_double_click" handler="changed_day" last_modification_time="Sun, 07 May 2006 02:26:35 GMT"/> + </widget> + </child> +</widget> + </glade-interface> diff --git a/src/sbbs3/gtkmonitor/gtkmonitor.gladep b/src/sbbs3/gtkmonitor/gtkmonitor.gladep deleted file mode 100644 index c8fe19d3af3cad252ceeb9e8453a2e848ae13871..0000000000000000000000000000000000000000 --- a/src/sbbs3/gtkmonitor/gtkmonitor.gladep +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> -<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd"> - -<glade-project> - <name>GTK Monitor</name> - <program_name>gtkmonitor</program_name> - <source_directory></source_directory> - <gnome_support>FALSE</gnome_support> - <gettext_support>FALSE</gettext_support> - <output_build_files>FALSE</output_build_files> -</glade-project>