project: remove libgd dependency

This patch fixes bug #737729, removing all libgd dependencies.

Every GdHeaderButton was replaced by GtkButton, and GdNotification was replaced by a custom-styled GtkFrame inside a GtkRevealer.
This commit is contained in:
Georges Basile Stavracas Neto
2014-12-04 17:10:40 -05:00
committed by Erick Pérez Castellanos
parent 6fa533ba79
commit a5c65af0fb
7 changed files with 100 additions and 62 deletions
-3
View File
@@ -1,3 +0,0 @@
[submodule "libgd"]
path = libgd
url = git://git.gnome.org/libgd
+2 -2
View File
@@ -1,6 +1,6 @@
ACLOCAL_AMFLAGS = -I m4 -I libgd ${ACLOCAL_FLAGS}
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
SUBDIRS = libgd src data po
SUBDIRS = src data po
gnome_calendardocdir = ${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}
gnome_calendardoc_DATA = \
-1
View File
@@ -5,7 +5,6 @@ srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
PKG_NAME="gnome-calendar"
ACLOCAL_FLAGS="-I libgd $ACLOCAL_FLAGS"
(test -f $srcdir/configure.ac \
&& test -d $srcdir/src) || {
-8
View File
@@ -96,16 +96,8 @@ PKG_CHECK_MODULES(CALENDAR,
libedataserver-1.2 >= $EDATASERVER_REQUIRED
libical >= $LIBICAL_REQUIRED)
LIBGD_INIT([
_header-button
notification
static
tagged-entry
])
AC_CONFIG_FILES([
Makefile
libgd/Makefile
src/Makefile
data/Makefile
data/gnome-calendar.desktop.in
Submodule libgd deleted from a1f7543729
-2
View File
@@ -3,7 +3,6 @@ AM_CPPFLAGS = \
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \
-DUI_DATA_DIR=\""$(pkgdatadir)/style"\" \
-I$(top_srcdir)/libgd \
$(MAINTAINER_COMPILER_FLAGS) \
$(WARN_CFLAGS) \
-DEDS_DISABLE_DEPRECATED \
@@ -66,7 +65,6 @@ gnome_calendar_LDFLAGS = \
gnome_calendar_LDADD = \
-lm \
$(top_builddir)/libgd/libgd.la \
$(CALENDAR_LIBS)
resource_files = $(shell glib-compile-resources --sourcedir=$(top_srcdir)/data --generate-dependencies $(top_srcdir)/data/calendar.gresource.xml)
+98 -45
View File
@@ -35,8 +35,6 @@
#include "e-cell-renderer-color.h"
#include <libgd/gd.h>
#include <glib/gi18n.h>
#include <libecal/libecal.h>
@@ -65,8 +63,8 @@ typedef struct
GtkWidget *nav_bar;
GtkWidget *views_overlay;
GtkWidget *views_stack;
GtkWidget *notification;
GtkWidget *new_event_widget;
GtkWidget *noty; /* short-lived */
GtkWidget *popover; /* short-lived */
/* header_bar widets */
@@ -141,6 +139,11 @@ static void close_new_event_widget (GtkButton *b
static GcalManager* get_manager (GcalWindow *window);
static void create_notification (GcalWindow *window);
static void hide_notification (GtkWidget *button,
gpointer user_data);
/* handling events interaction */
static void create_event (gpointer user_data,
GtkWidget *widget);
@@ -199,7 +202,8 @@ static void gcal_window_event_created (GcalManager *m
const gchar *event_uid,
gpointer user_data);
static void gcal_window_remove_event (GdNotification *notification,
static void gcal_window_remove_event (GtkWidget *notification,
GParamSpec *spec,
gpointer user_data);
static void gcal_window_undo_remove_event (GtkButton *button,
@@ -632,6 +636,77 @@ get_manager (GcalWindow *window)
return gcal_application_get_manager (app);
}
static void
create_notification (GcalWindow *window)
{
GcalWindowPrivate *priv;
GtkWidget *notification_frame;
GtkWidget *notification_grid;
GtkWidget *undo_button;
GtkWidget *hide_button;
priv = gcal_window_get_instance_private (window);
priv->notification = gtk_revealer_new ();
gtk_revealer_set_transition_type (
GTK_REVEALER (priv->notification),
GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
gtk_revealer_set_transition_duration (GTK_REVEALER (priv->notification), 100);
gtk_widget_set_halign (priv->notification, GTK_ALIGN_CENTER);
gtk_widget_set_valign (priv->notification, GTK_ALIGN_START);
gtk_overlay_add_overlay (GTK_OVERLAY (priv->views_overlay),
priv->notification);
notification_frame = gtk_frame_new (NULL);
gtk_style_context_add_class (
gtk_widget_get_style_context (notification_frame),
"app-notification");
/* notification content */
notification_grid = gtk_grid_new ();
gtk_grid_set_column_spacing (GTK_GRID (notification_grid), 20);
undo_button = gtk_button_new_with_label (_("Undo"));
gtk_widget_set_valign (undo_button, GTK_ALIGN_CENTER);
hide_button = gtk_button_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
gtk_button_set_relief (GTK_BUTTON (hide_button), GTK_RELIEF_NONE);
gtk_style_context_add_class (
gtk_widget_get_style_context (hide_button),
"image-button");
gtk_container_add (GTK_CONTAINER (notification_grid), gtk_label_new (_("Event deleted")));
gtk_container_add (GTK_CONTAINER (notification_grid), undo_button);
gtk_container_add (GTK_CONTAINER (notification_grid), hide_button);
gtk_container_add (GTK_CONTAINER (notification_frame), notification_grid);
gtk_container_add (GTK_CONTAINER (priv->notification), notification_frame);
gtk_widget_show_all (priv->notification);
g_signal_connect (hide_button,
"clicked",
G_CALLBACK (hide_notification),
window);
g_signal_connect (priv->notification,
"notify::child-revealed",
G_CALLBACK (gcal_window_remove_event),
window);
g_signal_connect (undo_button,
"clicked",
G_CALLBACK (gcal_window_undo_remove_event),
window);
}
static void
hide_notification (GtkWidget *button,
gpointer user_data)
{
gcal_window_hide_notification (GCAL_WINDOW (user_data));
}
static void
create_event (gpointer user_data,
GtkWidget *widget)
@@ -714,9 +789,6 @@ edit_dialog_closed (GtkDialog *dialog,
GcalEditDialog *edit_dialog;
GcalView *view;
GtkWidget *grid;
GtkWidget *undo_button;
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
gtk_widget_hide (GTK_WIDGET (dialog));
@@ -729,30 +801,12 @@ edit_dialog_closed (GtkDialog *dialog,
{
case GCAL_RESPONSE_DELETE_EVENT:
/* delete the event */
if (priv->noty != NULL)
g_clear_object (&(priv->noty));
if (priv->notification != NULL)
g_clear_object (&(priv->notification));
priv->noty = gd_notification_new ();
grid = gtk_grid_new ();
gtk_grid_set_column_spacing (GTK_GRID (grid), 12);
gtk_container_add (GTK_CONTAINER (grid),
gtk_label_new (_("Event deleted")));
undo_button = gtk_button_new_with_label (_("Undo"));
gtk_container_add (GTK_CONTAINER (grid), undo_button);
gtk_container_add (GTK_CONTAINER (priv->noty), grid);
create_notification (GCAL_WINDOW (user_data));
gcal_window_show_notification (GCAL_WINDOW (user_data));
g_signal_connect (priv->noty,
"dismissed",
G_CALLBACK (gcal_window_remove_event),
user_data);
g_signal_connect (undo_button,
"clicked",
G_CALLBACK (gcal_window_undo_remove_event),
user_data);
priv->event_to_delete =
gcal_edit_dialog_get_event_uuid (edit_dialog);
@@ -854,9 +908,7 @@ gcal_window_constructed (GObject *object)
priv->header_bar = gtk_header_bar_new ();
/* header_bar: new */
priv->new_button = gd_header_simple_button_new ();
gd_header_button_set_label (GD_HEADER_BUTTON (priv->new_button),
_("New Event"));
priv->new_button = gtk_button_new_with_label (_("New Event"));
gtk_style_context_add_class (
gtk_widget_get_style_context (priv->new_button),
"suggested-action");
@@ -868,17 +920,14 @@ gcal_window_constructed (GObject *object)
priv->views_switcher);
/* header_bar: menu */
menu_button = gd_header_menu_button_new ();
gd_header_button_set_label (GD_HEADER_BUTTON (menu_button),
_("Settings"));
gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (menu_button),
"open-menu-symbolic");
menu_button = gtk_button_new_from_icon_name ("open-menu-symbolic", GTK_ICON_SIZE_MENU);
gtk_header_bar_pack_end (GTK_HEADER_BAR (priv->header_bar), menu_button);
/* header_bar: search */
search_button = gd_header_toggle_button_new ();
gd_header_button_set_symbolic_icon_name (GD_HEADER_BUTTON (search_button),
"edit-find-symbolic");
search_button = gtk_toggle_button_new ();
gtk_container_add (
GTK_CONTAINER (search_button),
gtk_image_new_from_icon_name ("edit-find-symbolic", GTK_ICON_SIZE_MENU));
gtk_header_bar_pack_end (GTK_HEADER_BAR (priv->header_bar), search_button);
gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (priv->header_bar),
@@ -1323,7 +1372,8 @@ gcal_window_event_created (GcalManager *manager,
}
static void
gcal_window_remove_event (GdNotification *notification,
gcal_window_remove_event (GtkWidget *notification,
GParamSpec *spec,
gpointer user_data)
{
GcalWindowPrivate *priv;
@@ -1332,6 +1382,9 @@ gcal_window_remove_event (GdNotification *notification,
priv = gcal_window_get_instance_private (GCAL_WINDOW (user_data));
if (gtk_revealer_get_child_revealed (GTK_REVEALER (notification)))
return;
if (priv->event_to_delete != NULL)
{
manager = get_manager (GCAL_WINDOW (user_data));
@@ -1345,7 +1398,7 @@ gcal_window_remove_event (GdNotification *notification,
}
/* since this is called when the notification is dismissed is safe to do here: */
priv->noty = NULL;
gtk_widget_destroy (priv->notification);
}
static void
@@ -1496,9 +1549,8 @@ gcal_window_show_notification (GcalWindow *window)
GcalWindowPrivate *priv;
priv = gcal_window_get_instance_private (window);
gtk_overlay_add_overlay (GTK_OVERLAY (priv->views_overlay),
priv->noty);
gtk_widget_show_all (priv->noty);
gtk_revealer_set_reveal_child (GTK_REVEALER (priv->notification), TRUE);
}
void
@@ -1507,5 +1559,6 @@ gcal_window_hide_notification (GcalWindow *window)
GcalWindowPrivate *priv;
priv = gcal_window_get_instance_private (window);
gd_notification_dismiss (GD_NOTIFICATION (priv->noty));
gtk_revealer_set_reveal_child (GTK_REVEALER (priv->notification), FALSE);
}