ekiga r6537 - in trunk: . lib/engine/gui/gtk-frontend
- From: jpuydt svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6537 - in trunk: . lib/engine/gui/gtk-frontend
- Date: Wed, 30 Jul 2008 15:06:14 +0000 (UTC)
Author: jpuydt
Date: Wed Jul 30 15:06:14 2008
New Revision: 6537
URL: http://svn.gnome.org/viewvc/ekiga?rev=6537&view=rev
Log:
Added context-sensitive toolbar to the gtk+ roster view
Modified:
trunk/ChangeLog
trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
Modified: trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp (original)
+++ trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp Wed Jul 30 15:06:14 2008
@@ -46,6 +46,7 @@
#include "menu-builder-tools.h"
#include "roster-view-gtk.h"
#include "menu-builder-gtk.h"
+#include "toolbar-builder-gtk.h"
#include "form-dialog-gtk.h"
/*
@@ -60,6 +61,7 @@
GtkTreeView *tree_view;
GtkWidget *vbox;
GtkWidget *scrolled_window;
+ GtkWidget* toolbar;
GSList *folded_groups;
gboolean show_offline_contacts;
Ekiga::PresenceCore & core;
@@ -115,6 +117,12 @@
* Helpers
*/
+/* DESCRIPTION: Remove a child from a GtkContainer
+ *
+ */
+static void remove_child (GtkWidget* child,
+ GtkWidget* container);
+
/* DESCRIPTION : Set of functions called when the user clicks in a view
* BEHAVIOUR : Folds/unfolds, shows a menu or triggers default action
*/
@@ -344,6 +352,13 @@
/* Implementation of the helpers */
static void
+remove_child (GtkWidget* child,
+ GtkWidget* container)
+{
+ gtk_container_remove (GTK_CONTAINER (container), child);
+}
+
+static void
on_clicked_show_heap_menu (Ekiga::Heap* heap,
GdkEventButton* event)
{
@@ -519,10 +534,27 @@
if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ Ekiga::Heap* heap = NULL;
Ekiga::Presentity *presentity = NULL;
gtk_tree_model_get (model, &iter,
+ COLUMN_HEAP, &heap,
COLUMN_PRESENTITY, &presentity,
-1);
+ gtk_container_foreach (GTK_CONTAINER (self->priv->toolbar),
+ (GtkCallback)remove_child, self->priv->toolbar);
+ if (presentity != NULL) {
+
+ ToolbarBuilderGtk builder(self->priv->toolbar);
+ Ekiga::ShortMenuBuilder shorter(builder);
+ presentity->populate_menu (shorter);
+ gtk_widget_show_all (self->priv->toolbar);
+ } else if (heap != NULL) {
+
+ ToolbarBuilderGtk builder(self->priv->toolbar);
+ Ekiga::ShortMenuBuilder shorter(builder);
+ heap->populate_menu (shorter);
+ gtk_widget_show_all (self->priv->toolbar);
+ }
g_signal_emit (self, signals[PRESENTITY_SELECTED_SIGNAL], 0, presentity);
}
}
@@ -1199,6 +1231,8 @@
self->priv->show_offline_contacts = gm_conf_get_bool ("/apps/" PACKAGE_NAME "/contacts/show_offline_contacts");
self->priv->vbox = gtk_vbox_new (FALSE, 0);
self->priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ self->priv->toolbar = gtk_toolbar_new ();
+ gtk_toolbar_set_style (GTK_TOOLBAR (self->priv->toolbar), GTK_TOOLBAR_BOTH);
gtk_container_set_border_width (GTK_CONTAINER (self->priv->vbox), 0);
gtk_container_set_border_width (GTK_CONTAINER (self->priv->scrolled_window), 0);
gtk_frame_set_shadow_type (GTK_FRAME (self), GTK_SHADOW_NONE);
@@ -1231,8 +1265,10 @@
gtk_tree_view_set_headers_visible (self->priv->tree_view, FALSE);
gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->priv->vbox));
- gtk_container_add (GTK_CONTAINER (self->priv->vbox),
- GTK_WIDGET (self->priv->scrolled_window));
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox),
+ GTK_WIDGET (self->priv->scrolled_window), TRUE, TRUE, 2);
+ gtk_box_pack_start (GTK_BOX (self->priv->vbox),
+ self->priv->toolbar, FALSE, TRUE, 2);
gtk_container_add (GTK_CONTAINER (self->priv->scrolled_window),
GTK_WIDGET (self->priv->tree_view));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]