[Xfce4-commits] r26125 - in xfcalendar/trunk: . src
Juha Kautto
juha at xfce.org
Mon Oct 1 23:18:33 CEST 2007
Author: juha
Date: 2007-10-01 21:18:33 +0000 (Mon, 01 Oct 2007)
New Revision: 26125
Added:
xfcalendar/trunk/src/day-view.c
xfcalendar/trunk/src/day-view.h
xfcalendar/trunk/src/orage-i18n.h
Modified:
xfcalendar/trunk/NEWS
xfcalendar/trunk/TODO
xfcalendar/trunk/configure.in.in
xfcalendar/trunk/src/Makefile.am
xfcalendar/trunk/src/about-xfcalendar.c
xfcalendar/trunk/src/appointment.c
xfcalendar/trunk/src/event-list.c
xfcalendar/trunk/src/event-list.h
xfcalendar/trunk/src/functions.c
xfcalendar/trunk/src/functions.h
xfcalendar/trunk/src/ical-code.c
xfcalendar/trunk/src/main.c
xfcalendar/trunk/src/mainbox.c
xfcalendar/trunk/src/parameters.c
xfcalendar/trunk/src/reminder.c
xfcalendar/trunk/src/tray_icon.c
xfcalendar/trunk/src/tray_icon.h
Log:
Orage 4.5.9.7
- New day view in addition to the original list view.
Makes it possible to see what is happening better than in list view.
- Fix for bug 3582: now it is possible to see 999 days in list view.
- memory leaks with tooltips fixed.
Modified: xfcalendar/trunk/NEWS
===================================================================
--- xfcalendar/trunk/NEWS 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/NEWS 2007-10-01 21:18:33 UTC (rev 26125)
@@ -1,3 +1,8 @@
+20071002:
+---------
+ * Orage version 4.5.9.7 released
+ * Day view added.
+
20070519:
---------
* Orage version 4.5.9.5 released
Modified: xfcalendar/trunk/TODO
===================================================================
--- xfcalendar/trunk/TODO 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/TODO 2007-10-01 21:18:33 UTC (rev 26125)
@@ -40,8 +40,10 @@
*** DONE 4.5 ***
10) more alarm possibilities (like libnotify BUG 2831 and email)
+*** DONE 4.5 ***
11) Day, Week, Month view
+*** DONE 4.5 for day and week view ***
12) Exclude possiblity in repeating rule
Modified: xfcalendar/trunk/configure.in.in
===================================================================
--- xfcalendar/trunk/configure.in.in 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/configure.in.in 2007-10-01 21:18:33 UTC (rev 26125)
@@ -9,7 +9,7 @@
dnl
dnl Version information
-m4_define([orage_version], [4.5.9.6-svn])
+m4_define([orage_version], [4.5.9.7-svn])
m4_define([gtk_minimum_version], [2.6.0])
m4_define([xfce_minimum_version], [4.4.0])
Modified: xfcalendar/trunk/src/Makefile.am
===================================================================
--- xfcalendar/trunk/src/Makefile.am 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/Makefile.am 2007-10-01 21:18:33 UTC (rev 26125)
@@ -6,6 +6,8 @@
about-xfcalendar.h \
appointment.c \
appointment.h \
+ day-view.c \
+ day-view.h \
event-list.c \
event-list.h \
functions.c \
@@ -17,6 +19,7 @@
main.c \
mainbox.c \
mainbox.h \
+ orage-i18n.h \
parameters.c \
parameters.h \
reminder.c \
Modified: xfcalendar/trunk/src/about-xfcalendar.c
===================================================================
--- xfcalendar/trunk/src/about-xfcalendar.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/about-xfcalendar.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -43,7 +43,7 @@
, XFCE_COPYRIGHT_TEXT("2003-2007", " Juha Kautto")
, XFCE_LICENSE_GPL);
/* orage_logo = xfce_themed_icon_load("xfcalendar", 48); */
- orage_logo = create_icon(xfcal, 48, 48);
+ orage_logo = orage_create_icon(xfcal, FALSE, 48, 48);
xfce_about_info_set_homepage(about, "http://www.xfce.org");
/* Credits */
Modified: xfcalendar/trunk/src/appointment.c
===================================================================
--- xfcalendar/trunk/src/appointment.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/appointment.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -680,6 +680,16 @@
mark_appointment_changed((appt_win *)user_data);
}
+static void app_free_memory(appt_win *apptw)
+{
+ gtk_widget_destroy(apptw->Window);
+ gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
+ g_free(apptw->xf_uid);
+ g_free(apptw->par);
+ xfical_appt_free(apptw->appt);
+ g_free(apptw);
+}
+
static gboolean appWindow_check_and_close(appt_win *apptw)
{
gint result;
@@ -695,15 +705,22 @@
NULL);
if (result == GTK_RESPONSE_ACCEPT) {
+ app_free_memory(apptw);
+ /*
gtk_widget_destroy(apptw->Window);
+ gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
g_free(apptw);
+ */
}
}
else {
+ app_free_memory(apptw);
+ /*
gtk_widget_destroy(apptw->Window);
gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
xfical_appt_free(apptw->appt);
g_free(apptw);
+ */
}
return TRUE;
}
@@ -1063,9 +1080,13 @@
static void save_xfical_from_appt_win_and_close(appt_win *apptw)
{
if (save_xfical_from_appt_win(apptw)) {
+ app_free_memory(apptw);
+ /*
gtk_widget_destroy(apptw->Window);
+ gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
xfical_appt_free(apptw->appt);
g_free(apptw);
+ */
}
}
@@ -1109,11 +1130,15 @@
refresh_el_win((el_win *)apptw->el);
orage_mark_appointments();
+ app_free_memory(apptw);
+ /*
gtk_widget_destroy(apptw->Window);
+ gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
g_free(apptw->xf_uid);
g_free(apptw->par);
xfical_appt_free(apptw->appt);
g_free(apptw);
+ */
}
}
@@ -1173,57 +1198,9 @@
, gpointer *user_data)
{
appt_win *apptw = (appt_win *)user_data;
- GtkWidget *selDate_Window_dialog;
- GtkWidget *selDate_Calendar_calendar;
- gint result;
- char *date_to_display=NULL;
- struct tm *t;
- struct tm cur_t;
- selDate_Window_dialog = gtk_dialog_new_with_buttons(
- _("Pick the date"), GTK_WINDOW(apptw->Window),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- _("Today"),
- 1,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
-
- selDate_Calendar_calendar = gtk_calendar_new();
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(selDate_Window_dialog)->vbox)
- , selDate_Calendar_calendar);
-
- cur_t = orage_i18_date_to_tm_date(gtk_button_get_label(
- GTK_BUTTON(button)));
- orage_select_date(GTK_CALENDAR(selDate_Calendar_calendar)
- , cur_t.tm_year+1900, cur_t.tm_mon, cur_t.tm_mday);
- gtk_widget_show_all(selDate_Window_dialog);
-
- result = gtk_dialog_run(GTK_DIALOG(selDate_Window_dialog));
- switch(result){
- case GTK_RESPONSE_ACCEPT:
- gtk_calendar_get_date(GTK_CALENDAR(selDate_Calendar_calendar)
- , (guint *)&cur_t.tm_year, (guint *)&cur_t.tm_mon
- , (guint *)&cur_t.tm_mday);
- cur_t.tm_year -= 1900;
- date_to_display = orage_tm_date_to_i18_date(&cur_t);
- break;
- case 1:
- t = orage_localtime();
- date_to_display = orage_tm_date_to_i18_date(t);
- break;
- case GTK_RESPONSE_DELETE_EVENT:
- default:
- date_to_display = (gchar *)gtk_button_get_label(
- GTK_BUTTON(button));
- break;
- }
- if (g_ascii_strcasecmp((gchar *)date_to_display
- , (gchar *)gtk_button_get_label(GTK_BUTTON(button))) != 0) {
+ if (orage_date_button_clicked(button, apptw->Window))
mark_appointment_changed(apptw);
- }
- gtk_button_set_label(GTK_BUTTON(button), (const gchar *)date_to_display);
- gtk_widget_destroy(selDate_Window_dialog);
}
static void on_appStartTimezone_clicked_cb(GtkButton *button
@@ -1274,7 +1251,7 @@
/* start time */
if (strlen(appt->starttime) > 6 ) {
- tm_date = orage_icaltime_to_tm_time(appt->starttime);
+ tm_date = orage_icaltime_to_tm_time(appt->starttime, TRUE);
startdate_to_display = orage_tm_date_to_i18_date(&tm_date);
gtk_button_set_label(GTK_BUTTON(apptw->StartDate_button)
, (const gchar *)startdate_to_display);
@@ -1295,7 +1272,7 @@
/* end time */
if (strlen(appt->endtime) > 6 ) {
- tm_date = orage_icaltime_to_tm_time(appt->endtime);
+ tm_date = orage_icaltime_to_tm_time(appt->endtime, TRUE);
enddate_to_display = orage_tm_date_to_i18_date(&tm_date);
gtk_button_set_label(GTK_BUTTON(apptw->EndDate_button)
, (const gchar *)enddate_to_display);
@@ -1332,7 +1309,7 @@
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
apptw->Completed_checkbutton), appt->completed);
if (strlen(appt->completedtime) > 6 ) {
- tm_date = orage_icaltime_to_tm_time(appt->completedtime);
+ tm_date = orage_icaltime_to_tm_time(appt->completedtime, TRUE);
completeddate_to_display = orage_tm_date_to_i18_date(&tm_date);
gtk_button_set_label(GTK_BUTTON(apptw->CompletedDate_button)
, (const gchar *)completeddate_to_display);
@@ -1640,7 +1617,7 @@
GTK_TOGGLE_BUTTON(apptw->Recur_until_rb), TRUE);
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(apptw->Recur_count_spin), (gdouble)1);
- tm_date = orage_icaltime_to_tm_time(appt->recur_until);
+ tm_date = orage_icaltime_to_tm_time(appt->recur_until, TRUE);
untildate_to_display = orage_tm_date_to_i18_date(&tm_date);
gtk_button_set_label(GTK_BUTTON(apptw->Recur_until_button)
, (const gchar *)untildate_to_display);
@@ -2396,6 +2373,8 @@
/* initialisation + main window + base vbox */
apptw = g_new(appt_win, 1);
apptw->xf_uid = NULL;
+ apptw->par = NULL;
+ apptw->appt = NULL;
apptw->el = event_list; /* Keep track of the parent, if any */
apptw->appointment_changed = FALSE;
apptw->Tooltips = gtk_tooltips_new();
@@ -2433,9 +2412,12 @@
gtk_widget_grab_focus(apptw->Title_entry);
}
else { /* failed to get data */
+ app_free_memory(apptw);
+ /*
gtk_widget_destroy(apptw->Window);
gtk_object_destroy(GTK_OBJECT(apptw->Tooltips));
g_free(apptw);
+ */
}
return apptw;
Added: xfcalendar/trunk/src/day-view.c
===================================================================
--- xfcalendar/trunk/src/day-view.c (rev 0)
+++ xfcalendar/trunk/src/day-view.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -0,0 +1,635 @@
+/* Orage - Calendar and alarm handler
+ *
+ * Copyright (c) 2007 Juha Kautto (juha at xfce.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ Free Software Foundation
+ 51 Franklin Street, 5th Floor
+ Boston, MA 02110-1301 USA
+
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <string.h>
+#include <time.h>
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+#include "orage-i18n.h"
+#include "functions.h"
+#include "day-view.h"
+#include "ical-code.h"
+#include "parameters.h"
+
+static void refresh_day_view_table(day_win *dw);
+
+static GtkWidget *build_line(gint left_x, gint top_y, gint width, gint height
+ , GtkWidget *hour_line)
+{
+ GdkPixmap *pic1;
+ GdkGC *pic1_gc1, *pic1_gc2;
+ GdkColormap *pic1_cmap;
+ GdkColor color;
+ GdkVisual *pic1_vis;
+ GtkWidget *new_hour_line;
+ gint depth = 16;
+ gint red = 239, green = 235, blue = 230;
+ gboolean first = FALSE;
+
+ /*
+ * GdkPixbuf *scaled;
+ scaled = gdk_pixbuf_scale_simple (pix, w, h, GDK_INTERP_BILINEAR);
+ */
+
+ pic1_cmap = gdk_colormap_get_system();
+ pic1_vis = gdk_colormap_get_visual(pic1_cmap);
+ depth = pic1_vis->depth;
+ if (hour_line == NULL) {
+ pic1 = gdk_pixmap_new(NULL, width, height, depth);
+ gdk_drawable_set_colormap(pic1, pic1_cmap);
+ first = TRUE;
+ }
+ else
+ gtk_image_get_pixmap(GTK_IMAGE(hour_line), &pic1, NULL);
+ pic1_gc1 = gdk_gc_new(pic1);
+ pic1_gc2 = gdk_gc_new(pic1);
+ color.red = red * (65535/255);
+ color.green = green * (65535/255);
+ color.blue = blue * (65535/255);
+ color.pixel = (gulong)(red*65536 + green*256 + blue);
+ gdk_colormap_alloc_color(pic1_cmap, &color, FALSE, TRUE);
+ gdk_gc_set_foreground(pic1_gc1, &color);
+ /* gdk_draw_rectangle(, , , left_x, top_y, width, height); */
+ if (first)
+ gdk_draw_rectangle(pic1, pic1_gc1, TRUE, left_x, top_y, width, height);
+ else
+ gdk_draw_rectangle(pic1, pic1_gc2, TRUE, left_x, top_y, width, height);
+
+ new_hour_line = gtk_image_new_from_pixmap(pic1, NULL);
+ g_object_unref(pic1_gc1);
+ g_object_unref(pic1_gc2);
+ g_object_unref(pic1);
+ return(new_hour_line);
+}
+
+static void close_window(day_win *dw)
+{
+ gtk_widget_destroy(dw->Window);
+ gtk_object_destroy(GTK_OBJECT(dw->Tooltips));
+ g_free(dw);
+ dw = NULL;
+}
+
+static gboolean on_Window_delete_event(GtkWidget *w, GdkEvent *e
+ , gpointer user_data)
+{
+ close_window((day_win *)user_data);
+ return(FALSE);
+}
+
+static void on_File_close_activate_cb(GtkMenuItem *mi, gpointer user_data)
+{
+ close_window((day_win *)user_data);
+}
+
+static void build_menu(day_win *dw)
+{
+ dw->Menubar = gtk_menu_bar_new();
+ gtk_box_pack_start(GTK_BOX(dw->Vbox), dw->Menubar, FALSE, FALSE, 0);
+
+ /* File menu */
+ dw->File_menu = orage_menu_new(_("_File"), dw->Menubar);
+ dw->File_menu_close = orage_image_menu_item_new_from_stock("gtk-close"
+ , dw->File_menu, dw->accel_group);
+
+ g_signal_connect((gpointer)dw->File_menu_close, "activate"
+ , G_CALLBACK(on_File_close_activate_cb), dw);
+}
+
+static void on_Close_clicked(GtkButton *b, gpointer user_data)
+{
+ close_window((day_win *)user_data);
+}
+
+static void build_toolbar(day_win *dw)
+{
+ int i = 0;
+
+ dw->Toolbar = gtk_toolbar_new();
+ gtk_box_pack_start(GTK_BOX(dw->Vbox), dw->Toolbar, FALSE, FALSE, 0);
+ gtk_toolbar_set_tooltips(GTK_TOOLBAR(dw->Toolbar), TRUE);
+
+ dw->Close_toolbutton = orage_toolbar_append_button(dw->Toolbar
+ , "gtk-close", dw->Tooltips, _("Close"), i++);
+
+ g_signal_connect((gpointer)dw->Close_toolbutton, "clicked"
+ , G_CALLBACK(on_Close_clicked), dw);
+}
+
+static gboolean upd_day_view(day_win *dw)
+{
+ static guint day_cnt=-1;
+ guint day_cnt_n;
+
+ /* we only need to do this if it is really a new day count. We may get
+ * many of these while spin button is changing day count and it is enough
+ * to show only the last one, which is visible */
+ day_cnt_n = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+ if (day_cnt != day_cnt_n) { /* need really do it */
+ refresh_day_view_table(dw);
+ day_cnt = day_cnt_n;
+ }
+ return(FALSE); /* we do this only once */
+}
+
+static void on_spin_changed(GtkSpinButton *b, gpointer *user_data)
+{
+ day_win *dw = (day_win *)user_data;
+
+ /* refresh_day_view_table is rather heavy (=slow), so doing it here
+ * is not a good idea. We can't keep up with repeated quick presses
+ * if we do the whole thing here. So let's throw it to background
+ * and do it later. */
+ g_timeout_add(500, (GtkFunction)upd_day_view, dw);
+}
+
+static void on_Date_button_clicked_cb(GtkWidget *button, gpointer *user_data)
+{
+ day_win *dw = (day_win *)user_data;
+
+ if (orage_date_button_clicked(button, dw->Window)) {
+ refresh_day_view_table(dw);
+ }
+}
+
+static void header_button_clicked_cb(GtkWidget *button, gpointer *user_data)
+{
+ day_win *dw = (day_win *)user_data;
+ gchar *start_date;
+
+ start_date = (char *)gtk_button_get_label(GTK_BUTTON(button));
+ create_el_win(start_date);
+}
+
+static void event_button_clicked_cb(GtkWidget *button, gpointer *user_data)
+{
+ day_win *dw = (day_win *)user_data;
+ gchar *uid;
+
+ uid = g_object_get_data(G_OBJECT(button), "UID");
+ create_appt_win("UPDATE", uid, NULL);
+}
+
+static void add_row(day_win *dw, xfical_appt *appt, char *a_day
+ , GtkWidget *element[24][40], GtkWidget *line[24][40], GdkColor *bg
+ , gint days)
+{
+ gint row, start_row, end_row, length;
+ gint col, len, start_col, end_col, first_col, last_col;
+ gint height, start_height, end_height;
+ gchar *text, *tip, *uid, *start_date, *end_date;
+ GtkWidget *ev, *lab, *name, *hb;
+ struct tm tm_start, tm_end, tm_first;
+ GDate *g_start, *g_end, *g_first;
+
+ tm_start = orage_icaltime_to_tm_time(appt->starttimecur, FALSE);
+ tm_end = orage_icaltime_to_tm_time(appt->endtimecur, FALSE);
+ tm_first = orage_icaltime_to_tm_time(a_day, FALSE);
+
+ g_start = g_date_new_dmy(tm_start.tm_mday, tm_start.tm_mon
+ , tm_start.tm_year);
+ g_end = g_date_new_dmy(tm_end.tm_mday, tm_end.tm_mon
+ , tm_end.tm_year);
+ g_first = g_date_new_dmy(tm_first.tm_mday, tm_first.tm_mon
+ , tm_first.tm_year);
+ col = g_date_days_between(g_first, g_start)+1; /* col 0 == hour headers */
+ if (col < 1) {
+ col = 1;
+ row = 0;
+ }
+ else
+ row = tm_start.tm_hour;
+
+ len = strlen(gtk_button_get_label(GTK_BUTTON(dw->StartDate_button)));
+ text = g_strndup(appt->title ? appt->title : _("Unknown"), len);
+ if (element[row][col] == NULL) {
+ hb = gtk_hbox_new(FALSE, 0);
+ }
+ else {
+ hb = element[row][col];
+ }
+ ev = gtk_event_box_new();
+ lab = gtk_label_new(text);
+ gtk_container_add(GTK_CONTAINER(ev), lab);
+ name = gtk_button_new();
+ gtk_button_set_relief(GTK_BUTTON(name), GTK_RELIEF_NONE);
+ if ((row % 2) == 1)
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, bg);
+ length = g_date_days_between(g_start, g_end);
+ if (length == 0)
+ tip = g_strdup_printf("%s\n%02d:%02d-%02d:%02d\n%s"
+ , appt->title
+ , tm_start.tm_hour, tm_start.tm_min
+ , tm_end.tm_hour, tm_end.tm_min
+ , appt->note);
+ else {
+ /* we took the date in unnormalized format, so we need to do that now */
+ tm_start.tm_year -= 1900;
+ tm_start.tm_mon -= 1;
+ tm_end.tm_year -= 1900;
+ tm_end.tm_mon -= 1;
+ start_date = g_strdup(orage_tm_date_to_i18_date(&tm_start));
+ end_date = g_strdup(orage_tm_date_to_i18_date(&tm_end));
+ tip = g_strdup_printf("%s\n%s %02d:%02d - %s %02d:%02d\n%s"
+ , appt->title
+ , start_date, tm_start.tm_hour, tm_start.tm_min
+ , end_date, tm_end.tm_hour, tm_end.tm_min
+ , appt->note);
+ g_free(start_date);
+ g_free(end_date);
+ }
+ gtk_tooltips_set_tip(dw->Tooltips, name, tip, NULL);
+ gtk_container_add(GTK_CONTAINER(name), ev);
+ /*
+ gtk_widget_set_size_request(name, dw->StartDate_button_req.width, -1);
+ */
+ gtk_box_pack_start(GTK_BOX(hb), name, TRUE, TRUE, 0);
+ g_object_set_data_full(G_OBJECT(name), "UID", g_strdup(appt->uid), g_free);
+ g_signal_connect((gpointer)name, "clicked"
+ , G_CALLBACK(event_button_clicked_cb), dw);
+ element[row][col] = hb;
+ g_free(tip);
+ g_free(text);
+ height = dw->StartDate_button_req.height;
+ start_col = g_date_days_between(g_first, g_start)+1;
+ if (start_col < 1)
+ first_col = 1;
+ else
+ first_col = start_col;
+ end_col = g_date_days_between(g_first, g_end)+1;
+ if (end_col > days)
+ last_col = days;
+ else
+ last_col = end_col;
+ g_date_free(g_start);
+ g_date_free(g_end);
+ g_date_free(g_first);
+ for (col = first_col; col <= last_col; col++) {
+ if (col == start_col)
+ start_row = tm_start.tm_hour;
+ else
+ start_row = 0;
+ if (col == end_col)
+ end_row = tm_end.tm_hour;
+ else
+ end_row = 23;
+ for (row = start_row; row <= end_row; row++) {
+ if (row == tm_start.tm_hour && col == start_col)
+ start_height = tm_start.tm_min*height/60;
+ else
+ start_height = 0;
+ if (row == tm_end.tm_hour && col == end_col)
+ end_height = tm_end.tm_min*height/60;
+ else
+ end_height = height;
+ line[row][col] = build_line(1, start_height
+ , 2, end_height-start_height, line[row][col]);
+ }
+ }
+}
+
+static void app_rows(day_win *dw, char *a_day, GtkWidget *element[24][40]
+ , GtkWidget *line[24][40], xfical_type ical_type, gchar *file_type
+ , GdkColor *bg)
+{
+ xfical_appt *appt;
+ int days = 1;
+
+ program_log("\tapp_rows start");
+ days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin)) - 1;
+ for (appt = xfical_appt_get_next_on_day(a_day, TRUE, days
+ , ical_type , file_type);
+ appt;
+ appt = xfical_appt_get_next_on_day(a_day, FALSE, days
+ , ical_type , file_type)) {
+ add_row(dw, appt, a_day, element, line, bg, days);
+ xfical_appt_free(appt);
+ }
+ program_log("\tapp_rows end");
+}
+
+static void app_data(day_win *dw, GtkWidget *element[24][40]
+ , GtkWidget *line[24][40], GdkColor *bg)
+{
+ xfical_type ical_type;
+ gchar file_type[8];
+ gint i;
+ gchar a_day[9]; /* yyyymmdd */
+
+ ical_type = XFICAL_TYPE_EVENT;
+ strcpy(a_day, orage_i18_date_to_icaltime(gtk_button_get_label(
+ GTK_BUTTON(dw->StartDate_button))));
+
+ /* first search base orage file */
+ program_log("\tapp_data before open");
+ if (!xfical_file_open(TRUE))
+ return;
+ program_log("\tapp_data after open");
+ strcpy(file_type, "O00.");
+ app_rows(dw, a_day, element, line, ical_type, file_type, bg);
+ /* then process all foreign files */
+ for (i = 0; i < g_par.foreign_count; i++) {
+ app_rows(dw, a_day, element, line, ical_type, file_type, bg);
+ }
+ xfical_file_close(TRUE);
+}
+
+
+static void fill_days(day_win *dw, gint days)
+{
+ gint i, j, height, width;
+ GtkWidget *name, *ev, *hb;
+ GdkColor bg;
+ GtkStyle *def_style;
+ GtkWidget *element[24][40];
+ GtkWidget *line[24][40];
+
+ program_log("fill_days started");
+ def_style = gtk_widget_get_default_style();
+ bg = def_style->bg[GTK_STATE_NORMAL];
+ bg.red += (bg.red < 64000 ? 1000 : -1000);
+ bg.green += (bg.green < 64000 ? 1000 : -1000);
+ bg.blue += (bg.blue < 64000 ? 1000 : -1000);
+ height = dw->StartDate_button_req.height;
+ width = dw->StartDate_button_req.width;
+
+ for (i = 0; i < 24; i++)
+ {
+ for (j = 1; j < days+1; j++) {
+ element[i][j] = NULL;
+ /* gdk_draw_rectangle(, , , left_x, top_y, width, height); */
+ line[i][j] = build_line(0, 0, 3, height, NULL);
+ }
+ }
+ program_log("fill_days init done");
+ /* FIXME: the next line is heavy. it takes almost 100 % of time */
+ app_data(dw, element, line, &bg);
+ program_log("fill_days data done");
+ for (i = 0; i < 24; i++)
+ {
+ for (j = 1; j < days+1; j++) {
+ hb = gtk_hbox_new(FALSE, 0);
+ if (i == 0) {
+ gtk_widget_set_size_request(hb, width, -1);
+ }
+ if (element[i][j]) {
+ gtk_box_pack_start(GTK_BOX(hb), line[i][j], FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hb), element[i][j], TRUE, TRUE, 0);
+ gtk_widget_set_size_request(hb, width, -1);
+ }
+ else {
+ ev = gtk_event_box_new();
+ name = gtk_label_new(" ");
+ gtk_container_add(GTK_CONTAINER(ev), name);
+ if ((i % 2) == 1) {
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &bg);
+ }
+ gtk_box_pack_start(GTK_BOX(hb), line[i][j], FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+ }
+ gtk_table_attach(GTK_TABLE(dw->dtable), hb, j, j+1, i, i+1
+ , (GTK_FILL), (0), 0, 0);
+ }
+ }
+ program_log("fill_days done");
+}
+
+static void build_day_view_header(day_win *dw, char *start_date)
+{
+ GtkWidget *hbox, *label, *space_label;
+
+ hbox = gtk_hbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(dw->Vbox), hbox, FALSE, FALSE, 10);
+
+ label = gtk_label_new(_("Start"));
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
+
+ /* start date button */
+ dw->StartDate_button = gtk_button_new();
+ gtk_box_pack_start(GTK_BOX(hbox), dw->StartDate_button, FALSE, FALSE, 0);
+
+ space_label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+ space_label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+ label = gtk_label_new(_("Show"));
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
+
+ /* show days spin = how many days to show */
+ dw->day_spin = gtk_spin_button_new_with_range(1, 40, 1);
+ gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(dw->day_spin), TRUE);
+ gtk_widget_set_size_request(dw->day_spin, 40, -1);
+ gtk_box_pack_start(GTK_BOX(hbox), dw->day_spin, FALSE, FALSE, 0);
+ label = gtk_label_new(_("days"));
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
+
+ space_label = gtk_label_new(" ");
+ gtk_box_pack_start(GTK_BOX(hbox), space_label, FALSE, FALSE, 0);
+
+ /* initial values */
+ gtk_button_set_label(GTK_BUTTON(dw->StartDate_button)
+ , (const gchar *)start_date);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(dw->day_spin), 7);
+
+ /* sizes */
+ gtk_widget_size_request(dw->StartDate_button, &dw->StartDate_button_req);
+ dw->StartDate_button_req.width += dw->StartDate_button_req.width/10;
+ label = gtk_label_new("00");
+ gtk_widget_size_request(label, &dw->hour_req);
+
+ g_signal_connect((gpointer)dw->day_spin, "value-changed"
+ , G_CALLBACK(on_spin_changed), dw);
+ g_signal_connect((gpointer)dw->StartDate_button, "clicked"
+ , G_CALLBACK(on_Date_button_clicked_cb), dw);
+}
+
+static void build_day_view_table(day_win *dw)
+{
+ gint days; /* number of days to show */
+ int year, month, day;
+ gint i, j, sunday;
+ GtkWidget *name, *label;
+ char text[5+1], *date;
+ struct tm tm_date;
+ guint monthdays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+ GtkWidget *vp;
+ GdkColor fg;
+ GdkColormap *pic1_cmap;
+
+ pic1_cmap = gdk_colormap_get_system();
+ fg.red = 255 * (65535/255);
+ fg.green = 10 * (65535/255);
+ fg.blue = 10 * (65535/255);
+ fg.pixel = (gulong)(fg.red*65536 + fg.green*256 +fg.blue);
+ gdk_colormap_alloc_color(pic1_cmap, &fg, FALSE, TRUE);
+
+ days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+ tm_date = orage_i18_date_to_tm_date(
+ gtk_button_get_label(GTK_BUTTON(dw->StartDate_button)));
+ sunday = tm_date.tm_wday; /* 0 = Sunday */
+ if (sunday)
+ sunday = 7-sunday;
+
+ /* header of day table = days columns */
+ dw->scroll_win_h = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dw->scroll_win_h)
+ , GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
+ gtk_box_pack_start(GTK_BOX(dw->Vbox), dw->scroll_win_h
+ , TRUE, TRUE, 0);
+ dw->day_view_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(dw->scroll_win_h)
+ , dw->day_view_vbox);
+ /*
+ gtk_container_add(GTK_CONTAINER(dw->scroll_win_h), dw->day_view_vbox);
+ */
+ dw->dtable_h = gtk_table_new(1, days+2, FALSE);
+ gtk_box_pack_start(GTK_BOX(dw->day_view_vbox), dw->dtable_h
+ , FALSE, FALSE, 0);
+ year = tm_date.tm_year + 1900;
+ month = tm_date.tm_mon;
+ day = tm_date.tm_mday;
+ if (((tm_date.tm_year%4) == 0) && (((tm_date.tm_year%100) != 0)
+ || ((tm_date.tm_year%400) == 0)))
+ ++monthdays[1];
+ name = gtk_label_new(" ");
+ gtk_widget_set_size_request(name, dw->hour_req.width, -1);
+ gtk_table_attach(GTK_TABLE(dw->dtable_h), name, 0, 1, 0, 1
+ , (GTK_FILL), (0), 0, 0);
+ for (i = 1; i < days+1; i++) {
+ date = orage_tm_date_to_i18_date(&tm_date);
+ name = gtk_button_new();
+ gtk_button_set_label(GTK_BUTTON(name), date);
+ if ((i-1)%7 == sunday) {
+ label = gtk_bin_get_child(GTK_BIN(name));
+ gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &fg);
+ }
+ gtk_widget_set_size_request(name, dw->StartDate_button_req.width, -1);
+ g_signal_connect((gpointer)name, "clicked"
+ , G_CALLBACK(header_button_clicked_cb), dw);
+ gtk_table_attach(GTK_TABLE(dw->dtable_h), name, i, i+1, 0, 1
+ , (GTK_FILL), (0), 0, 0);
+
+ if (++tm_date.tm_mday == (monthdays[tm_date.tm_mon]+1)) {
+ if (++tm_date.tm_mon == 12) {
+ ++tm_date.tm_year;
+ tm_date.tm_mon = 0;
+ }
+ tm_date.tm_mday = 1;
+ }
+ }
+ name = gtk_label_new(" ");
+ gtk_widget_set_size_request(name, dw->hour_req.width, -1);
+ gtk_table_attach(GTK_TABLE(dw->dtable_h), name, days+1, days+2, 0, 1
+ , (GTK_FILL), (0), 0, 0);
+
+ /* body of day table */
+ dw->scroll_win = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(dw->scroll_win)
+ , GTK_SHADOW_NONE);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dw->scroll_win)
+ , GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+ gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(dw->scroll_win)
+ , GTK_CORNER_TOP_LEFT);
+ gtk_box_pack_start(GTK_BOX(dw->day_view_vbox), dw->scroll_win
+ , TRUE, TRUE, 0);
+ vp = gtk_viewport_new(NULL, NULL);
+ gtk_viewport_set_shadow_type(GTK_VIEWPORT(vp), GTK_SHADOW_NONE);
+ gtk_container_add(GTK_CONTAINER(dw->scroll_win), vp);
+ dw->dtable = gtk_table_new(24, days+2, FALSE);
+ gtk_container_add(GTK_CONTAINER(vp), dw->dtable);
+
+ /* hours column = hour rows */
+ for (i = 0; i < 24; i++) {
+ g_sprintf(text, "%02d", i);
+ name = gtk_label_new(text);
+ gtk_widget_set_size_request(name, dw->hour_req.width
+ , dw->StartDate_button_req.height);
+ gtk_table_attach(GTK_TABLE(dw->dtable), name, 0, 1, i, i+1
+ , (GTK_FILL), (0), 0, 0);
+ name = gtk_label_new(text);
+ gtk_widget_set_size_request(name, dw->hour_req.width, -1);
+ gtk_table_attach(GTK_TABLE(dw->dtable), name, days+1, days+2, i, i+1
+ , (GTK_FILL), (0), 0, 0);
+ }
+ fill_days(dw, days);
+}
+
+static void set_scroll_position(day_win *dw)
+{
+ GtkAdjustment *v_adj;
+
+ /* let's try to start rougly from line 8 = 8 o'clock */
+ v_adj = gtk_scrolled_window_get_vadjustment(
+ GTK_SCROLLED_WINDOW(dw->scroll_win));
+ gtk_adjustment_set_value(v_adj, v_adj->upper/3);
+}
+
+static void refresh_day_view_table(day_win *dw)
+{
+ gtk_widget_destroy(dw->scroll_win_h);
+ build_day_view_table(dw);
+ gtk_widget_show_all(dw->scroll_win_h);
+ set_scroll_position(dw);
+}
+
+day_win *create_day_win(char *start_date)
+{
+ day_win *dw;
+
+ program_log("create_day_win started");
+ /* initialisation + main window + base vbox */
+ dw = g_new(day_win, 1);
+ dw->Tooltips = gtk_tooltips_new();
+ dw->accel_group = gtk_accel_group_new();
+
+ dw->Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size(GTK_WINDOW(dw->Window), 690, 390);
+ gtk_window_set_title(GTK_WINDOW(dw->Window), _("Orage - day view"));
+
+ gtk_window_add_accel_group(GTK_WINDOW(dw->Window), dw->accel_group);
+
+ dw->Vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(dw->Window), dw->Vbox);
+ g_signal_connect((gpointer)dw->Window, "delete_event"
+ , G_CALLBACK(on_Window_delete_event), dw);
+
+ build_menu(dw);
+ build_toolbar(dw);
+ program_log("create_day_win toolbar done");
+ build_day_view_header(dw, start_date);
+ program_log("create_day_win header done");
+ build_day_view_table(dw);
+ program_log("create_day_win table done");
+ gtk_widget_show_all(dw->Window);
+ set_scroll_position(dw);
+ program_log("create_day_win done");
+
+ return(dw);
+}
Added: xfcalendar/trunk/src/day-view.h
===================================================================
--- xfcalendar/trunk/src/day-view.h (rev 0)
+++ xfcalendar/trunk/src/day-view.h 2007-10-01 21:18:33 UTC (rev 26125)
@@ -0,0 +1,56 @@
+/* Orage - Calendar and alarm handler
+ *
+ * Copyright (c) 2005-2007 Juha Kautto (juha at xfce.org)
+ * Copyright (c) 2004-2006 Mickael Graf (korbinus at xfce.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ Free Software Foundation
+ 51 Franklin Street, 5th Floor
+ Boston, MA 02110-1301 USA
+
+ */
+
+#ifndef __DAY_VIEW_H__
+#define __DAY_VIEW_H__
+
+typedef struct _day_win
+{
+ GtkAccelGroup *accel_group;
+ GtkTooltips *Tooltips;
+
+ GtkWidget *Window;
+ GtkWidget *Vbox;
+
+ GtkWidget *StartDate_button;
+ GtkRequisition StartDate_button_req;
+ GtkWidget *day_spin;
+
+ GtkWidget *Menubar;
+ GtkWidget *File_menu;
+ GtkWidget *File_menu_close;
+
+ GtkWidget *Toolbar;
+ GtkWidget *Close_toolbutton;
+
+ GtkWidget *day_view_vbox;
+ GtkWidget *scroll_win_h;
+ GtkWidget *dtable_h; /* header of day table */
+ GtkWidget *scroll_win;
+ GtkWidget *dtable; /* day table */
+ GtkRequisition hour_req;
+} day_win;
+
+day_win *create_day_win(char *start_date);
+
+#endif /* !__DAY_VIEW_H__ */
Modified: xfcalendar/trunk/src/event-list.c
===================================================================
--- xfcalendar/trunk/src/event-list.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/event-list.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -61,6 +61,7 @@
#include "event-list.h"
#include "appointment.h"
#include "parameters.h"
+#include "day-view.h"
void refresh_el_win(el_win *el);
@@ -89,19 +90,6 @@
{ "STRING", 0, DRAG_TARGET_STRING }
};
-/*
-static void title_to_ical(char *title, char *ical)
-{ / * yyyy-mm-dd\0 -> yyyymmdd\0 * /
- gint i, j;
-
- for (i = 0, j = 0; i <= 8; i++) {
- if (i == 4 || i == 6)
- j++;
- ical[i] = title[j++];
- }
-}
-*/
-
static void editEvent(GtkTreeView *view, GtkTreePath *path
, GtkTreeViewColumn *col, gpointer user_data)
{
@@ -188,7 +176,7 @@
}
}
else { /* normally show date and time */
- t = orage_icaltime_to_tm_time(appt->starttimecur);
+ t = orage_icaltime_to_tm_time(appt->starttimecur, TRUE);
tmp = orage_tm_date_to_i18_date(&t);
i = g_strlcpy(result, tmp, 50);
if (start_ical_time[8] == 'T') { /* time part available */
@@ -196,7 +184,7 @@
i += append_time(result, start_ical_time, i);
i = g_strlcat(result, "- ", 50);
if (!same_date) {
- t = orage_icaltime_to_tm_time(appt->endtimecur);
+ t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE);
tmp = orage_tm_date_to_i18_date(&t);
i = g_strlcat(result, tmp, 50);
result[i++] = ' ';
@@ -205,7 +193,7 @@
}
else {/* date only */
i = g_strlcat(result, " - ", 50);
- t = orage_icaltime_to_tm_time(appt->endtimecur);
+ t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE);
tmp = orage_tm_date_to_i18_date(&t);
i = g_strlcat(result, tmp, 50);
}
@@ -514,8 +502,8 @@
{
guint year, month, day;
char *title; /* in %x strftime format */
- char *s_time; /* in icaltime format */
- char a_day[9]; /* yyyymmdd */
+ char *s_time; /* in icaltime format */
+ char a_day[9]; /* yyyymmdd */
struct tm *t, t_title;
if (el->days == 0)
@@ -556,16 +544,20 @@
void journal_data(el_win *el)
{
- char *s_time;
+ /* char *s_time; */
char a_day[9]; /* yyyymmdd */
- struct tm t;
+ /* struct tm t; */
el->days = 10*365; /* long enough time to get everything from future */
+ /*
t = orage_i18_date_to_tm_date(gtk_button_get_label(
GTK_BUTTON(el->journal_start_button)));
s_time = orage_tm_time_to_icaltime(&t);
strncpy(a_day, s_time, 8);
a_day[8] = '\0';
+ */
+ strcpy(a_day, orage_i18_date_to_icaltime(gtk_button_get_label(
+ GTK_BUTTON(el->journal_start_button))));
app_data(el, a_day, NULL);
}
@@ -641,6 +633,13 @@
refresh_el_win((el_win *)user_data);
}
+static void set_el_data(el_win *el, char *title)
+{
+ gtk_window_set_title(GTK_WINDOW(el->Window), (const gchar*)title);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(el->Notebook), EVENT_PAGE);
+ refresh_el_win(el);
+}
+
static void set_el_data_from_cal(el_win *el)
{
char *title;
@@ -652,9 +651,7 @@
, (unsigned int *)&tm_date.tm_mday);
tm_date.tm_year -= 1900;
title = orage_tm_date_to_i18_date(&tm_date);
- gtk_window_set_title(GTK_WINDOW(el->Window), (const gchar*)title);
- gtk_notebook_set_current_page(GTK_NOTEBOOK(el->Notebook), EVENT_PAGE);
- refresh_el_win(el);
+ set_el_data(el, title);
}
static void duplicate_appointment(el_win *el)
@@ -711,6 +708,7 @@
write_parameters();
gtk_widget_destroy(el->Window); /* destroy the eventlist window */
+ gtk_object_destroy(GTK_OBJECT(el->Tooltips));
g_free(el);
el = NULL;
}
@@ -720,6 +718,16 @@
close_window((el_win *)user_data);
}
+static void on_Dayview_clicked(GtkButton *b, gpointer user_data)
+{
+ el_win *el = (el_win *)user_data;
+ char *title;
+
+ title = (char *)gtk_window_get_title(GTK_WINDOW(el->Window));
+ create_day_win(title);
+}
+
+
static void on_File_close_activate_cb(GtkMenuItem *mi, gpointer user_data)
{
close_window((el_win *)user_data);
@@ -826,10 +834,13 @@
struct tm tm_date = {0,0,0,0,0,0,0,0,0};
title = (char *)gtk_window_get_title(GTK_WINDOW(el->Window));
+ /*
tm_date = orage_i18_date_to_tm_date(title);
s_title = orage_tm_time_to_icaltime(&tm_date);
strncpy(a_day, s_title, 8);
a_day[8] = '\0';
+ */
+ strcpy(a_day, orage_i18_date_to_icaltime(title));
apptw = create_appt_win("NEW", a_day, el);
/* gtk_widget_show(apptw->Window); */
@@ -1120,6 +1131,8 @@
el->Close_toolbutton = orage_toolbar_append_button(el->Toolbar
, "gtk-close", el->Tooltips, _("Close"), i++);
+ el->Dayview_toolbutton = orage_toolbar_append_button(el->Toolbar
+ , "gtk-zoom-in", el->Tooltips, _("Days"), i++);
g_signal_connect((gpointer)el->Create_toolbutton, "clicked"
, G_CALLBACK(on_Create_toolbutton_clicked_cb), el);
@@ -1139,6 +1152,8 @@
, G_CALLBACK(on_Search_clicked), el);
g_signal_connect((gpointer)el->Close_toolbutton, "clicked"
, G_CALLBACK(on_Close_clicked), el);
+ g_signal_connect((gpointer)el->Dayview_toolbutton, "clicked"
+ , G_CALLBACK(on_Dayview_clicked), el);
}
static void build_event_tab(el_win *el)
@@ -1151,7 +1166,7 @@
label = gtk_label_new(_("Extra days to show "));
hbox = gtk_hbox_new(FALSE, 0);
- el->event_spin = gtk_spin_button_new_with_range(0, 31, 1);
+ el->event_spin = gtk_spin_button_new_with_range(0, 999, 1);
gtk_box_pack_start(GTK_BOX(hbox), el->event_spin, FALSE, FALSE, 15);
orage_table_add_row(el->event_notebook_page
, label, hbox
@@ -1308,7 +1323,7 @@
G_CALLBACK(editEvent), el);
}
-el_win *create_el_win()
+el_win *create_el_win(char *start_date)
{
GdkPixbuf *pixbuf;
el_win *el;
@@ -1338,7 +1353,10 @@
, G_CALLBACK(on_Window_delete_event), el);
gtk_widget_show_all(el->Window);
- set_el_data_from_cal(el);
+ if (start_date == NULL)
+ set_el_data_from_cal(el);
+ else
+ set_el_data(el, start_date);
gtk_drag_source_set(el->TreeView, GDK_BUTTON1_MASK
, drag_targets, DRAG_TARGET_COUNT, GDK_ACTION_COPY);
Modified: xfcalendar/trunk/src/event-list.h
===================================================================
--- xfcalendar/trunk/src/event-list.h 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/event-list.h 2007-10-01 21:18:33 UTC (rev 26125)
@@ -33,7 +33,7 @@
} el_page;
-typedef struct
+typedef struct _el_win
{
GtkAccelGroup *accel_group;
GtkTooltips *Tooltips;
@@ -64,6 +64,7 @@
GtkWidget *Refresh_toolbutton;
GtkWidget *Search_toolbutton;
GtkWidget *Close_toolbutton;
+ GtkWidget *Dayview_toolbutton;
GtkWidget *Notebook;
GtkWidget *event_tab_label;
@@ -92,7 +93,7 @@
char date_now[XFICAL_APPT_TIME_FORMAT_LEN]; /* yyyymmddThhmmss */
} el_win; /* event list window */
-el_win* create_el_win(void);
+el_win* create_el_win(char *start_date);
void refresh_el_win(el_win *el);
#endif /* !__EVENT_LIST_H__ */
Modified: xfcalendar/trunk/src/functions.c
===================================================================
--- xfcalendar/trunk/src/functions.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/functions.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -26,19 +26,124 @@
#define _XOPEN_SOURCE /* glibc2 needs this */
#include <time.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/wait.h>
#include <glib.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
+/*
#include <libxfce4util/libxfce4util.h>
+*/
+#include "orage-i18n.h"
#include "functions.h"
/**************************************
* General purpose helper functions *
**************************************/
+
+gboolean orage_date_button_clicked(GtkWidget *button, GtkWidget *win)
+{
+ GtkWidget *selDate_Window_dialog;
+ GtkWidget *selDate_Calendar_calendar;
+ gint result;
+ char *date_to_display=NULL;
+ struct tm *t;
+ struct tm cur_t;
+ gboolean changed;
+
+ selDate_Window_dialog = gtk_dialog_new_with_buttons(
+ _("Pick the date"), GTK_WINDOW(win),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ _("Today"),
+ 1,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ selDate_Calendar_calendar = gtk_calendar_new();
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(selDate_Window_dialog)->vbox)
+ , selDate_Calendar_calendar);
+
+ cur_t = orage_i18_date_to_tm_date(gtk_button_get_label(
+ GTK_BUTTON(button)));
+ orage_select_date(GTK_CALENDAR(selDate_Calendar_calendar)
+ , cur_t.tm_year+1900, cur_t.tm_mon, cur_t.tm_mday);
+ gtk_widget_show_all(selDate_Window_dialog);
+
+ result = gtk_dialog_run(GTK_DIALOG(selDate_Window_dialog));
+ switch(result){
+ case GTK_RESPONSE_ACCEPT:
+ gtk_calendar_get_date(GTK_CALENDAR(selDate_Calendar_calendar)
+ , (guint *)&cur_t.tm_year, (guint *)&cur_t.tm_mon
+ , (guint *)&cur_t.tm_mday);
+ cur_t.tm_year -= 1900;
+ date_to_display = orage_tm_date_to_i18_date(&cur_t);
+ break;
+ case 1:
+ t = orage_localtime();
+ date_to_display = orage_tm_date_to_i18_date(t);
+ break;
+ case GTK_RESPONSE_DELETE_EVENT:
+ default:
+ date_to_display = (gchar *)gtk_button_get_label(
+ GTK_BUTTON(button));
+ break;
+ }
+ if (g_ascii_strcasecmp((gchar *)date_to_display
+ , (gchar *)gtk_button_get_label(GTK_BUTTON(button))) != 0)
+ changed = TRUE;
+ else
+ changed = FALSE;
+ gtk_button_set_label(GTK_BUTTON(button), (const gchar *)date_to_display);
+ gtk_widget_destroy(selDate_Window_dialog);
+ return(changed);
+}
+
+static void child_setup_async(gpointer user_data)
+{
+#if defined(HAVE_SETSID) && !defined(G_OS_WIN32)
+ setsid();
+#endif
+}
+
+static void child_watch_cb(GPid pid, gint status, gpointer data)
+{
+ gboolean *cmd_active = (gboolean *)data;
+
+ waitpid(pid, NULL, 0);
+ g_spawn_close_pid(pid);
+ *cmd_active = FALSE;
+}
+
+gboolean orage_exec(const char *cmd, gboolean *cmd_active, GError **error)
+{
+ char **argv;
+ gboolean success;
+ int spawn_flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD;
+ GPid pid;
+
+ if (!g_shell_parse_argv(cmd, NULL, &argv, error))
+ return FALSE;
+
+ if (!argv || !argv[0])
+ return FALSE;
+
+ success = g_spawn_async(NULL, argv, NULL, spawn_flags
+ , child_setup_async, NULL, &pid, error);
+ if (cmd_active) {
+ if (success)
+ *cmd_active = TRUE;
+ g_child_watch_add(pid, child_watch_cb, cmd_active);
+ }
+ g_strfreev(argv);
+
+ return(success);
+}
+
struct tm orage_i18_date_to_tm_date(const char *i18_date)
{
char *ret;
@@ -62,7 +167,7 @@
return(i18_date);
}
-struct tm orage_icaltime_to_tm_time(const char *icaltime)
+struct tm orage_icaltime_to_tm_time(const char *icaltime, gboolean real_tm)
{
int i;
struct tm t = {0,0,0,0,0,0,0,0,0};
@@ -82,9 +187,10 @@
g_error("orage: orage_icaltime_to_tm_time error %s %d", icaltime, i);
break;
}
- /* normalise to standard tm format */
- t.tm_year -= 1900;
- t.tm_mon -= 1;
+ if (real_tm) { /* normalise to standard tm format */
+ t.tm_year -= 1900;
+ t.tm_mon -= 1;
+ }
return(t);
}
@@ -99,6 +205,17 @@
return(icaltime);
}
+char *orage_i18_date_to_icaltime(const char *i18_date)
+{
+ struct tm t;
+ char *ct;
+
+ t = orage_i18_date_to_tm_date(i18_date);
+ ct = orage_tm_time_to_icaltime(&t);
+ ct[8] = '\0'; /* we know it is date */
+ return(ct);
+}
+
void orage_message(const char *format, ...)
{
va_list args;
Modified: xfcalendar/trunk/src/functions.h
===================================================================
--- xfcalendar/trunk/src/functions.h 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/functions.h 2007-10-01 21:18:33 UTC (rev 26125)
@@ -33,6 +33,10 @@
void orage_message(const char *format, ...);
+gboolean orage_date_button_clicked(GtkWidget *button, GtkWidget *win);
+
+gboolean orage_exec(const char *cmd, gboolean *cmd_active, GError **error);
+
GtkWidget *orage_toolbar_append_button(GtkWidget *toolbar
, const gchar *stock_id, GtkTooltips *tooltips
, const char *tooltip_text, gint pos);
@@ -66,8 +70,10 @@
char *orage_tm_date_to_i18_date(struct tm *tm_date);
-struct tm orage_icaltime_to_tm_time(const char *i18_date);
+struct tm orage_icaltime_to_tm_time(const char *i18_date, gboolean real_tm);
char *orage_tm_time_to_icaltime(struct tm *t);
+char *orage_i18_date_to_icaltime(const char *i18_date);
+
#endif /* !__ORAGE_FUNCTIONS_H__ */
Modified: xfcalendar/trunk/src/ical-code.c
===================================================================
--- xfcalendar/trunk/src/ical-code.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/ical-code.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -47,8 +47,6 @@
#include <time.h>
#include <math.h>
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <glib/gprintf.h>
@@ -56,6 +54,7 @@
#include <ical.h>
#include <icalss.h>
+#include "orage-i18n.h"
#include "functions.h"
#include "mainbox.h"
#include "reminder.h"
Modified: xfcalendar/trunk/src/main.c
===================================================================
--- xfcalendar/trunk/src/main.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/main.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -63,7 +63,7 @@
/* session client handler */
static SessionClient *session_client = NULL;
static GdkAtom atom_alive;
-/*
+
void program_log (const char *format, ...)
{
va_list args;
@@ -79,8 +79,8 @@
access (str, F_OK);
g_free (str);
}
-*/
+
static void send_event(char *event)
{
GdkEventClient gev;
@@ -119,10 +119,12 @@
static void raise_window()
{
- GdkScreen *screen;
+ GdkScreen *screen = NULL;
GdkWindow *window;
+ /*
screen = xfce_gdk_display_locate_monitor_with_pointer(NULL, NULL);
+ */
gtk_window_set_screen(GTK_WINDOW(g_par.xfcal->mWindow)
, screen ? screen : gdk_screen_get_default());
if (g_par.pos_x || g_par.pos_y)
@@ -198,62 +200,6 @@
gtk_main_quit();
}
-static void ensure_basedir_spec(void)
-{
- char *newdir, *olddir;
- GError *error = NULL;
- GDir *gdir;
-
- newdir = xfce_resource_save_location(XFCE_RESOURCE_CONFIG, ORAGE_DIR, FALSE);
-
- /* if new directory exist, assume old config has been copied */
- if (g_file_test(newdir, G_FILE_TEST_IS_DIR)) {
- g_free(newdir);
- return;
- }
-
- if (!xfce_mkdirhier(newdir, 0700, &error)) {
- g_critical("Cannot create directory %s: %s", newdir, error->message);
- g_error_free(error);
- g_free(newdir);
- exit(EXIT_FAILURE);
- }
-
- olddir = xfce_get_userfile("xfcalendar", NULL);
-
- if ((gdir = g_dir_open(olddir, 0, NULL)) != NULL) {
- const char *name;
-
- while ((name = g_dir_read_name(gdir)) != NULL) {
- FILE *r, *w;
- char *path;
-
- path = g_build_filename(olddir, name, NULL);
- r = fopen(path, "r");
- g_free(path);
-
- path = g_build_filename(newdir, name, NULL);
- w = fopen(path, "w");
- g_free(path);
-
- if (r && w) {
- char c;
-
- while ((c = getc(r)) != EOF)
- putc (c, w);
- }
-
- if (r)
- fclose(r);
- if (w)
- fclose(w);
- }
- }
-
- g_free(newdir);
- g_free(olddir);
-}
-
static void print_version(void)
{
g_print(_("\tThis is %s version %s for Xfce %s\n\n")
@@ -473,7 +419,16 @@
{
gboolean running, initialized = FALSE;
+ /*
xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+ */
+ /* init i18n = nls to use gettext */
+ bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+#endif
+ textdomain(GETTEXT_PACKAGE);
+
gtk_init(&argc, &argv);
atom_alive = gdk_atom_intern("_XFCE_CALENDAR_RUNNING", FALSE);
@@ -502,7 +457,6 @@
* Now it's serious, the application is running, so we create the RC
* directory and check for config files in old location.
*/
- ensure_basedir_spec();
#ifdef HAVE_DBUS
orage_dbus_start();
#endif
Modified: xfcalendar/trunk/src/mainbox.c
===================================================================
--- xfcalendar/trunk/src/mainbox.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/mainbox.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -36,9 +36,8 @@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
+#include "orage-i18n.h"
#include "functions.h"
#include "mainbox.h"
#include "about-xfcalendar.h"
@@ -47,6 +46,7 @@
#include "appointment.h"
#include "interface.h"
#include "parameters.h"
+#include "tray_icon.h"
gboolean
@@ -105,22 +105,13 @@
show_parameters();
}
-static void
-mEdit_search_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
-{
- CalWin *cal = (CalWin *) user_data;
- el_win *el;
-
- el = create_el_win();
-}
-
static void
mView_ViewSelectedDate_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
{
CalWin *cal = (CalWin *) user_data;
el_win *el;
- el = create_el_win();
+ el = create_el_win(NULL);
}
static void
@@ -141,8 +132,9 @@
, G_DIR_SEPARATOR_S, "doc"
, G_DIR_SEPARATOR_S, "C"
, G_DIR_SEPARATOR_S, "orage.html", NULL);
- xfce_exec(helpdoc, FALSE, FALSE, NULL);
+ orage_exec(helpdoc, NULL, NULL);
/*
+ xfce_exec(helpdoc, FALSE, FALSE, NULL);
xfce_exec("xfhelp4 xfce4-user-guide.html", FALSE, FALSE, NULL);
*/
}
@@ -184,7 +176,7 @@
{
el_win *el;
- el = create_el_win();
+ el = create_el_win(NULL);
}
static gboolean
@@ -300,7 +292,8 @@
/* using static icon here since this dynamic icon is not updated
* when date changes. Could be added, but not worth it.
* Dynamic icon is used in systray and about windows */
- orage_logo = xfce_themed_icon_load("xfcalendar", 48);
+ orage_logo = orage_create_icon(cal, TRUE, 48, 48);
+ /* orage_logo = xfce_themed_icon_load("xfcalendar", 48); */
/* orage_logo = create_icon(cal, 48, 48); */
cal->mAccel_group = gtk_accel_group_new();
Added: xfcalendar/trunk/src/orage-i18n.h
===================================================================
--- xfcalendar/trunk/src/orage-i18n.h (rev 0)
+++ xfcalendar/trunk/src/orage-i18n.h 2007-10-01 21:18:33 UTC (rev 26125)
@@ -0,0 +1,65 @@
+/* Orage - Calendar and alarm handler
+ *
+ * Copyright (c) 2007 Juha Kautto (juha at xfce.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the
+ Free Software Foundation
+ 51 Franklin Street, 5th Floor
+ Boston, MA 02110-1301 USA
+
+ */
+
+
+#ifndef __ORAGE_I18N_H__
+#define __ORAGE_I18N_H__
+
+#include <glib.h>
+
+#if defined(GETTEXT_PACKAGE)
+#include <glib/gi18n-lib.h>
+#else
+#include <glib/gi18n.h>
+#endif
+
+#if !defined(GETTEXT_PACKAGE)
+
+#ifdef gettext
+#undef gettext
+#endif
+#ifdef dgettext
+#undef dgettext
+#endif
+#ifdef dcgettext
+#undef dcgettext
+#endif
+#ifdef ngettext
+#undef ngettext
+#endif
+#ifdef dngettext
+#undef dngettext
+#endif
+#ifdef dcngettext
+#undef dcngettext
+#endif
+
+#define gettext(s) (s)
+#define dgettext(domain,s) (s)
+#define dcgettext(domain,s,type) (s)
+#define ngettext(msgid, msgid_plural, n) (((n) > 0) ? (msgid) : (msgid_plural))
+#define dngettext(domainname, msgid, msgid_plural, n) (((n) > 0) ? (msgid) : (msgid_plural))
+#define dcngettext(domainname, msgid, msgid_plural, n, type) (((n) > 0) ? (msgid) : (msgid_plural))
+
+#endif /* !defined(GETTEXT_PACKAGE) */
+
+#endif /* !__ORAGE_I18N_H__ */
Modified: xfcalendar/trunk/src/parameters.c
===================================================================
--- xfcalendar/trunk/src/parameters.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/parameters.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -688,8 +688,6 @@
g_signal_connect(G_OBJECT (dialog->orage_dialog), "response"
, G_CALLBACK(dialog_response), NULL);
- xfce_gtk_window_center_on_monitor_with_pointer(
- GTK_WINDOW(dialog->orage_dialog));
gdk_x11_window_set_user_time(GTK_WIDGET(dialog->orage_dialog)->window,
gdk_x11_get_server_time(GTK_WIDGET(dialog->orage_dialog)->window));
gtk_widget_show_all(dialog->orage_dialog);
Modified: xfcalendar/trunk/src/reminder.c
===================================================================
--- xfcalendar/trunk/src/reminder.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/reminder.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -39,13 +39,11 @@
#include <glib/gprintf.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-#include <libxfcegui4/dialogs.h>
#ifdef HAVE_NOTIFY
#include <libnotify/notify.h>
#endif
+#include "orage-i18n.h"
#include "functions.h"
#include "mainbox.h"
#include "ical-code.h"
@@ -58,45 +56,7 @@
void create_notify_reminder(alarm_struct *alarm);
-static void child_setup_async(gpointer user_data)
-{
-#if defined(HAVE_SETSID) && !defined(G_OS_WIN32)
- setsid();
-#endif
-}
-static void child_watch_cb(GPid pid, gint status, gpointer data)
-{
- gboolean *sound_active = (gboolean *)data;
-
- waitpid(pid, NULL, 0);
- g_spawn_close_pid(pid);
- *sound_active = FALSE;
-}
-
-gboolean orage_exec(const char *cmd, gboolean *sound_active, GError **error)
-{
- char **argv;
- gboolean success;
- int spawn_flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD;
- GPid pid;
-
- if (!g_shell_parse_argv(cmd, NULL, &argv, error))
- return FALSE;
-
- if (!argv || !argv[0])
- return FALSE;
-
- success = g_spawn_async(NULL, argv, NULL, spawn_flags
- , child_setup_async, NULL, &pid, error);
- if (success)
- *sound_active = TRUE;
- g_child_watch_add(pid, child_watch_cb, sound_active);
- g_strfreev(argv);
-
- return success;
-}
-
static void alarm_free_memory(alarm_struct *alarm)
{
if (!alarm->display_orage && !alarm->display_notify)
@@ -288,13 +248,10 @@
GtkWidget *btOkReminder;
GtkWidget *swReminder;
GtkWidget *hdReminder;
- char heading[250];
- gchar *head2;
wReminder = gtk_dialog_new();
gtk_widget_set_size_request(wReminder, 300, 250);
- strncpy(heading, _("Reminder "), 199);
- gtk_window_set_title(GTK_WINDOW(wReminder), heading);
+ gtk_window_set_title(GTK_WINDOW(wReminder), _("Reminder - Orage"));
gtk_window_set_position(GTK_WINDOW(wReminder), GTK_WIN_POS_CENTER);
gtk_window_set_modal(GTK_WINDOW(wReminder), FALSE);
gtk_window_set_resizable(GTK_WINDOW(wReminder), TRUE);
@@ -302,10 +259,7 @@
vbReminder = GTK_DIALOG(wReminder)->vbox;
- strncat(heading, alarm->title->str, 50);
- head2 = g_markup_escape_text(heading, -1);
- hdReminder = xfce_create_header(NULL, head2);
- g_free(head2);
+ hdReminder = gtk_label_new(alarm->title->str);
gtk_box_pack_start(GTK_BOX(vbReminder), hdReminder, FALSE, TRUE, 0);
swReminder = gtk_scrolled_window_new(NULL, NULL);
Modified: xfcalendar/trunk/src/tray_icon.c
===================================================================
--- xfcalendar/trunk/src/tray_icon.c 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/tray_icon.c 2007-10-01 21:18:33 UTC (rev 26125)
@@ -59,7 +59,7 @@
t = orage_localtime();
orage_select_date(GTK_CALENDAR(xfcal->mCalendar), t->tm_year+1900
, t->tm_mon, t->tm_mday);
- el = create_el_win();
+ el = create_el_win(NULL);
}
void
@@ -95,8 +95,10 @@
orage_toggle_visible ();
}
-GdkPixbuf *create_icon(CalWin *xfcal, gint x, gint y)
+GdkPixbuf *orage_create_icon(CalWin *xfcal, gboolean static_icon
+ , gint x, gint y)
{
+ GtkIconTheme *icon_theme = NULL;
GdkPixbuf *pixbuf;
GdkPixmap *pic1;
GdkGC *pic1_gc1, *pic1_gc2;
@@ -118,15 +120,31 @@
gchar *day_sizes[] = {"xx-large", "x-large", "large", "medium"
, "small", "x-small", "xx-small", "END"};
+ if (static_icon) {
+ icon_theme = gtk_icon_theme_get_default();
+ pixbuf = gtk_icon_theme_load_icon(icon_theme, "xfcalendar", x
+ , GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
+ return(pixbuf);
+ }
if (x <= 12 || y <= 12) {
orage_message("Too small icon size, using static icon\n");
+ icon_theme = gtk_icon_theme_get_default();
+ pixbuf = gtk_icon_theme_load_icon(icon_theme, "xfcalendar", 16
+ , GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
+ /*
pixbuf = xfce_themed_icon_load("xfcalendar", 16);
+ */
return(pixbuf);
}
if (g_par.icon_size_x == 0
|| g_par.icon_size_y == 0) { /* signal to use static icon */
orage_message("Icon size set to zero, using static icon\n");
+ icon_theme = gtk_icon_theme_get_default();
+ pixbuf = gtk_icon_theme_load_icon(icon_theme, "xfcalendar", x
+ , GTK_ICON_LOOKUP_USE_BUILTIN, NULL);
+ /*
pixbuf = xfce_themed_icon_load("xfcalendar", x);
+ */
return(pixbuf);
}
@@ -145,7 +163,10 @@
color.green = green * (65535/255);
color.blue = blue * (65535/255);
color.pixel = (gulong)(red*65536 + green*256 + blue);
+ /*
gdk_color_alloc(pic1_cmap, &color);
+ */
+ gdk_colormap_alloc_color(pic1_cmap, &color, FALSE, TRUE);
gdk_gc_set_foreground(pic1_gc1, &color);
gdk_draw_rectangle(pic1, pic1_gc1, TRUE, 0, 0, width, height);
gdk_draw_rectangle(pic1, pic1_gc2, FALSE, 0, 0, width-1, height-1);
@@ -181,9 +202,9 @@
/* month */
if (strftime(month, 19, "%^b", t) == 0) {
- g_warning("create_icon: strftime %^b failed");
+ g_warning("orage_create_icon: strftime %^b failed");
if (strftime(month, 19, "%b", t) == 0) {
- g_warning("create_icon: strftime %b failed");
+ g_warning("orage_create_icon: strftime %b failed");
g_sprintf(month, "orage");
}
}
@@ -264,7 +285,7 @@
pixbuf = xfce_themed_icon_load("xfcalendar", 16);
if (pixbuf == NULL)
- g_warning("create_icon: load failed\n");
+ g_warning("orage_create_icon: load failed\n");
g_object_unref(pic1_gc1);
g_object_unref(pic1_gc2);
@@ -354,7 +375,8 @@
*/
/* pixbuf = xfce_themed_icon_load ("xfcalendar", 16); */
- pixbuf = create_icon(xfcal, g_par.icon_size_x, g_par.icon_size_y);
+ pixbuf = orage_create_icon(xfcal, FALSE
+ , g_par.icon_size_x, g_par.icon_size_y);
trayIcon = xfce_tray_icon_new_with_menu_from_pixbuf(trayMenu, pixbuf);
g_object_ref(trayIcon);
gtk_object_sink(GTK_OBJECT(trayIcon));
Modified: xfcalendar/trunk/src/tray_icon.h
===================================================================
--- xfcalendar/trunk/src/tray_icon.h 2007-10-01 19:21:50 UTC (rev 26124)
+++ xfcalendar/trunk/src/tray_icon.h 2007-10-01 21:18:33 UTC (rev 26125)
@@ -27,7 +27,8 @@
#include "xfce_trayicon.h"
#include "mainbox.h"
-GdkPixbuf *create_icon(CalWin *xfcal, gint x, gint y);
+GdkPixbuf *orage_create_icon(CalWin *xfcal, gboolean static_icon
+ , gint x, gint y);
XfceTrayIcon *create_TrayIcon(CalWin *xfcal);
More information about the Xfce4-commits
mailing list