static void book_shell_content_restore_state_cb (EShellWindow *shell_window, EShellView *shell_view, EShellContent *shell_content) { EBookShellContentPrivate *priv; GConfBridge *bridge; GObject *object; const gchar *key; priv = E_BOOK_SHELL_CONTENT (shell_content)->priv; /* Bind GObject properties to GConf keys. */ bridge = gconf_bridge_get (); object = G_OBJECT (priv->paned); key = "/apps/evolution/addressbook/display/hpane_position"; gconf_bridge_bind_property_delayed (bridge, key, object, "hposition"); object = G_OBJECT (priv->paned); key = "/apps/evolution/addressbook/display/vpane_position"; gconf_bridge_bind_property_delayed (bridge, key, object, "vposition"); }
static struct _send_data * build_dialog (EAccountList *accounts, CamelFolder *outbox, const char *destination) { GtkDialog *gd; GtkWidget *table; int row, num_sources; GList *list = NULL; struct _send_data *data; GtkWidget *send_icon; GtkWidget *recv_icon; GtkWidget *scrolled_window; GtkWidget *label; GtkWidget *status_label; GtkWidget *progress_bar; GtkWidget *cancel_button; struct _send_info *info; char *pretty_url; EAccount *account; EIterator *iter; GList *icon_list; EMEventTargetSendReceive *target; gd = (GtkDialog *)(send_recv_dialog = gtk_dialog_new_with_buttons(_("Send & Receive Mail"), NULL, GTK_DIALOG_NO_SEPARATOR, NULL)); gtk_window_set_modal ((GtkWindow *) gd, FALSE); gconf_bridge_bind_window_size ( gconf_bridge_get (), GCONF_KEY_PREFIX, GTK_WINDOW (send_recv_dialog)); gtk_widget_ensure_style ((GtkWidget *)gd); gtk_container_set_border_width ((GtkContainer *)gd->vbox, 0); gtk_container_set_border_width ((GtkContainer *)gd->action_area, 6); cancel_button = gtk_button_new_with_mnemonic (_("Cancel _All")); gtk_button_set_image ( GTK_BUTTON (cancel_button), gtk_image_new_from_stock ( GTK_STOCK_CANCEL, GTK_ICON_SIZE_BUTTON)); gtk_widget_show (cancel_button); gtk_dialog_add_action_widget (gd, cancel_button, GTK_RESPONSE_CANCEL); icon_list = e_icon_factory_get_icon_list ("mail-send-receive"); if (icon_list) { gtk_window_set_icon_list (GTK_WINDOW (gd), icon_list); g_list_foreach (icon_list, (GFunc) g_object_unref, NULL); g_list_free (icon_list); } num_sources = 0; iter = e_list_get_iterator ((EList *) accounts); while (e_iterator_is_valid (iter)) { account = (EAccount *) e_iterator_get (iter); if (account->source->url) num_sources++; e_iterator_next (iter); } g_object_unref (iter); table = gtk_table_new (num_sources, 4, FALSE); gtk_container_set_border_width (GTK_CONTAINER (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width ( GTK_CONTAINER (scrolled_window), 6); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW (scrolled_window), table); gtk_box_pack_start ( GTK_BOX (gd->vbox), scrolled_window, TRUE, TRUE, 0); gtk_widget_show (scrolled_window); /* must bet setup after send_recv_dialog as it may re-trigger send-recv button */ data = setup_send_data (); row = 0; iter = e_list_get_iterator ((EList *) accounts); while (e_iterator_is_valid (iter)) { EAccountService *source; account = (EAccount *) e_iterator_get (iter); source = account->source; if (!account->enabled || !source->url) { e_iterator_next (iter); continue; } /* see if we have an outstanding download active */ info = g_hash_table_lookup (data->active, source->url); if (info == NULL) { send_info_t type; type = get_receive_type (source->url); if (type == SEND_INVALID || type == SEND_SEND) { e_iterator_next (iter); continue; } info = g_malloc0 (sizeof (*info)); info->type = type; d(printf("adding source %s\n", source->url)); info->uri = g_strdup (source->url); info->keep = source->keep_on_server; info->cancel = camel_operation_new (operation_status, info); info->state = SEND_ACTIVE; info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info); g_hash_table_insert (data->active, info->uri, info); list = g_list_prepend (list, info); } else if (info->progress_bar != NULL) { /* incase we get the same source pop up again */ e_iterator_next (iter); continue; } else if (info->timeout_id == 0) info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info); recv_icon = e_icon_factory_get_image ( "mail-inbox", E_ICON_SIZE_LARGE_TOOLBAR); pretty_url = format_url (source->url, account->name); label = gtk_label_new (NULL); gtk_label_set_ellipsize ( GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_label_set_markup (GTK_LABEL (label), pretty_url); g_free (pretty_url); progress_bar = gtk_progress_bar_new (); cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); status_label = gtk_label_new ( (info->type == SEND_UPDATE) ? _("Updating...") : _("Waiting...")); gtk_label_set_ellipsize ( GTK_LABEL (status_label), PANGO_ELLIPSIZE_END); /* g_object_set(data->label, "bold", TRUE, NULL); */ gtk_misc_set_alignment (GTK_MISC (label), 0, .5); gtk_misc_set_alignment (GTK_MISC (status_label), 0, .5); gtk_table_attach ( GTK_TABLE (table), recv_icon, 0, 1, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), label, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), progress_bar, 2, 3, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), cancel_button, 3, 4, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), status_label, 1, 2, row+1, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0); info->progress_bar = progress_bar; info->status_label = status_label; info->cancel_button = cancel_button; info->data = data; g_signal_connect ( cancel_button, "clicked", G_CALLBACK (receive_cancel), info); e_iterator_next (iter); row = row + 2; } g_object_unref (iter); /* Hook: If some one wants to hook on to the sendreceive dialog, this is the way to go. */ target = em_event_target_new_send_receive (em_event_peek(), table, data, row, EM_EVENT_SEND_RECEIVE); e_event_emit ((EEvent *)em_event_peek (), "mail.sendreceive", (EEventTarget *) target); if (outbox && destination) { info = g_hash_table_lookup (data->active, SEND_URI_KEY); if (info == NULL) { info = g_malloc0 (sizeof (*info)); info->type = SEND_SEND; d(printf("adding dest %s\n", destination)); info->uri = g_strdup (destination); info->keep = FALSE; info->cancel = camel_operation_new (operation_status, info); info->state = SEND_ACTIVE; info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info); g_hash_table_insert (data->active, SEND_URI_KEY, info); list = g_list_prepend (list, info); } else if (info->timeout_id == 0) info->timeout_id = g_timeout_add (STATUS_TIMEOUT, operation_status_timeout, info); send_icon = e_icon_factory_get_image ( "mail-outbox", E_ICON_SIZE_LARGE_TOOLBAR); pretty_url = format_url (destination, NULL); label = gtk_label_new (NULL); gtk_label_set_ellipsize ( GTK_LABEL (label), PANGO_ELLIPSIZE_END); gtk_label_set_markup (GTK_LABEL (label), pretty_url); g_free (pretty_url); progress_bar = gtk_progress_bar_new (); cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); status_label = gtk_label_new (_("Waiting...")); gtk_label_set_ellipsize ( GTK_LABEL (status_label), PANGO_ELLIPSIZE_END); gtk_misc_set_alignment (GTK_MISC (label), 0, .5); gtk_misc_set_alignment (GTK_MISC (status_label), 0, .5); gtk_table_attach ( GTK_TABLE (table), send_icon, 0, 1, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), label, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), progress_bar, 2, 3, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), cancel_button, 3, 4, row, row+2, 0, 0, 0, 0); gtk_table_attach ( GTK_TABLE (table), status_label, 1, 2, row+1, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0); info->progress_bar = progress_bar; info->cancel_button = cancel_button; info->data = data; info->status_label = status_label; g_signal_connect ( cancel_button, "clicked", G_CALLBACK (receive_cancel), info); gtk_widget_show_all (table); } gtk_widget_show (GTK_WIDGET (gd)); g_signal_connect (gd, "response", G_CALLBACK (dialog_response), data); g_object_weak_ref ((GObject *) gd, (GWeakNotify) dialog_destroy_cb, data); data->infos = list; data->gd = gd; return data; }
/** * gva_main_init: * * Initializes the main window. * * This function should be called once when the application starts. **/ void gva_main_init (void) { gchar *text; gva_tree_view_init (); gtk_box_pack_start ( GTK_BOX (GVA_WIDGET_MAIN_VBOX), gva_ui_get_managed_widget ("/main-menu"), FALSE, FALSE, 0); gtk_action_connect_proxy ( GVA_ACTION_VIEW_AVAILABLE, GVA_WIDGET_MAIN_VIEW_BUTTON_0); gtk_action_connect_proxy ( GVA_ACTION_VIEW_FAVORITES, GVA_WIDGET_MAIN_VIEW_BUTTON_1); gtk_action_connect_proxy ( GVA_ACTION_VIEW_RESULTS, GVA_WIDGET_MAIN_VIEW_BUTTON_2); gtk_action_connect_proxy ( GVA_ACTION_PROPERTIES, GVA_WIDGET_MAIN_PROPERTIES_BUTTON); gtk_action_connect_proxy ( GVA_ACTION_START, GVA_WIDGET_MAIN_START_GAME_BUTTON); gtk_widget_set_sensitive ( GVA_WIDGET_MAIN_MUTE_BUTTON, gva_mame_supports_sound ()); gconf_bridge_bind_property ( gconf_bridge_get (), GVA_GCONF_SOUND_MUTED, G_OBJECT (GVA_WIDGET_MAIN_MUTE_BUTTON), "muted"); gconf_bridge_bind_window ( gconf_bridge_get (), GVA_GCONF_WINDOW_PREFIX, GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW), TRUE, FALSE); /* Initialize the search entry. */ text = gva_main_get_last_search_text (); gtk_entry_set_text (GTK_ENTRY (GVA_WIDGET_MAIN_SEARCH_ENTRY), text); g_free (text); #if !GTK_CHECK_VERSION(2,14,0) && !defined WITH_GNOME /* Requires that we link against libgnome. */ gtk_action_set_sensitive (GVA_ACTION_CONTENTS, FALSE); #endif gtk_action_set_sensitive (GVA_ACTION_PROPERTIES, FALSE); gtk_action_set_sensitive (GVA_ACTION_RECORD, FALSE); gtk_action_set_sensitive (GVA_ACTION_SEARCH, FALSE); gtk_action_set_sensitive (GVA_ACTION_SHOW_CLONES, FALSE); gtk_action_set_sensitive (GVA_ACTION_START, FALSE); gtk_action_set_sensitive (GVA_ACTION_VIEW_AVAILABLE, FALSE); gtk_action_set_sensitive (GVA_ACTION_VIEW_FAVORITES, FALSE); gtk_action_set_sensitive (GVA_ACTION_VIEW_RESULTS, FALSE); gtk_action_set_visible (GVA_ACTION_INSERT_FAVORITE, FALSE); gtk_action_set_visible (GVA_ACTION_REMOVE_FAVORITE, FALSE); gtk_window_present (GTK_WINDOW (GVA_WIDGET_MAIN_WINDOW)); }
void e_book_shell_view_actions_init (EBookShellView *book_shell_view) { EBookShellContent *book_shell_content; EShellView *shell_view; EShellWindow *shell_window; EShellSearchbar *searchbar; EPreviewPane *preview_pane; EWebView *web_view; GtkActionGroup *action_group; GConfBridge *bridge; GtkAction *action; GObject *object; const gchar *key; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); book_shell_content = book_shell_view->priv->book_shell_content; searchbar = e_book_shell_content_get_searchbar (book_shell_content); preview_pane = e_book_shell_content_get_preview_pane (book_shell_content); web_view = e_preview_pane_get_web_view (preview_pane); /* Contact Actions */ action_group = ACTION_GROUP (CONTACTS); gtk_action_group_add_actions ( action_group, contact_entries, G_N_ELEMENTS (contact_entries), book_shell_view); e_action_group_add_popup_actions ( action_group, contact_popup_entries, G_N_ELEMENTS (contact_popup_entries)); gtk_action_group_add_toggle_actions ( action_group, contact_toggle_entries, G_N_ELEMENTS (contact_toggle_entries), book_shell_view); gtk_action_group_add_radio_actions ( action_group, contact_view_entries, G_N_ELEMENTS (contact_view_entries), -1, G_CALLBACK (action_contact_view_cb), book_shell_view); gtk_action_group_add_radio_actions ( action_group, contact_search_entries, G_N_ELEMENTS (contact_search_entries), -1, NULL, NULL); /* Advanced Search Action */ action = ACTION (CONTACT_SEARCH_ADVANCED_HIDDEN); gtk_action_set_visible (action, FALSE); e_shell_searchbar_set_search_option ( searchbar, GTK_RADIO_ACTION (action)); /* Lockdown Printing Actions */ action_group = ACTION_GROUP (LOCKDOWN_PRINTING); gtk_action_group_add_actions ( action_group, lockdown_printing_entries, G_N_ELEMENTS (lockdown_printing_entries), book_shell_view); e_action_group_add_popup_actions ( action_group, lockdown_printing_popup_entries, G_N_ELEMENTS (lockdown_printing_popup_entries)); /* Lockdown Save-to-Disk Actions */ action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK); gtk_action_group_add_actions ( action_group, lockdown_save_to_disk_entries, G_N_ELEMENTS (lockdown_save_to_disk_entries), book_shell_view); e_action_group_add_popup_actions ( action_group, lockdown_save_to_disk_popup_entries, G_N_ELEMENTS (lockdown_save_to_disk_popup_entries)); /* Bind GObject properties to GConf keys. */ bridge = gconf_bridge_get (); object = G_OBJECT (ACTION (CONTACT_PREVIEW)); key = "/apps/evolution/addressbook/display/show_preview"; gconf_bridge_bind_property (bridge, key, object, "active"); object = G_OBJECT (ACTION (CONTACT_VIEW_VERTICAL)); key = "/apps/evolution/addressbook/display/layout"; gconf_bridge_bind_property (bridge, key, object, "current-value"); object = G_OBJECT (ACTION (CONTACT_PREVIEW_SHOW_MAPS)); key = "/apps/evolution/addressbook/display/preview_show_maps"; gconf_bridge_bind_property (bridge, key, object, "active"); /* Fine tuning. */ g_signal_connect ( ACTION (GAL_SAVE_CUSTOM_VIEW), "activate", G_CALLBACK (action_gal_save_custom_view_cb), book_shell_view); g_object_bind_property ( ACTION (CONTACT_PREVIEW), "active", ACTION (CONTACT_VIEW_CLASSIC), "sensitive", G_BINDING_SYNC_CREATE); g_object_bind_property ( ACTION (CONTACT_PREVIEW), "active", ACTION (CONTACT_VIEW_VERTICAL), "sensitive", G_BINDING_SYNC_CREATE); g_object_bind_property ( ACTION (CONTACT_PREVIEW), "active", ACTION (CONTACT_PREVIEW_SHOW_MAPS), "sensitive", G_BINDING_SYNC_CREATE); e_web_view_set_open_proxy (web_view, ACTION (CONTACT_OPEN)); e_web_view_set_print_proxy (web_view, ACTION (CONTACT_PRINT)); e_web_view_set_save_as_proxy (web_view, ACTION (CONTACT_SAVE_AS)); #ifndef WITH_CONTACT_MAPS gtk_action_set_visible (ACTION (CONTACT_PREVIEW_SHOW_MAPS), FALSE); gtk_action_set_visible (ACTION (ADDRESS_BOOK_MAP), FALSE); gtk_action_set_visible (ACTION (ADDRESS_BOOK_POPUP_MAP), FALSE); #endif }
static void mail_attachment_bar_constructed (GObject *object) { EMailAttachmentBarPrivate *priv; GConfBridge *bridge; const gchar *key; priv = E_MAIL_ATTACHMENT_BAR (object)->priv; bridge = gconf_bridge_get (); /* Set up property-to-property bindings. */ g_object_bind_property ( object, "active-view", priv->combo_box, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "dragging", priv->icon_view, "dragging", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "dragging", priv->tree_view, "dragging", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "editable", priv->icon_view, "editable", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "editable", priv->tree_view, "editable", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "expanded", priv->expander, "expanded", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "expanded", priv->combo_box, "visible", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "expanded", priv->vbox, "visible", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); /* Set up property-to-GConf bindings. */ key = "/apps/evolution/shell/attachment_view"; gconf_bridge_bind_property (bridge, key, object, "active-view"); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (parent_class)->constructed (object); }
int main (int argc, char **argv) { GConfBridge *bridge; GtkWidget *window, *vbox, *check, *entry, *label, *scale, *tree_view; GtkAdjustment *adjustment; GtkListStore *store; GtkCellRenderer *cell; gtk_init (&argc, &argv); bridge = gconf_bridge_get (); gconf_client_add_dir (gconf_bridge_get_client (bridge), "/apps/gconf-bridge-test", GCONF_CLIENT_PRELOAD_RECURSIVE, NULL); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gconf_bridge_bind_window (bridge, "/apps/gconf-bridge-test/window", GTK_WINDOW (window), TRUE, TRUE); vbox = gtk_vbox_new (FALSE, 6); gtk_container_add (GTK_CONTAINER (window), vbox); check = gtk_check_button_new_with_label ("Check"); gtk_box_pack_start (GTK_BOX (vbox), check, TRUE, TRUE, 0); gconf_bridge_bind_property (bridge, "/apps/gconf-bridge-test/check", G_OBJECT (check), "active"); entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0); gconf_bridge_bind_property (bridge, "/apps/gconf-bridge-test/text", G_OBJECT (entry), "text"); label = gtk_label_new ("Testing enums: Ellipsize mode"); gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0); gconf_bridge_bind_property (bridge, "/apps/gconf-bridge-test/ellipsize", G_OBJECT (label), "ellipsize"); scale = gtk_hscale_new_with_range (0.0, 10.0, 0.01); gtk_box_pack_start (GTK_BOX (vbox), scale, TRUE, TRUE, 0); adjustment = gtk_range_get_adjustment (GTK_RANGE (scale)); gconf_bridge_bind_property_delayed (bridge, "/apps/gconf-bridge-test/scale", G_OBJECT (adjustment), "value"); store = gtk_list_store_new (1, G_TYPE_STRING); tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); gconf_bridge_bind_string_list_store (bridge, "/apps/gconf-bridge-test/list", store); g_object_unref (store); cell = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), -1, "List", cell, "text", 0, NULL); gtk_box_pack_start (GTK_BOX (vbox), tree_view, TRUE, TRUE, 0); gtk_widget_show_all (window); gtk_main (); return 0; }