When selection changes, change the current project

to the one of the new selection.
This commit is contained in:
Paolo Borelli 2003-06-21 11:50:51 +00:00
parent 9732223cd0
commit 29a72559c6
6 changed files with 69 additions and 55 deletions

View File

@ -1,9 +1,15 @@
2003-06-21 Paolo Borelli <pborelli@katamail.com>
* src/glade-placeholder.c: fix return values for mouse
events callbacks.
* src/glade-project-window.[ch]: when selecting a widget
of another project the current project change.
* src/glade-widget.c: remove unused var.
2003-06-21 Joaquin Cuenca Abela <e98cuenc@yahoo.com> 2003-06-21 Joaquin Cuenca Abela <e98cuenc@yahoo.com>
* src/glade-placeholder.c: remove unused function. * src/glade-placeholder.c: remove unused function.
* src/glade-utils.c: fix indentation and such. * src/glade-utils.c: fix indentation and such.
* src/glade-widget.c: remove unused function. * src/glade-widget.c: remove unused function.
2003-06-21 Joaquin Cuenca Abela <e98cuenc@yahoo.com> 2003-06-21 Joaquin Cuenca Abela <e98cuenc@yahoo.com>

View File

@ -159,7 +159,7 @@ glade_placeholder_add_methods_to_class (GladeWidgetClass *class)
class->placeholder_replace = glade_placeholder_replace_container; class->placeholder_replace = glade_placeholder_replace_container;
} }
static void static gboolean
glade_placeholder_on_button_press_event (GladePlaceholder *placeholder, glade_placeholder_on_button_press_event (GladePlaceholder *placeholder,
GdkEventButton *event, GdkEventButton *event,
gpointer not_used) gpointer not_used)
@ -167,25 +167,26 @@ glade_placeholder_on_button_press_event (GladePlaceholder *placeholder,
GladeProjectWindow *gpw = glade_project_window_get (); GladeProjectWindow *gpw = glade_project_window_get ();
if (event->button == 1 && event->type == GDK_BUTTON_PRESS) { if (event->button == 1 && event->type == GDK_BUTTON_PRESS) {
if (gpw->add_class != NULL) { if (gpw->add_class != NULL) {
/* /* A widget type is selected in the palette.
* A widget type is selected in the palette.
* Add a new widget of that type. * Add a new widget of that type.
*/ */
glade_command_create (gpw->add_class, placeholder, NULL); glade_command_create (gpw->add_class, placeholder, NULL);
glade_project_window_set_add_class (gpw, NULL); glade_project_window_set_add_class (gpw, NULL);
} else { } else {
/* else set the current placeholder as selected */ GladeWidget *parent = glade_placeholder_get_parent (placeholder);
glade_project_selection_set (gpw->project, placeholder, FALSE); glade_project_selection_set (parent->project, placeholder, TRUE);
} }
} else if (event->button == 3) { } else if (event->button == 3)
glade_popup_placeholder_pop (placeholder, event); glade_popup_placeholder_pop (placeholder, event);
}
return TRUE;
} }
static void static gboolean
glade_placeholder_on_motion_notify_event (GladePlaceholder *placeholder, GdkEventMotion *event, gpointer not_used) glade_placeholder_on_motion_notify_event (GladePlaceholder *placeholder,
GdkEventMotion *event,
gpointer not_used)
{ {
GladeProjectWindow *gpw; GladeProjectWindow *gpw;
@ -195,6 +196,8 @@ glade_placeholder_on_motion_notify_event (GladePlaceholder *placeholder, GdkEven
glade_cursor_set (event->window, GLADE_CURSOR_SELECTOR); glade_cursor_set (event->window, GLADE_CURSOR_SELECTOR);
else else
glade_cursor_set (event->window, GLADE_CURSOR_ADD_WIDGET); glade_cursor_set (event->window, GLADE_CURSOR_ADD_WIDGET);
return FALSE;
} }
static gboolean static gboolean

View File

@ -1076,26 +1076,6 @@ glade_project_window_new (GList *catalogs)
return gpw; return gpw;
} }
static void
glade_project_window_selection_changed_cb (GladeProject *project,
GladeProjectWindow *gpw)
{
GList *list;
gint num;
g_return_if_fail (GLADE_IS_PROJECT (project));
g_return_if_fail (GLADE_IS_PROJECT_WINDOW (gpw));
if (gpw->editor) {
list = glade_project_selection_get (project);
num = g_list_length (list);
if (num == 1 && !GLADE_IS_PLACEHOLDER (list->data))
glade_editor_load_widget (gpw->editor, glade_widget_get_from_gtk_widget (GTK_WIDGET (list->data)));
else
glade_editor_load_widget (gpw->editor, NULL);
}
}
void void
glade_project_window_set_project (GladeProject *project) glade_project_window_set_project (GladeProject *project)
{ {
@ -1107,12 +1087,19 @@ glade_project_window_set_project (GladeProject *project)
gpw = glade_project_window_get (); gpw = glade_project_window_get ();
if (gpw->project == project)
return;
if (g_list_find (gpw->projects, project) == NULL) { if (g_list_find (gpw->projects, project) == NULL) {
g_warning ("Could not set project because it could not " g_warning ("Could not set project because it could not "
" be found in the gpw->project list\n"); " be found in the gpw->project list\n");
return; return;
} }
/* clear the selection in the previous project */
if (gpw->project)
glade_project_selection_clear (gpw->project, FALSE);
gpw->project = project; gpw->project = project;
gpw_refresh_title (gpw); gpw_refresh_title (gpw);
@ -1122,11 +1109,7 @@ glade_project_window_set_project (GladeProject *project)
glade_project_view_set_project (view, project); glade_project_view_set_project (view, project);
} }
gpw->project_selection_changed_signal = /* trigger the selection changed signal to update the editor */
g_signal_connect (G_OBJECT (project), "selection_changed",
G_CALLBACK (glade_project_window_selection_changed_cb),
gpw);
glade_project_selection_changed (project); glade_project_selection_changed (project);
} }
@ -1136,6 +1119,31 @@ gpw_widget_name_changed_cb (GladeProject *project, GladeWidget *widget, GladeEdi
glade_editor_update_widget_name (editor); glade_editor_update_widget_name (editor);
} }
static void
gpw_project_selection_changed_cb (GladeProject *project,
GladeProjectWindow *gpw)
{
GList *list;
gint num;
g_return_if_fail (GLADE_IS_PROJECT (project));
g_return_if_fail (GLADE_IS_PROJECT_WINDOW (gpw));
if (gpw->project != project) {
glade_project_window_set_project (project);
return;
}
if (gpw->editor) {
list = glade_project_selection_get (project);
num = g_list_length (list);
if (num == 1 && !GLADE_IS_PLACEHOLDER (list->data))
glade_editor_load_widget (gpw->editor, glade_widget_get_from_gtk_widget (GTK_WIDGET (list->data)));
else
glade_editor_load_widget (gpw->editor, NULL);
}
}
void void
glade_project_window_add_project (GladeProject *project) glade_project_window_add_project (GladeProject *project)
{ {
@ -1175,11 +1183,12 @@ glade_project_window_add_project (GladeProject *project)
gtk_item_factory_create_item (gpw->item_factory, &(project->entry), project, 1); gtk_item_factory_create_item (gpw->item_factory, &(project->entry), project, 1);
/* connect the widget_changed_name signal to the editor, so that changes to the widget /* connect to the project signals so that the editor can be updated */
* name external to the properties editor (as when the user undo a widget name change)
* are reflected on the widget name entry */
g_signal_connect (G_OBJECT (project), "widget_name_changed", g_signal_connect (G_OBJECT (project), "widget_name_changed",
G_CALLBACK (gpw_widget_name_changed_cb), gpw->editor); G_CALLBACK (gpw_widget_name_changed_cb), gpw->editor);
g_signal_connect (G_OBJECT (project), "selection_changed",
G_CALLBACK (gpw_project_selection_changed_cb), gpw);
glade_project_window_set_project (project); glade_project_window_set_project (project);
} }

View File

@ -44,8 +44,6 @@ struct _GladeProjectWindow
GList *views; /* A list of GladeProjectView item */ GList *views; /* A list of GladeProjectView item */
GList *projects; /* The list of Projects */ GList *projects; /* The list of Projects */
guint project_selection_changed_signal;
}; };

View File

@ -332,7 +332,7 @@ glade_project_selection_clear (GladeProject *project, gboolean emit_signal)
{ {
GtkWidget *widget; GtkWidget *widget;
GList *list; GList *list;
g_return_if_fail (GLADE_IS_PROJECT (project)); g_return_if_fail (GLADE_IS_PROJECT (project));
if (project->selection == NULL) if (project->selection == NULL)
@ -343,7 +343,7 @@ glade_project_selection_clear (GladeProject *project, gboolean emit_signal)
widget = list->data; widget = list->data;
glade_util_remove_nodes (widget); glade_util_remove_nodes (widget);
} }
g_list_free (project->selection); g_list_free (project->selection);
project->selection = NULL; project->selection = NULL;
@ -352,7 +352,8 @@ glade_project_selection_clear (GladeProject *project, gboolean emit_signal)
} }
void void
glade_project_selection_remove (GladeProject *project, GtkWidget *widget, glade_project_selection_remove (GladeProject *project,
GtkWidget *widget,
gboolean emit_signal) gboolean emit_signal)
{ {
if (!glade_util_has_nodes (widget)) if (!glade_util_has_nodes (widget))
@ -360,8 +361,7 @@ glade_project_selection_remove (GladeProject *project, GtkWidget *widget,
glade_util_remove_nodes (widget); glade_util_remove_nodes (widget);
if (project) if (project) {
{
project->selection = g_list_remove (project->selection, widget); project->selection = g_list_remove (project->selection, widget);
if (emit_signal) if (emit_signal)
@ -370,7 +370,8 @@ glade_project_selection_remove (GladeProject *project, GtkWidget *widget,
} }
void void
glade_project_selection_add (GladeProject *project, GtkWidget *widget, glade_project_selection_add (GladeProject *project,
GtkWidget *widget,
gboolean emit_signal) gboolean emit_signal)
{ {
if (glade_util_has_nodes (widget)) if (glade_util_has_nodes (widget))
@ -378,8 +379,7 @@ glade_project_selection_add (GladeProject *project, GtkWidget *widget,
glade_util_add_nodes (widget); glade_util_add_nodes (widget);
if (project) if (project) {
{
project->selection = g_list_prepend (project->selection, widget); project->selection = g_list_prepend (project->selection, widget);
if (emit_signal) if (emit_signal)
@ -388,7 +388,8 @@ glade_project_selection_add (GladeProject *project, GtkWidget *widget,
} }
void void
glade_project_selection_set (GladeProject *project, GtkWidget *widget, glade_project_selection_set (GladeProject *project,
GtkWidget *widget,
gboolean emit_signal) gboolean emit_signal)
{ {
if (glade_util_has_nodes (widget)) if (glade_util_has_nodes (widget))

View File

@ -280,7 +280,6 @@ glade_widget_button_press (GtkWidget *event_widget,
GdkEventButton *event, GdkEventButton *event,
gpointer not_used) gpointer not_used)
{ {
GladeProjectWindow *gpw;
GladeWidget *glade_widget; GladeWidget *glade_widget;
glade_widget = glade_widget_get_from_event_widget (event_widget, event); glade_widget = glade_widget_get_from_event_widget (event_widget, event);
@ -309,8 +308,6 @@ glade_widget_button_press (GtkWidget *event_widget,
g_debug(("The widget found was a %s\n", glade_widget->class->name)); g_debug(("The widget found was a %s\n", glade_widget->class->name));
gpw = glade_project_window_get ();
return FALSE; return FALSE;
} }