/* * relations_diagram_set_fav_id * * Sets the favorite ID of @diagram: ensure every displayed information is up to date */ static void relations_diagram_set_fav_id (RelationsDiagram *diagram, gint fav_id, GError **error) { g_return_if_fail (IS_RELATIONS_DIAGRAM (diagram)); TFavoritesAttributes fav; if ((fav_id >=0) && t_favorites_get (t_connection_get_favorites (diagram->priv->tcnc), fav_id, &fav, error)) { gchar *str, *tmp; tmp = g_markup_printf_escaped (_("'%s' diagram"), fav.name); str = g_strdup_printf ("<b>%s</b>\n%s", _("Relations diagram"), tmp); g_free (tmp); gdaui_bar_set_text (diagram->priv->header, str); g_free (str); diagram->priv->fav_id = fav.id; t_favorites_reset_attributes (&fav); } else { gchar *str; str = g_strdup_printf ("<b>%s</b>\n%s", _("Relations diagram"), _("Unsaved")); gdaui_bar_set_text (diagram->priv->header, str); g_free (str); diagram->priv->fav_id = -1; } }
/** * schema_browser_perspective_display_diagram * */ void schema_browser_perspective_display_diagram (SchemaBrowserPerspective *bpers, gint fav_id) { GtkWidget *diagram = NULL; if (fav_id >= 0) { gint ntabs, i; ntabs = gtk_notebook_get_n_pages (GTK_NOTEBOOK (bpers->priv->notebook)); for (i = 0; i < ntabs; i++) { GtkWidget *child; child = gtk_notebook_get_nth_page (GTK_NOTEBOOK (bpers->priv->notebook), i); if (IS_RELATIONS_DIAGRAM (child)) { if (relations_diagram_get_fav_id (RELATIONS_DIAGRAM (child)) == fav_id) { gtk_notebook_set_current_page (GTK_NOTEBOOK (bpers->priv->notebook), i); return; } } } GError *error = NULL; diagram = relations_diagram_new_with_fav_id (browser_window_get_connection (bpers->priv->bwin), fav_id, &error); if (! diagram) { ui_show_error ((GtkWindow*) gtk_widget_get_toplevel ((GtkWidget*) bpers), error && error->message ? error->message : _("Could not load diagram")); g_clear_error (&error); } } else diagram = relations_diagram_new (browser_window_get_connection (bpers->priv->bwin)); if (diagram) { GtkWidget *close_btn; GtkWidget *tab_label; gint i; tab_label = browser_page_get_tab_label (BROWSER_PAGE (diagram), &close_btn); i = gtk_notebook_append_page (GTK_NOTEBOOK (bpers->priv->notebook), diagram, tab_label); g_signal_connect (close_btn, "clicked", G_CALLBACK (close_button_clicked_cb), diagram); gtk_widget_show (diagram); tab_label = browser_page_get_tab_label (BROWSER_PAGE (diagram), NULL); gtk_notebook_set_menu_label (GTK_NOTEBOOK (bpers->priv->notebook), diagram, tab_label); gtk_notebook_set_current_page (GTK_NOTEBOOK (bpers->priv->notebook), i); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (bpers->priv->notebook), diagram, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (bpers->priv->notebook), diagram, TRUE); } }
/** * relations_diagram_get_fav_id * */ gint relations_diagram_get_fav_id (RelationsDiagram *diagram) { g_return_val_if_fail (IS_RELATIONS_DIAGRAM (diagram), -1); return diagram->priv->fav_id; }