diff options
Diffstat (limited to 'stickynotes/stickynotes_callbacks.c')
-rw-r--r-- | stickynotes/stickynotes_callbacks.c | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/stickynotes/stickynotes_callbacks.c b/stickynotes/stickynotes_callbacks.c new file mode 100644 index 00000000..604e5085 --- /dev/null +++ b/stickynotes/stickynotes_callbacks.c @@ -0,0 +1,244 @@ +/* Sticky Notes + * Copyright (C) 2002-2003 Loban A Rahman + * + * 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, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include <config.h> +#include <stickynotes_callbacks.h> + +/* Sticky Window Callback : Lock/Unlock the window */ +gboolean +stickynote_toggle_lock_cb (GtkWidget *widget, StickyNote *note) +{ + stickynote_set_locked (note, !note->locked); + + return TRUE; +} + +/* Sticky Window Callback : Close the window. */ +gboolean +stickynote_close_cb (GtkWidget *widget, StickyNote *note) +{ + + stickynotes_remove (note); + + return TRUE; +} + +/* Sticky Window Callback : Resize the window. */ +gboolean stickynote_resize_cb(GtkWidget *widget, GdkEventButton *event, StickyNote *note) +{ + if (event->type == GDK_BUTTON_PRESS && event->button == 1) { + if (widget == note->w_resize_se) + gtk_window_begin_resize_drag(GTK_WINDOW(note->w_window), GDK_WINDOW_EDGE_SOUTH_EAST, + event->button, event->x_root, event->y_root, event->time); + else /* if (widget == note->w_resize_sw) */ + gtk_window_begin_resize_drag(GTK_WINDOW(note->w_window), GDK_WINDOW_EDGE_SOUTH_WEST, + event->button, event->x_root, event->y_root, event->time); + } + else + return FALSE; + + return TRUE; +} + +/* Sticky Window Callback : Move the window or edit the title. */ +gboolean stickynote_move_cb(GtkWidget *widget, GdkEventButton *event, StickyNote *note) +{ + if (event->type == GDK_BUTTON_PRESS && event->button == 1) + gtk_window_begin_move_drag(GTK_WINDOW(note->w_window), event->button, event->x_root, event->y_root, event->time); + else if (event->type == GDK_2BUTTON_PRESS && event->button == 1) + stickynote_change_properties(note); + else + return FALSE; + + return TRUE; +} + +/* Sticky Window Callback : Skip taskbar and pager when exposing the widow */ +gboolean stickynote_expose_cb(GtkWidget *widget, GdkEventExpose *event, StickyNote *note) +{ + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(note->w_window), TRUE); + gtk_window_set_skip_pager_hint(GTK_WINDOW(note->w_window), TRUE); + + return FALSE; +} + +/* Sticky Window Callback : Store settings when resizing/moving the window */ +gboolean stickynote_configure_cb(GtkWidget *widget, GdkEventConfigure *event, StickyNote *note) +{ + note->x = event->x; + note->y = event->y; + note->w = event->width; + note->h = event->height; + + stickynotes_save(); + + return FALSE; +} + +/* Sticky Window Callback : Get confirmation when deleting the window. */ +gboolean stickynote_delete_cb(GtkWidget *widget, GdkEvent *event, StickyNote *note) +{ + stickynotes_remove(note); + + return TRUE; +} + +/* Sticky Window Callback : Popup the right click menu. */ +gboolean +stickynote_show_popup_menu (GtkWidget *widget, GdkEventButton *event, GtkWidget *popup_menu) +{ + + + if (event->type == GDK_BUTTON_PRESS && event->button == 3) + { + gtk_menu_popup (GTK_MENU (popup_menu), + NULL, NULL, + NULL, NULL, + event->button, event->time); + } + + return FALSE; +} + + +/* Popup Menu Callback : Create a new sticky note */ +void popup_create_cb(GtkWidget *widget, StickyNote *note) +{ + stickynotes_add(gtk_widget_get_screen(note->w_window)); +} + +/* Popup Menu Callback : Destroy selected sticky note */ +void popup_destroy_cb(GtkWidget *widget, StickyNote *note) +{ + stickynotes_remove(note); +} + +/* Popup Menu Callback : Lock/Unlock selected sticky note */ +void popup_toggle_lock_cb(GtkToggleAction *action, StickyNote *note) +{ + stickynote_set_locked(note, gtk_toggle_action_get_active(action)); +} + +/* Popup Menu Callback : Change sticky note properties */ +void popup_properties_cb(GtkWidget *widget, StickyNote *note) +{ + stickynote_change_properties(note); +} + +/* Properties Dialog Callback : Apply title */ +void properties_apply_title_cb(StickyNote *note) +{ + stickynote_set_title(note, gtk_entry_get_text(GTK_ENTRY(note->w_entry))); +} + +/* Properties Dialog Callback : Apply color */ +void properties_apply_color_cb(StickyNote *note) +{ + char *color_str = NULL; + char *font_color_str = NULL; + + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(note->w_def_color))) + { + GdkColor color; + GdkColor font_color; + + gtk_color_button_get_color (GTK_COLOR_BUTTON (note->w_color), + &color); + gtk_color_button_get_color ( + GTK_COLOR_BUTTON (note->w_font_color), + &font_color); + color_str = g_strdup_printf ("#%.2x%.2x%.2x", + color.red / 256, + color.green / 256, + color.blue / 256); + font_color_str = g_strdup_printf ("#%.2x%.2x%.2x", + font_color.red / 256, + font_color.green / 256, + font_color.blue / 256); + } + + stickynote_set_color (note, color_str, font_color_str, TRUE); + + g_free (color_str); + g_free (font_color_str); +} + +/* Properties Dialog Callback : Apply font */ +void properties_apply_font_cb(StickyNote *note) +{ + const gchar *font_str = NULL; + + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(note->w_def_font))) + { + font_str = gtk_font_button_get_font_name ( + GTK_FONT_BUTTON (note->w_font)); + } + + stickynote_set_font(note, font_str, TRUE); +} + +/* Properties Dialog Callback : Color */ +void +properties_color_cb (GtkWidget *button, StickyNote *note) +{ + char *color_str = NULL; + char *font_color_str = NULL; + + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(note->w_def_color))) + { + GdkColor color; + GdkColor font_color; + + gtk_color_button_get_color ( + GTK_COLOR_BUTTON (note->w_color), + &color); + gtk_color_button_get_color ( + GTK_COLOR_BUTTON (note->w_font_color), + &font_color); + color_str = g_strdup_printf ("#%.2x%.2x%.2x", + color.red / 256, + color.green / 256, + color.blue / 256); + font_color_str = g_strdup_printf ("#%.2x%.2x%.2x", + font_color.red / 256, + font_color.green / 256, + font_color.blue / 256); + } + + stickynote_set_color (note, color_str, font_color_str, TRUE); + + g_free (color_str); + g_free (font_color_str); +} + +/* Properties Dialog Callback : Font */ +void properties_font_cb (GtkWidget *button, StickyNote *note) +{ + const char *font_str; + + font_str = gtk_font_button_get_font_name (GTK_FONT_BUTTON (button)); + + stickynote_set_font(note, font_str, TRUE); +} + +/* Properties Dialog Callback : Activate */ +void properties_activate_cb(GtkWidget *widget, StickyNote *note) +{ + gtk_dialog_response(GTK_DIALOG(note->w_properties), GTK_RESPONSE_CLOSE); +} |