removed alot of warnings
[k8lowj.git] / src / docklet.c
blobd169b7e35c061a50bfc7b00642f1b4eec56c37ac
1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
5 */
7 #include "gtk-all.h"
9 #include "jam.h"
10 #include "conf.h"
11 #include "eggtrayicon.h"
12 #include "settings.h"
14 static void
15 docklet_destroy_cb(GtkWidget *widget) {
16 app.docklet = NULL;
19 void about_dlg(GtkWidget *mainwin);
20 void menu_friends_manager(JamWin *jw);
22 static void
23 docklet_menu(GtkWidget *win) {
24 static GtkWidget *menu = NULL;
25 /*GtkWidget *entry;*/
26 GtkWidget *menuitem;
27 GtkWidget *image;
29 if (menu) {
30 gtk_widget_destroy(menu);
33 menu = gtk_menu_new();
35 { /* About... */
36 menuitem = gtk_image_menu_item_new_with_mnemonic(_("About LogJam..."));
37 image = gtk_image_new_from_stock("logjam-goat", GTK_ICON_SIZE_MENU);
38 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
39 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
40 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(about_dlg), win);
41 gtk_widget_show_all(menuitem);
44 { /* Friends... */
45 menuitem = gtk_menu_item_new_with_mnemonic(_("Friends..."));
46 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
47 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(menu_friends_manager), win);
48 gtk_widget_show_all(menuitem);
51 { /* Preferences... */
52 menuitem = gtk_image_menu_item_new_with_mnemonic(_("Preferences..."));
53 image = gtk_image_new_from_stock(GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
54 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
55 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
56 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(settings_run), win);
57 gtk_widget_show_all(menuitem);
60 { /* -------------- */
61 menuitem = gtk_separator_menu_item_new();
62 gtk_widget_show(menuitem);
63 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
66 { /* Quit */
67 menuitem = gtk_image_menu_item_new_with_mnemonic(_("Quit"));
68 image = gtk_image_new_from_stock(GTK_STOCK_QUIT, GTK_ICON_SIZE_MENU);
69 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
70 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
71 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(jam_quit), win);
72 gtk_widget_show_all(menuitem);
75 gtk_widget_show_all(menu);
76 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
77 NULL /*ui_ops->position_menu*/,
78 NULL, 0, gtk_get_current_event_time());
82 static gboolean
83 click_cb(GtkWidget* w, GdkEventButton *ev, GtkWidget *win) {
84 /* right-clicks start context menu (note: this case is terminal) */
85 if (ev->button == 3) {
86 docklet_menu(win);
87 return TRUE;
90 if (GTK_WIDGET_VISIBLE(win)) {
91 gtk_widget_hide(win);
92 } else {
93 gtk_widget_show(win);
96 #if 0
97 /* *all* left-clicks move CF_NEW to CF_ON */
98 if (cfm->state == CF_NEW) {
99 cfmgr_set_state(cfm, CF_ON);
101 /* and double-clicks open up the browser, too */
102 if (ev->type==GDK_2BUTTON_PRESS) {
103 open_friends_list(GTK_WINDOW(cfi->parent));
105 return TRUE;
108 /* this help box will only be called once in a double-click,
109 * thankfully, because the above is terminal on double-clicks. */
110 if (cfm->state == CF_DISABLED) {
111 jam_message(GTK_WINDOW(cfi->parent), JAM_MSG_INFO, TRUE,
112 _("Check Friends"), _(cf_help));
114 #endif
116 return TRUE;
119 void
120 docklet_setup(GtkWidget *win) {
121 EggTrayIcon *docklet;
123 GtkWidget *box, *image;
125 image = gtk_image_new();
126 gtk_image_set_from_stock(GTK_IMAGE(image), "logjam-goat",
127 GTK_ICON_SIZE_MENU);
129 box = gtk_event_box_new();
130 gtk_tooltips_set_tip(app.tooltips, box, _("LogJam"), _("LogJam"));
131 gtk_container_set_border_width(GTK_CONTAINER(box), 3);
132 gtk_container_add(GTK_CONTAINER(box), image);
134 docklet = egg_tray_icon_new("LogJam");
136 /* This could be used to tell the calling app that the docklet has been
137 * successfully embedded into a dock :
138 * g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(cf_docklet_embedded), NULL); */
139 g_signal_connect(G_OBJECT(docklet), "destroy",
140 G_CALLBACK(docklet_destroy_cb), NULL);
141 g_signal_connect(G_OBJECT(box), "button_press_event",
142 G_CALLBACK(click_cb), win);
144 gtk_container_add(GTK_CONTAINER(docklet), box);
145 gtk_widget_show_all(GTK_WIDGET(docklet));
147 app.docklet = docklet;
150 void
151 docklet_enable(GtkWidget *win, gboolean enable) {
152 if ((enable == TRUE) == (app.docklet != NULL))
153 return;
155 if (enable) {
156 docklet_setup(win);
157 } else {
158 gtk_widget_destroy(app.docklet);