[libgda] Browser: now schema is updated on meta-update
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Browser: now schema is updated on meta-update
- Date: Sat, 9 Mar 2019 00:37:27 +0000 (UTC)
commit bad3b85659683931c811c22a1ea06484ec41b491
Author: Daniel Espinosa Ortiz <esodan gmail com>
Date: Fri Mar 8 18:35:36 2019 -0600
Browser: now schema is updated on meta-update
Fix https://gitlab.gnome.org/GNOME/libgda/issues/170
tools/browser/browser-window.c | 11 +++++++++++
tools/browser/browser-window.h | 1 +
tools/browser/schema-browser/objects-index.c | 5 +++++
.../schema-browser/schema-browser-perspective.c | 20 +++++++++++++++-----
4 files changed, 32 insertions(+), 5 deletions(-)
---
diff --git a/tools/browser/browser-window.c b/tools/browser/browser-window.c
index 0b7f49a73..15d6ad3bf 100644
--- a/tools/browser/browser-window.c
+++ b/tools/browser/browser-window.c
@@ -59,6 +59,7 @@ static void cnc_status_changed_cb (TConnection *tcnc, GdaConnectionStatus status
enum {
FULLSCREEN_CHANGED,
+ META_UPDATED,
LAST_SIGNAL
};
@@ -140,6 +141,15 @@ browser_window_class_init (BrowserWindowClass *klass)
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+ browser_window_signals[META_UPDATED] =
+ g_signal_new ("meta-updated",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (BrowserWindowClass, meta_updated),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 1, G_TYPE_OBJECT);
+
object_class->dispose = browser_window_dispose;
}
@@ -724,6 +734,7 @@ connection_meta_update_cb (G_GNUC_UNUSED GSimpleAction *action, GVariant *parame
gtk_widget_destroy (msg);
g_clear_error (&error);
}
+ g_signal_emit (bwin, browser_window_signals[META_UPDATED], 0, bwin->priv->tcnc, NULL);
//gtk_widget_insert_action_group (GTK_WIDGET (bwin), "win", NULL);
}
diff --git a/tools/browser/browser-window.h b/tools/browser/browser-window.h
index 360aa188b..3e8c5be46 100644
--- a/tools/browser/browser-window.h
+++ b/tools/browser/browser-window.h
@@ -50,6 +50,7 @@ struct _BrowserWindowClass
/* signals */
void (*fullscreen_changed) (BrowserWindow *bwin, gboolean fullscreen);
+ void (*meta_updated) (BrowserWindow *bwin, GdaConnection *cnc);
};
/**
diff --git a/tools/browser/schema-browser/objects-index.c b/tools/browser/schema-browser/objects-index.c
index b6bc21c39..3320b3d92 100644
--- a/tools/browser/schema-browser/objects-index.c
+++ b/tools/browser/schema-browser/objects-index.c
@@ -82,6 +82,8 @@ static void
objects_index_init (ObjectsIndex *index, G_GNUC_UNUSED ObjectsIndexClass *klass)
{
index->priv = g_new0 (ObjectsIndexPrivate, 1);
+ index->priv->tcnc = NULL;
+ index->priv->cloud = NULL;
gtk_orientable_set_orientation (GTK_ORIENTABLE (index), GTK_ORIENTATION_VERTICAL);
}
@@ -196,12 +198,15 @@ objects_index_update (ObjectsIndex *index)
g_signal_handlers_disconnect_by_func (GTK_WIDGET (index->priv->cloud),
G_CALLBACK (cloud_object_selected_cb), index);
gtk_widget_destroy (GTK_WIDGET (index->priv->cloud));
+ index->priv->cloud = NULL;
+ g_message ("Destroied cloud object");
}
mstruct = t_connection_get_meta_struct (index->priv->tcnc);
cloud = objects_cloud_new (mstruct, OBJECTS_CLOUD_TYPE_TABLE);
objects_cloud_show_schemas (OBJECTS_CLOUD (cloud), TRUE);
gtk_box_pack_start (GTK_BOX (index), cloud, TRUE, TRUE, 0);
+ gtk_widget_show_all (GTK_WIDGET (index));
index->priv->cloud = OBJECTS_CLOUD (cloud);
g_signal_connect (cloud, "selected",
G_CALLBACK (cloud_object_selected_cb), index);
diff --git a/tools/browser/schema-browser/schema-browser-perspective.c
b/tools/browser/schema-browser/schema-browser-perspective.c
index 646b9c08b..6cf86549d 100644
--- a/tools/browser/schema-browser/schema-browser-perspective.c
+++ b/tools/browser/schema-browser/schema-browser-perspective.c
@@ -55,6 +55,7 @@ struct _SchemaBrowserPerspectivePrivate {
GtkWidget *favorites;
gboolean favorites_shown;
BrowserWindow *bwin;
+ GtkWidget *objects_index;
};
GType
@@ -124,6 +125,8 @@ static void fav_selection_changed_cb (GtkWidget *widget, gint fav_id, TFavorites
const gchar *selection, SchemaBrowserPerspective *bpers);
static void objects_index_selection_changed_cb (GtkWidget *widget, TFavoritesType fav_type,
const gchar *selection, SchemaBrowserPerspective *bpers);
+
+static void meta_updated (BrowserWindow *bwin, GdaConnection *cnc, SchemaBrowserPerspective *perps);
/**
* schema_browser_perspective_new
*
@@ -159,15 +162,15 @@ schema_browser_perspective_new (BrowserWindow *bwin)
perspective->priv->notebook = nb;
gtk_paned_add2 (GTK_PANED (paned), nb);
- wid = objects_index_new (tcnc);
- g_signal_connect (wid, "selection-changed",
+ perspective->priv->objects_index = GTK_WIDGET (objects_index_new (tcnc));
+ g_signal_connect (perspective->priv->objects_index, "selection-changed",
G_CALLBACK (objects_index_selection_changed_cb), bpers);
- gtk_notebook_append_page (GTK_NOTEBOOK (nb), wid,
+ gtk_notebook_append_page (GTK_NOTEBOOK (nb), perspective->priv->objects_index,
ui_make_tab_label_with_icon (_("Index"), "help-about", FALSE, NULL));
- gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (nb), wid, TRUE);
+ gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (nb), perspective->priv->objects_index, TRUE);
gtk_notebook_set_group_name (GTK_NOTEBOOK (nb), "schema-browser");
- gtk_notebook_set_menu_label (GTK_NOTEBOOK (nb), wid,
+ gtk_notebook_set_menu_label (GTK_NOTEBOOK (nb), perspective->priv->objects_index,
ui_make_tab_label_with_icon (_("Index"), "help-about", FALSE, NULL));
gtk_box_pack_start (GTK_BOX (bpers), paned, TRUE, TRUE, 0);
gtk_widget_show_all (paned);
@@ -175,9 +178,16 @@ schema_browser_perspective_new (BrowserWindow *bwin)
if (perspective->priv->favorites && !perspective->priv->favorites_shown)
gtk_widget_hide (perspective->priv->favorites);
+ g_signal_connect (bwin, "meta-updated", G_CALLBACK (meta_updated), perspective);
+
return bpers;
}
+static void meta_updated (BrowserWindow *bwin, GdaConnection *cnc, SchemaBrowserPerspective *perps)
+{
+ objects_index_update ((ObjectsIndex*) perps->priv->objects_index);
+}
+
static void
close_button_clicked_cb (G_GNUC_UNUSED GtkWidget *wid, GtkWidget *page_widget)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]