示例#1
0
文件: core.c 项目: celiachen/hybrid
static void
ui_init(void)
{
    GtkWidget    *window;
    GtkWidget    *scroll;
    GtkWidget    *vbox;
    GtkWidget    *searchbox;

    /* initialize the status icon. */
    hybrid_status_icon_init();

    window = hybrid_create_window(_("Hybrid"), NULL, GTK_WIN_POS_CENTER, TRUE);
    gtk_window_set_default_size(GTK_WINDOW(window), 250, 500);

    hybrid_window = window;

    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(window), vbox);

    g_signal_connect(window, "delete_event", G_CALLBACK(window_delete), NULL);
    g_signal_connect(window, "destroy", G_CALLBACK(window_destroy), NULL);

    /* head area */
    hybrid_head_init();
    gtk_box_pack_start(GTK_BOX(vbox), hybrid_head->vbox, FALSE, FALSE, 10);

    /* search box */
    searchbox = hybrid_search_box_create();
    gtk_box_pack_start(GTK_BOX(vbox), searchbox, FALSE, FALSE, 0);

    /* scroll area (TreeView) */
    scroll = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll),
                                        GTK_SHADOW_ETCHED_IN);
    gtk_box_pack_start(GTK_BOX(vbox), scroll, TRUE, TRUE, 2);

    hybrid_vbox = gtk_vbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), hybrid_vbox, FALSE, FALSE, 5);

    hybrid_blist_init();

    gtk_container_add(GTK_CONTAINER(scroll), blist->treeview);

    /* menu bar */
    create_basic_menus(GTK_BOX(vbox));

    gtk_widget_show_all(window);
    gtk_widget_hide(hybrid_head->editbox);
}
示例#2
0
文件: buddyadd.c 项目: GCrean/hybrid
HybridBuddyAddWindow*
hybrid_buddyadd_window_create()
{
    HybridBuddyAddWindow *buddy;

    buddy = g_new0(HybridBuddyAddWindow, 1);

    buddy->window = hybrid_create_window(_("Add Buddy"), NULL,
                                         GTK_WIN_POS_CENTER, FALSE);
    gtk_widget_set_size_request(buddy->window, 420, 300);
    gtk_container_set_border_width(GTK_CONTAINER(buddy->window), 8);
    g_signal_connect(buddy->window, "destroy", G_CALLBACK(destroy_cb), buddy);

    hybrid_buddyadd_window_init(buddy);

    gtk_widget_show_all(buddy->window);

    return buddy;
}
示例#3
0
文件: groupadd.c 项目: GCrean/hybrid
HybridGroupAddWindow*
hybrid_groupadd_window_create()
{
    HybridGroupAddWindow *group;

    group = g_new0(HybridGroupAddWindow, 1);

    group->window = hybrid_create_window(_("Add Group"), NULL,
                                         GTK_WIN_POS_CENTER, FALSE);
    gtk_widget_set_size_request(group->window, 420, 200);
    gtk_container_set_border_width(GTK_CONTAINER(group->window), 5);
    g_signal_connect(group->window, "destroy", G_CALLBACK(destroy_cb), group);

    /* init the window. */
    groupadd_window_init(group);

    gtk_widget_show_all(group->window);

    return group;
}
示例#4
0
文件: about.c 项目: jxitc/hybrid
void
hybrid_about_create()
{
    GtkWidget *window;
    GtkWidget *vbox;
    GtkWidget *notebook;
    GtkWidget *scroll;
    GtkWidget *textview;
    GtkWidget *tablabel;
    GtkWidget *action_area;
    GtkWidget *button;

    hand_cursor = gdk_cursor_new (GDK_HAND2);
    regular_cursor = gdk_cursor_new (GDK_XTERM);

    window = hybrid_create_window(_("About Hybrid"), NULL,
                                  GTK_WIN_POS_CENTER, FALSE);
    gtk_widget_set_size_request(window, 460, 300);

    vbox = gtk_vbox_new(FALSE, 5);

    notebook = gtk_notebook_new();
    gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_LEFT);
    gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 5);

    tablabel = gtk_label_new(_("Introduction"));
    scroll = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
                                   GTK_POLICY_NEVER,
                                   GTK_POLICY_AUTOMATIC);
    textview = gtk_text_view_new();
    create_intro(GTK_TEXT_VIEW(textview));
    gtk_container_add(GTK_CONTAINER(scroll), textview);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
                             scroll, tablabel);

    tablabel = gtk_label_new(_("Developers"));
    scroll = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
                                   GTK_POLICY_NEVER,
                                   GTK_POLICY_AUTOMATIC);
    textview = gtk_text_view_new();
    create_contri(GTK_TEXT_VIEW(textview));
    gtk_container_add(GTK_CONTAINER(scroll), textview);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
                             scroll, tablabel);

    tablabel = gtk_label_new(_("License"));
    scroll = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
                                   GTK_POLICY_AUTOMATIC,
                                   GTK_POLICY_AUTOMATIC);
    textview = gtk_text_view_new();
    create_gpl(GTK_TEXT_VIEW(textview));
    gtk_container_add(GTK_CONTAINER(scroll), textview);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
                             scroll, tablabel);

    action_area = gtk_hbox_new(FALSE, 10);
    gtk_box_pack_start(GTK_BOX(vbox), action_area, FALSE, FALSE, 5);
    button = gtk_button_new_with_label(_("Close"));
    gtk_widget_set_usize(button, 90, 0);
    gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
    g_signal_connect(button, "clicked", G_CALLBACK(close_about), window);

    gtk_container_add(GTK_CONTAINER(window), vbox);
    gtk_widget_show_all(window);
}
示例#5
0
HybridMessageBox*
hybrid_message_box_show(HybridMessageType type,
						const gchar *format, ...)
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *hbox;
	GtkWidget *action_area;
	GdkPixbuf *pixbuf;
	GtkWidget *image;
	GtkWidget *label;
	GtkWidget *button;
	HybridMessageBox *msg_box;
	va_list vlist;
	gchar *message;
	const gchar *title_str;

	g_return_val_if_fail(format != NULL, NULL);

	msg_box = g_new0(HybridMessageBox, 1);

	if (type == HYBRID_MESSAGE_WARNING) {
		title_str = _("Warning");

	} else if (type == HYBRID_MESSAGE_INFO) {
		title_str = _("Information");

	} else {
		title_str = _("Message");
	}

	window = hybrid_create_window(title_str, NULL, GTK_WIN_POS_CENTER, TRUE);
	gtk_container_set_border_width(GTK_CONTAINER(window), 8);
	g_signal_connect(window, "destroy", G_CALLBACK(message_destroy), msg_box);

	msg_box->window = window;

	vbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(window), vbox);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);

	if (type == HYBRID_MESSAGE_WARNING) {
		pixbuf = gdk_pixbuf_new_from_file_at_size(
				PIXMAPS_DIR"icons/warning.png", 64, 64, NULL);

	} else {
		pixbuf = gdk_pixbuf_new_from_file_at_size(
				PIXMAPS_DIR"icons/info.png", 64, 64, NULL);
	}
	image = gtk_image_new_from_pixbuf(pixbuf);
	g_object_unref(pixbuf);

	gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 5);

	label = gtk_label_new(NULL);
	va_start(vlist, format);
	message = g_strdup_vprintf(format, vlist);
	gtk_label_set_markup(GTK_LABEL(label), message);
	g_free(message);
	va_end(vlist);

	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 5);

	action_area = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), action_area, FALSE, FALSE, 0);

	button = gtk_button_new_with_label(_("OK"));
	gtk_widget_set_size_request(button, 100, 30);
	gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
	g_signal_connect(button, "clicked",
			G_CALLBACK(message_ok_btn_cb), msg_box);

	gtk_widget_show_all(msg_box->window);

	return msg_box;
}
示例#6
0
HybridConfirm*
hybrid_confirm_show(const gchar *title, const gchar *text,
		const gchar *btn_text, confirm_cb btn_callback, gpointer user_data)
{
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *hbox;
	GtkWidget *action_area;
	GdkPixbuf *pixbuf;
	GtkWidget *image;
	GtkWidget *label;
	GtkWidget *button;
	HybridConfirm *confirm;

	g_return_val_if_fail(title != NULL, NULL);
	g_return_val_if_fail(text != NULL, NULL);

	confirm = g_new0(HybridConfirm, 1);
	confirm->btn_callback = btn_callback;
	confirm->user_data = user_data;

	window = hybrid_create_window(title, NULL, GTK_WIN_POS_CENTER, TRUE);
	gtk_container_set_border_width(GTK_CONTAINER(window), 8);
	g_signal_connect(window, "destroy", G_CALLBACK(confirm_destroy), confirm);

	confirm->window = window;

	vbox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(window), vbox);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);

	pixbuf = hybrid_create_default_icon(64);
	image = gtk_image_new_from_pixbuf(pixbuf);
	g_object_unref(pixbuf);

	gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 5);

	label = gtk_label_new(NULL);
	gtk_label_set_markup(GTK_LABEL(label), text);

	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 5);

	action_area = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), action_area, FALSE, FALSE, 0);

	button = gtk_button_new_with_label(btn_text);
	gtk_widget_set_size_request(button, 100, 30);
	gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
	g_signal_connect(button, "clicked",
			G_CALLBACK(confirm_user_btn_cb), confirm);

	button = gtk_button_new_with_label(_("Cancel"));
	gtk_widget_set_size_request(button, 100, 30);
	gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
	g_signal_connect(button, "clicked",
			G_CALLBACK(confirm_cancel_btn_cb), confirm);

	gtk_widget_show_all(confirm->window);

	return confirm;
}
示例#7
0
void
hybrid_confirm_window_create(HybridAccount           *account,
                             guchar                  *pic_data,
                             gint                     pic_len,
                             HybridConfirmOkFunc      ok_func,
                             HybridConfirmCancelFunc  cancel_func,
                             gpointer                 user_data)
{
    HybridConfirmWindow *con;
    GtkWidget           *vbox;
    GtkWidget           *table;
    GtkWidget           *action_area;
    GtkWidget           *button;
    GtkWidget           *label;
    GdkPixbuf           *pixbuf;

    con              = g_new0(HybridConfirmWindow, 1);
    con->account     = account;
    con->ok_func     = ok_func;
    con->cancel_func = cancel_func;
    con->user_data   = user_data;

    con->window = hybrid_create_window(_("Confirm Code"), NULL,
                                       GTK_WIN_POS_CENTER, FALSE);
    gtk_widget_set_size_request(con->window, 300, 200);
    gtk_container_set_border_width(GTK_CONTAINER(con->window), 8);
    g_signal_connect(con->window, "destroy", G_CALLBACK(destroy_cb), con);

    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(con->window), vbox);

    table = gtk_table_new(3, 3, FALSE);
    gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 5);

    label = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(label),
                         _("<i>Please input the following code in the picture:</i>"));
    gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 2, 0, 1);

    label = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(label), _("<i>Code:</i>"));
    gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
    gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);

    /* show code picture. */
    pixbuf     = hybrid_create_pixbuf(pic_data, pic_len);
    con->image = gtk_image_new_from_pixbuf(pixbuf);
    g_object_unref(pixbuf);

    gtk_table_attach_defaults(GTK_TABLE(table), con->image, 1, 2, 1, 2);

    con->entry = gtk_entry_new();
    g_signal_connect(con->entry, "activate", G_CALLBACK(ok_cb), con);
    gtk_table_attach_defaults(GTK_TABLE(table), con->entry, 0, 2, 2, 3);

    action_area = gtk_hbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), action_area, FALSE, FALSE, 5);

    button = gtk_button_new_with_label(_("OK"));
    gtk_widget_set_size_request(button, 100, 30);
    gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
    g_signal_connect(button, "clicked", G_CALLBACK(ok_cb), con);

    button = gtk_button_new_with_label(_("Cancel"));
    gtk_widget_set_size_request(button, 100, 30);
    gtk_box_pack_end(GTK_BOX(action_area), button, FALSE, FALSE, 5);
    g_signal_connect(button, "clicked", G_CALLBACK(cancel_cb), con);

    gtk_widget_show_all(con->window);
}