Commit 16332064 authored by Alberts Muktupāvels's avatar Alberts Muktupāvels

sticky-notes: move notes callbacks to sticky-notes.c

parent 556c46b1
......@@ -24,8 +24,6 @@ libsticky_notes_applet_la_SOURCES = \
sticky-notes-applet.h \
sticky-notes-applet-callbacks.c \
sticky-notes-applet-callbacks.h \
sticky-notes-callbacks.c \
sticky-notes-callbacks.h \
sticky-notes-preferences.c \
sticky-notes-preferences.h \
util.c \
......
/* 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, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "sticky-notes-callbacks.h"
#include <glib/gi18n-lib.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 : 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 (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
stickynotes_add (gtk_widget_get_screen (note->w_window));
}
/* Popup Menu Callback : Destroy selected sticky note */
void
popup_destroy_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
stickynotes_remove (note);
}
/* Popup Menu Callback : Lock/Unlock selected sticky note */
void
popup_toggle_lock_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GVariant *state = g_action_get_state (G_ACTION (action));
g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
g_variant_unref (state);
}
void
popup_toggle_lock_state (GSimpleAction *action,
GVariant *value,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
gboolean locked = g_variant_get_boolean (value);
stickynote_set_locked (note, locked);
}
/* Popup Menu Callback : Change sticky note properties */
void
popup_properties_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
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)))
{
GdkRGBA color;
GdkRGBA font_color;
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (note->w_color), &color);
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (note->w_font_color), &font_color);
color_str = gdk_rgba_to_string (&color);
font_color_str = gdk_rgba_to_string (&font_color);
}
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)
{
properties_apply_color_cb (note);
}
/* Properties Dialog Callback : Font */
void
properties_font_cb (GtkWidget *button,
StickyNote *note)
{
const gchar *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);
}
/* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef __STICKYNOTES_CALLBACKS_H__
#define __STICKYNOTES_CALLBACKS_H__
#include "sticky-notes.h"
/* Callbacks for the sticky notes windows */
gboolean stickynote_toggle_lock_cb(GtkWidget *widget, StickyNote *note);
gboolean stickynote_close_cb(GtkWidget *widget, StickyNote *note);
gboolean stickynote_resize_cb(GtkWidget *widget, GdkEventButton *event, StickyNote *note);
gboolean stickynote_move_cb(GtkWidget *widget, GdkEventButton *event, StickyNote *note);
gboolean stickynote_configure_cb(GtkWidget *widget, GdkEventConfigure *event, StickyNote *note);
gboolean stickynote_delete_cb(GtkWidget *widget, GdkEvent *event, StickyNote *note);
gboolean stickynote_show_popup_menu(GtkWidget *widget, GdkEventButton *event, GtkWidget *popup_menu);
/* Callbacks for the sticky notes popup menu */
void popup_create_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
void popup_destroy_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
void popup_toggle_lock_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
void popup_toggle_lock_state (GSimpleAction *action,
GVariant *value,
gpointer user_data);
void popup_properties_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
/* Callbacks for sticky notes properties dialog */
void properties_apply_title_cb(StickyNote *note);
void properties_apply_color_cb(StickyNote *note);
void properties_apply_font_cb(StickyNote *note);
void properties_color_cb(GtkWidget *button, StickyNote *note);
void properties_font_cb(GtkWidget *button, StickyNote *note);
void properties_activate_cb(GtkWidget *widget, StickyNote *note);
#endif /* __STICKYNOTES_CALLBACKS_H__ */
......@@ -26,7 +26,6 @@
#include <libwnck/libwnck.h>
#include <string.h>
#include "sticky-notes-callbacks.h"
#include "util.h"
#include "sticky-notes-applet.h"
#include "gsettings.h"
......@@ -40,6 +39,54 @@ static gboolean save_scheduled = FALSE;
static void response_cb (GtkWidget *dialog, gint id, gpointer data);
static void
popup_create_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
stickynotes_add (gtk_widget_get_screen (note->w_window));
}
static void
popup_destroy_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
stickynotes_remove (note);
}
static void
popup_toggle_lock_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
GVariant *state = g_action_get_state (G_ACTION (action));
g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
g_variant_unref (state);
}
static void
popup_toggle_lock_state (GSimpleAction *action,
GVariant *value,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
gboolean locked = g_variant_get_boolean (value);
stickynote_set_locked (note, locked);
}
static void
popup_properties_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
StickyNote *note = (StickyNote *) user_data;
stickynote_change_properties (note);
}
/* Popup menu on the sticky note */
static const GActionEntry stickynotes_note_menu_actions [] = {
{ "create", popup_create_cb, NULL, NULL, NULL },
......@@ -125,6 +172,166 @@ set_icon_geometry (GdkWindow *window,
(guchar *)&data, 4);
}
static 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;
}
static gboolean
stickynote_toggle_lock_cb (GtkWidget *widget,
StickyNote *note)
{
stickynote_set_locked (note, !note->locked);
return TRUE;
}
static gboolean
stickynote_close_cb (GtkWidget *widget,
StickyNote *note)
{
stickynotes_remove (note);
return TRUE;
}
static 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;
}
static 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;
}
static 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;
}
static gboolean
stickynote_delete_cb (GtkWidget *widget,
GdkEvent *event,
StickyNote *note)
{
stickynotes_remove(note);
return TRUE;
}
static void
properties_apply_title_cb (StickyNote *note)
{
stickynote_set_title (note, gtk_entry_get_text (GTK_ENTRY (note->w_entry)));
}
static 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)))
{
GdkRGBA color;
GdkRGBA font_color;
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (note->w_color), &color);
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (note->w_font_color), &font_color);
color_str = gdk_rgba_to_string (&color);
font_color_str = gdk_rgba_to_string (&font_color);
}
stickynote_set_color (note, color_str, font_color_str, TRUE);
g_free (color_str);
g_free (font_color_str);
}
static void
properties_color_cb (GtkWidget *button,
StickyNote *note)
{
properties_apply_color_cb (note);
}
static void
properties_font_cb (GtkWidget *button,
StickyNote *note)
{
const gchar *font_str;
font_str = gtk_font_button_get_font_name (GTK_FONT_BUTTON (button));
stickynote_set_font (note, font_str, TRUE);
}
static 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);
}
static void
properties_activate_cb (GtkWidget *widget,
StickyNote *note)
{
gtk_dialog_response (GTK_DIALOG (note->w_properties), GTK_RESPONSE_CLOSE);
}
/* Called when a timeout occurs. */
static gboolean
timeout_happened (gpointer data)
......
......@@ -60,7 +60,6 @@ gnome-applets/netspeed/netspeed-applet.c
gnome-applets/netspeed/preferences.c
gnome-applets/sticky-notes/sticky-notes-applet.c
gnome-applets/sticky-notes/sticky-notes-applet-callbacks.c
gnome-applets/sticky-notes/sticky-notes-callbacks.c
gnome-applets/sticky-notes/sticky-notes.c
gnome-applets/sticky-notes/ui/sticky-notes-applet-menu.ui
gnome-applets/sticky-notes/ui/sticky-notes-delete-all.ui
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment