/***
* Author: cc0cc
* E-mail: cc0cc@126.com
* WebSite: http://www.54chen.com
* Date: the Mid-Autumn Festival of 2008
* FileName: main.c
***/
/*
* Initial main.c file generated by Glade. Edit as required.
* Glade will not overwrite this file.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <gtk/gtk.h>
#include <pthread.h>
#include <gnome.h>
/*如果没记错的话eggtrayicon.h/tray.h都是在Linux用来做系统托盘的头文件,参见
*http://hi.baidu.com/cc0cc/blog/item/26da147a4a428ce92f73b3da.html
*/
#include "eggtrayicon.h"
#include "tray.h"
#include "interface.h"
#include "support.h"
#include "connect.h"
/*系统托盘*/
static void activate_action (GtkAction * action);
static void net_quit (GtkAction * action);
static const gchar *ui_info =
"<ui>"
" <popup name='PopupMenu'>"
" <menuitem action='About'/>"
" <separator/>"
" <menuitem action='Quit'/>"
" </popup>"
"</ui>";
static GtkActionEntry entries[] = {
{"Quit", GTK_STOCK_QUIT, /* name, stock id */
N_("_断开"), "<control>Q", /* label, accelerator */
N_("Quit"), /* tooltip */
G_CALLBACK (net_quit)},
{"About", GTK_STOCK_ABOUT, /* name, stock id */
N_( "_关于"), "<control>A", /* label, accelerator 关于断开*/
N_("About"), /* tooltip */
G_CALLBACK (activate_action)},
};static guint n_entries = G_N_ELEMENTS (entries);
/*系统托盘END*/
/*GTK程序入口*/
int
main (int argc, char *argv[])
{
GtkUIManager *ui;
GError *error = NULL;
GtkActionGroup *actions;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
argc, argv,
GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR,
NULL);
window1 = create_window1 ();//这是第一个界面,也就是一出来的时候等待输入密码进行连接的界面
//g_thread_create(thread1,NULL,NULL,NULL);//wait for the book :)
//pthread_create(&tid,NULL,thread1,NULL);//it is not so good!
tray = g_new0 (tray_demo, 1);//这里开始弄系统托盘
tray->window_main = window1;
create_tray(tray);
actions = gtk_action_group_new ("Actions");
gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);
gtk_action_group_add_actions (actions, entries, n_entries, NULL);
ui = gtk_ui_manager_new ();
gtk_ui_manager_insert_action_group (ui, actions, 0);
gtk_window_add_accel_group (GTK_WINDOW (window1),
gtk_ui_manager_get_accel_group (ui));
if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error))
{
g_message ("building menus failed: %s", error->message);
g_error_free (error);
}
tray->ui = ui;
tray->actions = actions;
tray->menus = gtk_ui_manager_get_widget (ui, "/PopupMenu");//这段代码可以在gnome的网站上找到。。:)
g_message("ccc");
gtk_widget_show (window1);
gtk_main ();g_message("here2!");
return 0;
}
//下面两个都是为系统托盘的事件做的
static void
activate_action (GtkAction * action)
{ GtkWidget *about;
about = create_aboutdialog1 ();
gtk_widget_show (about);
return;
}
static void
net_quit (GtkAction * action)
{
Acc_Keep_Link=-1;
gtk_widget_show_all (window1);
send_access_request();
//g_message("net_quit!");
}
/***
* Author: cc0cc
* E-mail: cc0cc@126.com
* WebSite: http://www.54chen.com
* Date: the Mid-Autumn Festival of 2008
***/
原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
捐赠说明