1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
11 #include "eggtrayicon.h"
15 docklet_destroy_cb(GtkWidget
*widget
) {
19 void about_dlg(GtkWidget
*mainwin
);
20 void menu_friends_manager(JamWin
*jw
);
23 docklet_menu(GtkWidget
*win
) {
24 static GtkWidget
*menu
= NULL
;
30 gtk_widget_destroy(menu
);
33 menu
= gtk_menu_new();
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
);
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
);
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());
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) {
90 if (GTK_WIDGET_VISIBLE(win
)) {
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
));
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
));
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",
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
;
151 docklet_enable(GtkWidget
*win
, gboolean enable
) {
152 if ((enable
== TRUE
) == (app
.docklet
!= NULL
))
158 gtk_widget_destroy(app
.docklet
);