Second commit.
Adding actions.
This commit is contained in:
+4
-3
@@ -2,13 +2,13 @@ AM_CPPFLAGS = \
|
||||
-DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \
|
||||
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
|
||||
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \
|
||||
$(GNOME_CALENDAR_CFLAGS)
|
||||
$(CALENDAR_CFLAGS)
|
||||
|
||||
AM_CFLAGS =\
|
||||
-Wall\
|
||||
-g
|
||||
|
||||
bin_PROGRAMS = gnome_calendar
|
||||
bin_PROGRAMS = gnome-calendar
|
||||
|
||||
gnome_calendar_SOURCES = \
|
||||
main.c \
|
||||
@@ -18,6 +18,7 @@ gnome_calendar_SOURCES = \
|
||||
gnome_calendar_LDFLAGS = \
|
||||
-Wl,--export-dynamic
|
||||
|
||||
gnome_calendar_LDADD = $(GNOME_CALENDAR_LIBS)
|
||||
gnome_calendar_LDADD = \
|
||||
$(CALENDAR_LIBS)
|
||||
|
||||
|
||||
|
||||
+87
-22
@@ -20,42 +20,51 @@
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
|
||||
|
||||
G_DEFINE_TYPE (GcalApplication, gnome_calendar, GTK_TYPE_APPLICATION);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
gcal_application_new_window (GApplication *app,
|
||||
GFile *file)
|
||||
struct _GcalApplicationPrivate
|
||||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *window;
|
||||
};
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), _("Calendar"));
|
||||
|
||||
|
||||
gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));
|
||||
gtk_widget_show_all (GTK_WIDGET (window));
|
||||
}
|
||||
static void gcal_application_startup (GApplication *app);
|
||||
|
||||
static void _gcal_application_set_app_menu (GApplication *app);
|
||||
static void _gcal_application_show_about (GSimpleAction *simple,
|
||||
GVariant *parameter,
|
||||
gpointer user_data);
|
||||
static void _gcal_application_quit (GSimpleAction *simple,
|
||||
GVariant *parameter,
|
||||
gpointer user_data);
|
||||
|
||||
G_DEFINE_TYPE (GcalApplication, gcal_application, GTK_TYPE_APPLICATION);
|
||||
|
||||
/* GApplication implementation */
|
||||
static void
|
||||
gcal_application_activate (GApplication *application)
|
||||
{
|
||||
gcal_application_new_window (application, NULL);
|
||||
GcalApplication *app = GCAL_APPLICATION (application);
|
||||
|
||||
if (app->priv->window != NULL)
|
||||
gtk_window_present (GTK_WINDOW (app->priv->window));
|
||||
else
|
||||
{
|
||||
app->priv->window = gtk_application_window_new (GTK_APPLICATION (app));
|
||||
gtk_window_set_title (GTK_WINDOW (app->priv->window), _("Calendar"));
|
||||
|
||||
gtk_widget_show_all (GTK_WIDGET (app->priv->window));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_application_init (GcalApplication *object)
|
||||
gcal_application_init (GcalApplication *self)
|
||||
{
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||
GCAL_TYPE_APPLICATION,
|
||||
GcalApplicationPrivate);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_application_finalize (GObject *object)
|
||||
{
|
||||
|
||||
G_OBJECT_CLASS (gcal_application_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
@@ -63,9 +72,64 @@ static void
|
||||
gcal_application_class_init (GcalApplicationClass *klass)
|
||||
{
|
||||
G_APPLICATION_CLASS (klass)->activate = gcal_application_activate;
|
||||
G_APPLICATION_CLASS (klass)->open = gcal_application_open;
|
||||
G_APPLICATION_CLASS (klass)->startup = gcal_application_startup;
|
||||
|
||||
G_OBJECT_CLASS (klass)->finalize = gcal_application_finalize;
|
||||
|
||||
g_type_class_add_private ((gpointer) klass, sizeof(GcalApplicationPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_application_startup (GApplication *app)
|
||||
{
|
||||
G_APPLICATION_CLASS (gcal_application_parent_class)->startup (app);
|
||||
|
||||
_gcal_application_set_app_menu (app);
|
||||
}
|
||||
|
||||
static void
|
||||
_gcal_application_set_app_menu (GApplication *app)
|
||||
{
|
||||
GMenu *app_menu = g_menu_new ();
|
||||
|
||||
GSimpleAction *about = g_simple_action_new ("about", NULL);
|
||||
g_signal_connect (about,
|
||||
"activate",
|
||||
G_CALLBACK (_gcal_application_show_about),
|
||||
app);
|
||||
g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (about));
|
||||
g_menu_append (app_menu, _("About"), "app.about");
|
||||
|
||||
GSimpleAction *quit = g_simple_action_new ("quit", NULL);
|
||||
g_signal_connect (quit,
|
||||
"activate",
|
||||
G_CALLBACK (_gcal_application_quit),
|
||||
app);
|
||||
g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (quit));
|
||||
g_menu_append (app_menu, _("Quit"), "app.quit");
|
||||
|
||||
gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (app_menu));
|
||||
}
|
||||
|
||||
static void
|
||||
_gcal_application_show_about (GSimpleAction *simple,
|
||||
GVariant *parameter,
|
||||
gpointer user_data)
|
||||
{
|
||||
GcalApplication *app = GCAL_APPLICATION (user_data);
|
||||
|
||||
gtk_show_about_dialog (GTK_WINDOW (app->priv->window),
|
||||
"program-name", "Calendar",
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void _gcal_application_quit (GSimpleAction *simple,
|
||||
GVariant *parameter,
|
||||
gpointer user_data)
|
||||
{
|
||||
GApplication *app = G_APPLICATION (user_data);
|
||||
|
||||
g_application_quit (app);
|
||||
}
|
||||
|
||||
GcalApplication *
|
||||
@@ -73,8 +137,9 @@ gcal_application_new (void)
|
||||
{
|
||||
g_type_init ();
|
||||
|
||||
g_set_application_name ("Calendar");
|
||||
|
||||
return g_object_new (gcal_application_get_type (),
|
||||
"application-id", "org.gnome.Calendar",
|
||||
"flags", G_APPLICATION_HANDLES_COMMAND_LINE,
|
||||
NULL);
|
||||
}
|
||||
|
||||
@@ -31,9 +31,9 @@ G_BEGIN_DECLS
|
||||
#define GCAL_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GCAL_TYPE_APPLICATION))
|
||||
#define GCAL_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GCAL_TYPE_APPLICATION, GcalApplicationClass))
|
||||
|
||||
typedef struct _GcalApplicationClass GcalApplicationClass;
|
||||
typedef struct _GcalApplication GcalApplication;
|
||||
|
||||
typedef struct _GcalApplicationClass GcalApplicationClass;
|
||||
typedef struct _GcalApplication GcalApplication;
|
||||
typedef struct _GcalApplicationPrivate GcalApplicationPrivate;
|
||||
|
||||
struct _GcalApplicationClass
|
||||
{
|
||||
@@ -44,6 +44,7 @@ struct _GcalApplication
|
||||
{
|
||||
GtkApplication parent_instance;
|
||||
|
||||
GcalApplicationPrivate *priv;
|
||||
};
|
||||
|
||||
GType gcal_application_get_type (void) G_GNUC_CONST;
|
||||
|
||||
Reference in New Issue
Block a user