ItemView * itemview_create (GtkWidget *window) { gint zoom; /* 1. Create widgets, load preferences */ g_object_new (ITEMVIEW_TYPE, NULL); itemview->priv->currentLayoutMode = NODE_VIEW_MODE_INVALID; itemview->priv->itemListView = item_list_view_create (window); itemview->priv->itemListViewContainer = gtk_widget_get_parent (GTK_WIDGET (item_list_view_get_widget (itemview->priv->itemListView))); conf_get_int_value (LAST_ZOOMLEVEL, &zoom); if (zoom == 0) { zoom = 100; conf_set_int_value (LAST_ZOOMLEVEL, zoom); } itemview->priv->zoom = zoom; /* initially we pack the item list in the normal view pane, which is later changed in itemview_set_layout() */ gtk_container_add (GTK_CONTAINER (liferea_shell_lookup ("normalViewItems")), itemview->priv->itemListViewContainer); /* 2. Prepare HTML rendering */ htmlview_init (); return itemview; }
void itemview_set_layout (nodeViewType newMode) { ItemViewPrivate *ivp = itemview->priv; const gchar *htmlWidgetName, *ilWidgetName, *encViewVBoxName; if (newMode == ivp->currentLayoutMode) return; ivp->currentLayoutMode = newMode; liferea_shell_set_view_mode (newMode); if (!ivp->htmlview) { GtkWidget *renderWidget; debug0 (DEBUG_GUI, "Creating HTML widget"); htmlview_init (); ivp->htmlview = liferea_htmlview_new (FALSE); liferea_htmlview_set_headline_view (ivp->htmlview); g_signal_connect (ivp->htmlview, "statusbar-changed", G_CALLBACK (on_important_status_message), NULL); renderWidget = liferea_htmlview_get_widget (ivp->htmlview); gtk_container_add (GTK_CONTAINER (liferea_shell_lookup ("normalViewHtml")), renderWidget); gtk_widget_show (renderWidget); /* Set initial zoom */ liferea_htmlview_set_zoom (itemview->priv->htmlview, itemview->priv->zoom/100.); } else { liferea_htmlview_clear (ivp->htmlview); } debug1 (DEBUG_GUI, "Setting item list layout mode: %d", newMode); switch (newMode) { case NODE_VIEW_MODE_NORMAL: htmlWidgetName = "normalViewHtml"; ilWidgetName = "normalViewItems"; encViewVBoxName = "normalViewVBox"; break; case NODE_VIEW_MODE_WIDE: htmlWidgetName = "wideViewHtml"; ilWidgetName = "wideViewItems"; encViewVBoxName = "wideViewVBox"; break; case NODE_VIEW_MODE_COMBINED: htmlWidgetName = "combinedViewHtml"; ilWidgetName = NULL; encViewVBoxName = NULL; break; default: g_warning("fatal: illegal viewing mode!"); return; break; } /* Reparenting HTML view. This avoids the overhead of new browser instances. */ g_assert (htmlWidgetName); gtk_notebook_set_current_page (GTK_NOTEBOOK (liferea_shell_lookup ("itemtabs")), newMode); gtk_widget_reparent (liferea_htmlview_get_widget (ivp->htmlview), liferea_shell_lookup (htmlWidgetName)); /* Recreate the item list view */ if (ivp->itemListViewContainer) gtk_widget_destroy (ivp->itemListViewContainer); if (ilWidgetName) { ivp->itemListView = item_list_view_create (newMode == NODE_VIEW_MODE_WIDE); ivp->itemListViewContainer = gtk_widget_get_parent (GTK_WIDGET (item_list_view_get_widget (ivp->itemListView))); g_assert (ivp->itemListViewContainer); gtk_container_add (GTK_CONTAINER (liferea_shell_lookup (ilWidgetName)), GTK_WIDGET (ivp->itemListViewContainer)); } /* Destroy previous enclosure list. */ if (ivp->enclosureView) { gtk_widget_destroy (enclosure_list_view_get_widget (ivp->enclosureView)); ivp->enclosureView = NULL; } /* Create a new enclosure list GtkTreeView. */ if (encViewVBoxName) { ivp->enclosureView = enclosure_list_view_new (); gtk_box_pack_end (GTK_BOX (liferea_shell_lookup (encViewVBoxName)), enclosure_list_view_get_widget (ivp->enclosureView), FALSE, FALSE, 0); gtk_widget_show_all (liferea_shell_lookup (encViewVBoxName)); } }
void itemview_move_cursor_to_first (void) { ui_common_treeview_move_cursor_to_first (item_list_view_get_widget (itemview->priv->itemListView)); }
void itemview_move_cursor (int step) { ui_common_treeview_move_cursor (item_list_view_get_widget (itemview->priv->itemListView), step); }