[GnomeMeeting-devel-list] Bug



Hello,
i'm working on integrating your application into a custom apppliance. I just
found a minor bug. Don't know if i should post it here.

My system : Redhat Linux 9 with gnome desktop and all updartes. Compiled
Gnomemeeting Sources 0.98.5.
The Bug : When I drag the toolbars out of the main window make a call and
then interrupt it by clicking on the red phone icon -> Exit (Quitter in
French) the toolbars don't disapear with the rest of gnomemeeting.

Sincerely

Stephane Troestler

-----Message d'origine-----
De : gnomemeeting-devel-list-admin gnome org
[mailto:gnomemeeting-devel-list-admin gnome org]De la part de
gnomemeeting-devel-list-request gnome org
Envoyé : mardi 27 janvier 2004 16:07
À : gnomemeeting-devel-list gnome org
Objet : Gnomemeeting-devel-list digest, Vol 1 #345 - 5 msgs


Send Gnomemeeting-devel-list mailing list submissions to
	gnomemeeting-devel-list gnome org

To subscribe or unsubscribe via the World Wide Web, visit
	http://mail.gnome.org/mailman/listinfo/gnomemeeting-devel-list
or, via email, send a message with subject or body 'help' to
	gnomemeeting-devel-list-request gnome org

You can reach the person managing the list at
	gnomemeeting-devel-list-admin gnome org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Gnomemeeting-devel-list digest..."


Today's Topics:

   1. Re: 1.00 Freeze (Damien Sandras)
   2. Re: 1.00 Freeze (Miguel =?ISO-8859-1?Q?Rodr=EDguez?=)
   3. Re: 1.00 Freeze (Christopher Warner)
   4. Re: 1.00 Freeze (Damien Sandras)
   5. [PRE-PATCH] private structures (PUYDT Julien)

--__--__--

Message: 1
Subject: Re: [GnomeMeeting-devel-list] 1.00 Freeze
From: Damien Sandras <damien sandras it-optics com>
To: gnomemeeting-devel-list gnome org
Date: Tue, 27 Jan 2004 11:49:02 +0100
Reply-To: gnomemeeting-devel-list gnome org

Le mar 27/01/2004 à 11:22, PUYDT Julien a écrit :

> > 	- When calling somebody from the ILS browser, use the IP and not 	the
> > callto
>
> I can have a look, as it's a part of the code I know.
>

Mmmh better not as it requires changes to urlhandler.cpp and .h.

> > 	- Fix XDAP, or at least comment out the messages printed in the
> > 	terminal
>
> I can't fix it since I don't understand it... I could probably make it
> compile without warning and stop printing debug messages, but it annoys
> me to hide problems instead of fixing them...

I think there is no other way. Paul doesn't answer anymore, and he
didn't keep its promise. It is too late to get rid of XDAP.


--
 _      Damien Sandras
(o-
//\     It-Optics s.a.
v_/_    GnomeMeeting: http://www.gnomemeeting.org/
        FOSDEM 2004:  http://www.fosdem.org
        H.323 phone:  callto:ils.seconix.com/dsandras seconix com


--__--__--

Message: 2
Subject: Re: [GnomeMeeting-devel-list] 1.00 Freeze
From: Miguel =?ISO-8859-1?Q?Rodr=EDguez?= <migrax terra es>
To: gnomemeeting-devel-list gnome org
Date: Tue, 27 Jan 2004 11:49:54 +0100
Reply-To: gnomemeeting-devel-list gnome org

El mar, 27-01-2004 a las 11:45, PUYDT Julien escribi=C3=B3:
> On mar, 2004-01-27 at 11:33, Miguel Rodr=C3=ADguez wrote:
>=20
> > Both are compatible. gconf_test_age is/was great to warn people that
> > their installation was broken. Those were difficult times when nobody
> > managed to properly setup gconf. Don't know if it still relevant, but a=
s
> > a warning to the user is useful.
>=20
> This prompts the question: how does it work when a user installs a
> recent version in ~, and the system version is much older?
I'm not sure. Maybe he can directly install those in this account.
Another solution is to show some arm to the site administrator ;)*

* Don't try this at home**

** Even better, don't try this.


--__--__--

Message: 3
Subject: Re: [GnomeMeeting-devel-list] 1.00 Freeze
From: Christopher Warner <zanee kernelcode com>
To: gnomemeeting-devel-list gnome org
Cc: Fabrice Alphonso <fabrice alphonso dyndns org>
Date: Tue, 27 Jan 2004 09:21:07 -0500
Reply-To: gnomemeeting-devel-list gnome org

I can still commit the doc stuff right?

> Please don't put any patch from now in CVS.

--
Christopher Warner
[KC] http://www.kernelcode.com


--__--__--

Message: 4
Subject: Re: [GnomeMeeting-devel-list] 1.00 Freeze
From: Damien Sandras <dsandras seconix com>
To: gnomemeeting-devel-list gnome org
Date: Tue, 27 Jan 2004 15:42:00 +0100
Reply-To: gnomemeeting-devel-list gnome org

Le mar 27/01/2004 à 15:21, Christopher Warner a écrit :
> I can still commit the doc stuff right?
>

Yes, but let me have a look at it first (if it changes the code or the
configure/make process). Doc changes can directly go in CVS.

> > Please don't put any patch from now in CVS.
--
 _      Damien Sandras
(o-
//\     It-Optics s.a.
v_/_    GnomeMeeting: http://www.gnomemeeting.org/
        FOSDEM 2004:  http://www.fosdem.org
        H.323 phone:  callto:ils.seconix.com/dsandras seconix com


--__--__--

Message: 5
From: PUYDT Julien <julien puydt laposte net>
To: GnomeMeeting Devel Liste <gnomemeeting-devel-list gnome org>
Date: Tue, 27 Jan 2004 15:57:17 +0100
Subject: [GnomeMeeting-devel-list] [PRE-PATCH] private structures
Reply-To: gnomemeeting-devel-list gnome org


--=-uaceEw++FZgra8+Df/yr
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi,

don't cry, I know it's for post 1.00, but since I was still working on
it, I wanted to have something at least a little polished before working
on something else!

The private text-chat pre-patch looked quite good, so it's the same than
last time, and is probably a patch.

The calls history pre-patch moves everything to calls_history.*, and:
* it still has the dirty function is_calls_history_model (that shows
there's some factoring to do);
* the fact that calls_history.h depends on ldap_window.h shows there
some factoring to do.

My conclusion is: the first thing to do after 1.00 is make a list of
gnomemeeting's part, with a list of what the dependancies should be, and
break those that are there but shouldn't!

Snark

--=-uaceEw++FZgra8+Df/yr
Content-Disposition: attachment; filename=private_calls_history.patch
Content-Type: text/x-patch; name=private_calls_history.patch;
charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

diff -urN gnomemeeting-cvs-20040127.CVS/src/calls_history.cpp
gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.cpp
--- gnomemeeting-cvs-20040127.CVS/src/calls_history.cpp	1970-01-01
01:00:00.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.cpp	2004-01-27
14:45:58.000000000 +0100
@@ -0,0 +1,433 @@
+
+/* GnomeMeeting -- A Video-Conferencing application
+ * Copyright (C) 2000-2004 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
+ *
+ *
+ * GnomeMeting is licensed under the GPL license and as a special
exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OpenH323 and Pwlib, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OpenH323 program, as
long
+ * as you do follow the requirements of the GNU GPL for all the rest of the
+ * software thus combined.
+ */
+
+
+/*
+ *                         calls_history.cpp  -  description
+ *                         -------------------------
+ *   begin                : Sun Sep 1 2002
+ *   copyright            : (C) 2000-2004 by Damien Sandras
+ *   description          : This file contains functions to manage&display
the
+ *		calls history
+ */
+
+#include "common.h"
+#include "calls_history.h"
+#include "gnomemeeting.h"
+#include "gconf_widgets_extensions.h"
+#include "misc.h"
+#include "lib/stock-icons.h"
+#include "ldap_window.h"
+
+struct _GmCallsHistoryWindowPrivate
+{
+  GtkListStore *given_calls_list_store;
+  GtkListStore *received_calls_list_store;
+  GtkListStore *missed_calls_list_store;
+};
+
+/* FIXME: should really disappear soon after 1.00 */
+gboolean is_model_from_calls_history (GmCallsHistoryWindow *chw,
GtkTreeModel *model)
+{
+  return model == GTK_TREE_MODEL (chw->internal->given_calls_list_store)
+      || model == GTK_TREE_MODEL (chw->internal->received_calls_list_store)
+      || model == GTK_TREE_MODEL (chw->internal->missed_calls_list_store);
+}
+
+static void dnd_drag_data_get_cb (GtkWidget *,
+				  GdkDragContext *,
+				  GtkSelectionData *,
+				  guint,
+				  guint,
+				  gpointer);
+
+/* DESCRIPTION  :  This callback is called when the user has released the
drag.
+ * BEHAVIOR     :  Puts the required data into the selection_data, we put
+ *                 name and the url fields for now.
+ * PRE          :  data = the type of the page from where the drag occured
:
+ *                 CONTACTS_GROUPS or CONTACTS_SERVERS.
+ */
+static void
+dnd_drag_data_get_cb (GtkWidget *tree_view,
+		      GdkDragContext *dc,
+		      GtkSelectionData *selection_data,
+		      guint info,
+		      guint t,
+		      gpointer data)
+{
+  GtkTreeSelection *selection = NULL;
+  GtkTreeModel *model = NULL;
+  GtkTreeIter iter;
+
+  gchar *contact_name = NULL;
+  gchar *contact_url = NULL;
+  gchar *drag_data = NULL;
+
+
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
+
+  if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+
+    gtk_tree_model_get (GTK_TREE_MODEL (model), &iter,
+			1, &contact_name,
+			2, &contact_url, -1);
+
+    if (contact_name && contact_url) {
+
+      drag_data = g_strdup_printf ("%s|%s", contact_name, contact_url);
+
+      gtk_selection_data_set (selection_data,
+			      selection_data->target,
+			      8,
+			      (const guchar *) drag_data,
+			      strlen (drag_data));
+      g_free (drag_data);
+    }
+  }
+
+  g_free (contact_name);
+  g_free (contact_url);
+}
+
+
+/* The functions */
+void
+gnomemeeting_calls_history_window_populate ()
+{
+  GtkTreeIter iter;
+  GtkListStore *list_store = NULL;
+
+  gchar *gconf_key = NULL;
+  gchar **call_data = NULL;
+
+  GSList *calls_list = NULL;
+
+  GmCallsHistoryWindowPrivate *chw = NULL;
+
+  chw = GnomeMeeting::Process ()->GetCallsHistoryWindow ()->internal;
+
+  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
+
+    switch (i) {
+
+    case RECEIVED_CALL:
+      list_store = chw->received_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY
"calls_history_window/received_calls_history");
+      break;
+    case PLACED_CALL:
+      list_store = chw->given_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
+      break;
+    case MISSED_CALL:
+      list_store = chw->missed_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
+      break;
+    }
+
+    gtk_list_store_clear (list_store);
+
+    calls_list = gconf_get_string_list (gconf_key);
+
+    while (calls_list && calls_list->data) {
+
+      call_data = g_strsplit ((char *) calls_list->data, "|", 0);
+
+      if (call_data) {
+
+	gtk_list_store_append (list_store, &iter);
+	gtk_list_store_set (list_store,
+			    &iter,
+			    0, call_data [0],
+			    1, call_data [1],
+			    2, call_data [2],
+			    3, call_data [3],
+			    4, call_data [4],
+			    5, call_data [5],
+			    -1);
+      }
+
+      g_strfreev (call_data);
+
+      calls_list = g_slist_next (calls_list);
+    }
+
+    g_free (gconf_key);
+    g_slist_free (calls_list);
+  }
+}
+
+
+void
+gnomemeeting_calls_history_window_add_call (int i,
+					    const char *remote_user,
+					    const char *ip,
+					    const char *duration,
+					    const char *reason,
+					    const char *software)
+{
+  PString time;
+
+  gchar *gconf_key = NULL;
+  gchar *call_data = NULL;
+
+  GSList *calls_list = NULL;
+  GSList *tmp = NULL;
+
+  time = PTime ().AsString ("www dd MMM, hh:mm:ss");
+
+  switch (i) {
+
+  case RECEIVED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY
"calls_history_window/received_calls_history");
+    break;
+  case PLACED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY
"calls_history_window/placed_calls_history");
+    break;
+  case MISSED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY
"calls_history_window/missed_calls_history");
+    break;
+  }
+
+
+  call_data =
+    g_strdup_printf ("%s|%s|%s|%s|%s|%s",
+		     (const char *) time ? (const char *) time : "",
+		     remote_user ? remote_user : "",
+		     ip ? ip : "",
+		     duration ? duration : "",
+		     reason ? reason : "",
+		     software ? software : "");
+
+  calls_list = gconf_get_string_list (gconf_key);
+  calls_list = g_slist_append (calls_list, (gpointer) call_data);
+
+  while (g_slist_length (calls_list) > 100) {
+
+    tmp = g_slist_nth (calls_list, 0);
+    calls_list = g_slist_remove_link (calls_list, tmp);
+
+    g_slist_free_1 (tmp);
+  }
+
+  gconf_set_string_list (gconf_key, calls_list);
+
+  g_free (gconf_key);
+  g_slist_free (calls_list);
+}
+
+#define CLOSE_BUTTON_ID 0
+#define CLEAR_BUTTON_ID 1
+
+void
+gnomemeeting_calls_history_window_response_event (GtkDialog *dialog, gint
id, gpointer window)
+{
+  switch (id) {
+    case CLOSE_BUTTON_ID:
+      gnomemeeting_window_hide (GTK_WIDGET (window));
+      break;
+    case CLEAR_BUTTON_ID:
+      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/received_calls_history", NULL);
+      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/placed_calls_history", NULL);
+      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/missed_calls_history", NULL);
+      break;
+  }
+}
+
+GtkWidget *
+gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *chw)
+{
+  GtkWidget *window = NULL;
+  GtkWidget *notebook = NULL;
+  GtkWidget *scr = NULL;
+  GtkWidget *label = NULL;
+  GtkWidget *tree_view = NULL;
+  GdkPixbuf *icon = NULL;
+
+  GtkTreeViewColumn *column = NULL;
+  GtkCellRenderer *renderer = NULL;
+
+  GtkListStore *list_store [3];
+
+  gchar *label_text [3] =
+    {N_("Received Calls"), N_("Placed Calls"), N_("Unanswered Calls")};
+  label_text [0] = gettext (label_text [0]);
+  label_text [1] = gettext (label_text [1]);
+  label_text [2] = gettext (label_text [2]);
+
+  static GtkTargetEntry dnd_targets [] =
+    {
+      {"text/plain", GTK_TARGET_SAME_APP, 0}
+    };
+
+
+  window = gtk_dialog_new ();
+  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLEAR,
CLEAR_BUTTON_ID);
+  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLOSE,
CLOSE_BUTTON_ID);
+  g_object_set_data_full (G_OBJECT (window), "window_name",
+			  g_strdup ("calls_history_window"), g_free);
+
+  gtk_window_set_title (GTK_WINDOW (window), _("Calls History"));
+  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+  icon = gtk_widget_render_icon (GTK_WIDGET (window),
+				 GM_STOCK_CALLS_HISTORY,
+				 GTK_ICON_SIZE_MENU, NULL);
+  gtk_window_set_icon (GTK_WINDOW (window), icon);
+  g_object_unref (icon);
+
+  notebook = gtk_notebook_new ();
+  gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), notebook,
+		      TRUE, TRUE, 0);
+
+  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
+
+    label = gtk_label_new (N_(label_text [i]));
+    scr = gtk_scrolled_window_new (NULL, NULL);
+    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr),
+				    GTK_POLICY_AUTOMATIC,
+				    GTK_POLICY_AUTOMATIC);
+
+    list_store [i] =
+      gtk_list_store_new (6,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING);
+
+    tree_view =
+      gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store [i]));
+    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Date"),
+						       renderer,
+						       "text",
+						       0,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Remote User"),
+						       renderer,
+						       "text",
+						       1,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "weight", "bold", NULL);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("URL"),
+						       renderer,
+						       "text",
+						       2,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    gtk_tree_view_column_set_visible (column, false);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Call Duration"),
+						       renderer,
+						       "text",
+						       3,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    if (i == 2)
+      gtk_tree_view_column_set_visible (column, false);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Call End
Reason"),
+						       renderer,
+						       "text",
+						       4,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Software"),
+						       renderer,
+						       "text",
+						       5,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
+
+
+    gtk_container_add (GTK_CONTAINER (scr), tree_view);
+    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scr, label);
+
+
+    /* Signal to call the person on the double-clicked row */
+    g_signal_connect (G_OBJECT (tree_view), "row_activated",
+		      G_CALLBACK (contact_activated_cb), GINT_TO_POINTER (3));
+
+    /* The drag and drop information */
+    gtk_drag_source_set (GTK_WIDGET (tree_view),
+			 GDK_BUTTON1_MASK, dnd_targets, 1,
+			 GDK_ACTION_COPY);
+    g_signal_connect (G_OBJECT (tree_view), "drag_data_get",
+		      G_CALLBACK (dnd_drag_data_get_cb), NULL);
+
+    /* Right-click on a contact */
+    g_signal_connect (G_OBJECT (tree_view), "event_after",
+		    G_CALLBACK (contact_clicked_cb), GINT_TO_POINTER (1));
+  }
+
+  chw->internal = new GmCallsHistoryWindowPrivate ();
+  chw->internal->received_calls_list_store = list_store [0];
+  chw->internal->given_calls_list_store = list_store [1];
+  chw->internal->missed_calls_list_store = list_store [2];
+
+  g_signal_connect_swapped (GTK_OBJECT (window),
+			    "response",
+			    G_CALLBACK (gnomemeeting_calls_history_window_response_event),
+			    (gpointer) window);
+
+  g_signal_connect_swapped (GTK_OBJECT (window),
+			    "delete-event",
+			    G_CALLBACK (gtk_widget_hide_on_delete),
+			    (gpointer) window);
+
+
+  /* Fill in the window with old calls */
+  gnomemeeting_calls_history_window_populate ();
+
+
+  gtk_widget_show_all (GTK_WIDGET (GTK_DIALOG (window)->vbox));
+
+  return window;
+}
diff -urN gnomemeeting-cvs-20040127.CVS/src/calls_history.h
gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.h
--- gnomemeeting-cvs-20040127.CVS/src/calls_history.h	1970-01-01
01:00:00.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.h	2004-01-27
13:11:28.000000000 +0100
@@ -0,0 +1,84 @@
+
+/* GnomeMeeting -- A Video-Conferencing application
+ * Copyright (C) 2000-2004 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
+ *
+ *
+ * GnomeMeting is licensed under the GPL license and as a special
exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OpenH323 and Pwlib, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OpenH323 program, as
long
+ * as you do follow the requirements of the GNU GPL for all the rest of the
+ * software thus combined.
+ */
+
+
+/*
+ *                         calls_history.h  -  description
+ *                         -----------------------
+ *   begin                : Sun Sep 1 2002
+ *   copyright            : (C) 2000-2004 by Damien Sandras
+ *   description          : This file contains functions to manage&display
+ *		the calls history
+ */
+
+#ifndef _CALLS_HISTORY_H
+#define _CALLS_HISTORY_H
+
+enum {
+  RECEIVED_CALL,
+  PLACED_CALL,
+  MISSED_CALL,
+  MAX_VALUE_CALL // hackish... sorry... just keep it last
+};
+
+typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
+typedef struct _GmCallsHistoryWindowPrivate GmCallsHistoryWindowPrivate;
+
+struct _GmCallsHistoryWindow
+{
+  GmCallsHistoryWindowPrivate *internal;
+};
+
+/* FIXME: will disappear real soon! */
+gboolean is_model_from_calls_history (GmCallsHistoryWindow *chw,
GtkTreeModel *model);
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Build the calls history window and returns a pointer to
it.
+ * PRE          :  /
+ */
+GtkWidget *gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *);
+
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Populate the calls history window.
+ * PRE          :  /
+ */
+void gnomemeeting_calls_history_window_populate ();
+
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Add a call to the calls history window.
+ * PRE          :  /
+ */
+void gnomemeeting_calls_history_window_add_call (int,
+						 const char *,
+						 const char *,
+						 const char *,
+						 const char *,
+						 const char *);
+
+#endif
diff -urN gnomemeeting-cvs-20040127.CVS/src/common.h
gnomemeeting-cvs-20040127.CVS.patched/src/common.h
--- gnomemeeting-cvs-20040127.CVS/src/common.h	2004-01-24 23:27:39.000000000
+0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/common.h	2004-01-27
10:07:53.000000000 +0100
@@ -122,7 +122,6 @@
 typedef struct _GmLdapWindowPage GmLdapWindowPage;
 typedef struct _GmTextChat GmTextChat;
 typedef struct _GmDruidWindow GmDruidWindow;
-typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
 typedef struct _GmRtpData GmRtpData;


@@ -293,13 +292,6 @@
 };


-struct _GmCallsHistoryWindow
-{
-  GtkListStore *given_calls_list_store;
-  GtkListStore *received_calls_list_store;
-  GtkListStore *missed_calls_list_store;
-};
-

 struct _GmPrefWindow
 {
diff -urN gnomemeeting-cvs-20040127.CVS/src/gnomemeeting.h
gnomemeeting-cvs-20040127.CVS.patched/src/gnomemeeting.h
--- gnomemeeting-cvs-20040127.CVS/src/gnomemeeting.h	2004-01-20
12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/gnomemeeting.h	2004-01-27
13:10:54.000000000 +0100
@@ -41,7 +41,7 @@

 #include "common.h"
 #include "endpoint.h"
-
+#include "calls_history.h"

 /**
  * COMMON NOTICE: The Application must be initialized with Init after its
diff -urN gnomemeeting-cvs-20040127.CVS/src/ldap_window.cpp
gnomemeeting-cvs-20040127.CVS.patched/src/ldap_window.cpp
--- gnomemeeting-cvs-20040127.CVS/src/ldap_window.cpp	2004-01-25
18:27:50.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/ldap_window.cpp	2004-01-27
10:07:54.000000000 +0100
@@ -285,9 +285,7 @@
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));

   /* The source can be either the addressbook OR the calls history */
-  if (src_model == GTK_TREE_MODEL (chw->given_calls_list_store)
-      || src_model == GTK_TREE_MODEL (chw->received_calls_list_store)
-      || src_model == GTK_TREE_MODEL (chw->missed_calls_list_store)) {
+  if (is_model_from_calls_history (chw, src_model)) {

     src_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW
(src_widget));

diff -urN gnomemeeting-cvs-20040127.CVS/src/Makefile.am
gnomemeeting-cvs-20040127.CVS.patched/src/Makefile.am
--- gnomemeeting-cvs-20040127.CVS/src/Makefile.am	2004-01-02
19:48:15.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/Makefile.am	2004-01-27
13:11:37.000000000 +0100
@@ -10,6 +10,7 @@
 	common.h		\
 	callbacks.cpp		\
 	callbacks.h		\
+	calls_history.cpp	\
 	gdkvideoio.cpp		\
 	gdkvideoio.h		\
 	gnomemeeting.cpp	\
diff -urN gnomemeeting-cvs-20040127.CVS/src/tools.cpp
gnomemeeting-cvs-20040127.CVS.patched/src/tools.cpp
--- gnomemeeting-cvs-20040127.CVS/src/tools.cpp	2004-01-24
23:27:40.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/tools.cpp	2004-01-27
15:34:08.000000000 +0100
@@ -41,14 +41,11 @@

 #include "tools.h"
 #include "gnomemeeting.h"
-#include "callbacks.h"
-#include "ldap_window.h"
 #include "misc.h"

 #include "gconf_widgets_extensions.h"
 #include "gnome_prefs_window.h"
-#include "stock-icons.h"
-
+//#include "stock-icons.h"

 extern GtkWidget *gm;

@@ -59,13 +56,6 @@
 static void microtelco_consult_cb (GtkWidget *,
 				   gpointer);

-static void dnd_drag_data_get_cb (GtkWidget *,
-				  GdkDragContext *,
-				  GtkSelectionData *,
-				  guint,
-				  guint,
-				  gpointer);
-

 /* DESCRIPTION  :  This callback is called when the user validates an
answer
  *                 to the PC-To-Phone window.
@@ -157,374 +147,6 @@
   g_free (pin);
 }

-
-/* DESCRIPTION  :  This callback is called when the user has released the
drag.
- * BEHAVIOR     :  Puts the required data into the selection_data, we put
- *                 name and the url fields for now.
- * PRE          :  data = the type of the page from where the drag occured
:
- *                 CONTACTS_GROUPS or CONTACTS_SERVERS.
- */
-static void
-dnd_drag_data_get_cb (GtkWidget *tree_view,
-		      GdkDragContext *dc,
-		      GtkSelectionData *selection_data,
-		      guint info,
-		      guint t,
-		      gpointer data)
-{
-  GtkTreeSelection *selection = NULL;
-  GtkTreeModel *model = NULL;
-  GtkTreeIter iter;
-
-  gchar *contact_name = NULL;
-  gchar *contact_url = NULL;
-  gchar *drag_data = NULL;
-
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
-
-  if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
-
-    gtk_tree_model_get (GTK_TREE_MODEL (model), &iter,
-			1, &contact_name,
-			2, &contact_url, -1);
-
-    if (contact_name && contact_url) {
-
-      drag_data = g_strdup_printf ("%s|%s", contact_name, contact_url);
-
-      gtk_selection_data_set (selection_data,
-			      selection_data->target,
-			      8,
-			      (const guchar *) drag_data,
-			      strlen (drag_data));
-      g_free (drag_data);
-    }
-  }
-
-  g_free (contact_name);
-  g_free (contact_url);
-}
-
-
-/* The functions */
-void
-gnomemeeting_calls_history_window_populate ()
-{
-  GtkTreeIter iter;
-  GtkListStore *list_store = NULL;
-
-  gchar *gconf_key = NULL;
-  gchar **call_data = NULL;
-
-  GSList *calls_list = NULL;
-
-  GmCallsHistoryWindow *chw = NULL;
-
-  chw = GnomeMeeting::Process ()->GetCallsHistoryWindow ();
-
-  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
-
-    switch (i) {
-
-    case RECEIVED_CALL:
-      list_store = chw->received_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY
"calls_history_window/received_calls_history");
-      break;
-    case PLACED_CALL:
-      list_store = chw->given_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
-      break;
-    case MISSED_CALL:
-      list_store = chw->missed_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
-      break;
-    }
-
-    gtk_list_store_clear (list_store);
-
-    calls_list = gconf_get_string_list (gconf_key);
-
-    while (calls_list && calls_list->data) {
-
-      call_data = g_strsplit ((char *) calls_list->data, "|", 0);
-
-      if (call_data) {
-
-	gtk_list_store_append (list_store, &iter);
-	gtk_list_store_set (list_store,
-			    &iter,
-			    0, call_data [0],
-			    1, call_data [1],
-			    2, call_data [2],
-			    3, call_data [3],
-			    4, call_data [4],
-			    5, call_data [5],
-			    -1);
-      }
-
-      g_strfreev (call_data);
-
-      calls_list = g_slist_next (calls_list);
-    }
-
-    g_free (gconf_key);
-    g_slist_free (calls_list);
-  }
-}
-
-
-void
-gnomemeeting_calls_history_window_add_call (int i,
-					    const char *remote_user,
-					    const char *ip,
-					    const char *duration,
-					    const char *reason,
-					    const char *software)
-{
-  PString time;
-
-  gchar *gconf_key = NULL;
-  gchar *call_data = NULL;
-
-  GSList *calls_list = NULL;
-  GSList *tmp = NULL;
-
-  time = PTime ().AsString ("www dd MMM, hh:mm:ss");
-
-  switch (i) {
-
-  case RECEIVED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY
"calls_history_window/received_calls_history");
-    break;
-  case PLACED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY
"calls_history_window/placed_calls_history");
-    break;
-  case MISSED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY
"calls_history_window/missed_calls_history");
-    break;
-  }
-
-
-  call_data =
-    g_strdup_printf ("%s|%s|%s|%s|%s|%s",
-		     (const char *) time ? (const char *) time : "",
-		     remote_user ? remote_user : "",
-		     ip ? ip : "",
-		     duration ? duration : "",
-		     reason ? reason : "",
-		     software ? software : "");
-
-  calls_list = gconf_get_string_list (gconf_key);
-  calls_list = g_slist_append (calls_list, (gpointer) call_data);
-
-  while (g_slist_length (calls_list) > 100) {
-
-    tmp = g_slist_nth (calls_list, 0);
-    calls_list = g_slist_remove_link (calls_list, tmp);
-
-    g_slist_free_1 (tmp);
-  }
-
-  gconf_set_string_list (gconf_key, calls_list);
-
-  g_free (gconf_key);
-  g_slist_free (calls_list);
-}
-
-#define CLOSE_BUTTON_ID 0
-#define CLEAR_BUTTON_ID 1
-
-void
-gnomemeeting_calls_history_window_response_event (GtkDialog *dialog, gint
id, gpointer window)
-{
-  switch (id) {
-    case CLOSE_BUTTON_ID:
-      gnomemeeting_window_hide (GTK_WIDGET (window));
-      break;
-    case CLEAR_BUTTON_ID:
-      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/received_calls_history", NULL);
-      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/placed_calls_history", NULL);
-      gconf_set_string_list (USER_INTERFACE_KEY
"calls_history_window/missed_calls_history", NULL);
-      break;
-  }
-}
-
-GtkWidget *
-gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *chw)
-{
-  GtkWidget *window = NULL;
-  GtkWidget *notebook = NULL;
-  GtkWidget *scr = NULL;
-  GtkWidget *label = NULL;
-  GtkWidget *tree_view = NULL;
-  GdkPixbuf *icon = NULL;
-
-  GtkTreeViewColumn *column = NULL;
-  GtkCellRenderer *renderer = NULL;
-
-  GtkListStore *list_store [3];
-
-  gchar *label_text [3] =
-    {N_("Received Calls"), N_("Placed Calls"), N_("Unanswered Calls")};
-  label_text [0] = gettext (label_text [0]);
-  label_text [1] = gettext (label_text [1]);
-  label_text [2] = gettext (label_text [2]);
-
-  static GtkTargetEntry dnd_targets [] =
-    {
-      {"text/plain", GTK_TARGET_SAME_APP, 0}
-    };
-
-
-  window = gtk_dialog_new ();
-  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLEAR,
CLEAR_BUTTON_ID);
-  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLOSE,
CLOSE_BUTTON_ID);
-  g_object_set_data_full (G_OBJECT (window), "window_name",
-			  g_strdup ("calls_history_window"), g_free);
-
-  gtk_window_set_title (GTK_WINDOW (window), _("Calls History"));
-  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
-  icon = gtk_widget_render_icon (GTK_WIDGET (window),
-				 GM_STOCK_CALLS_HISTORY,
-				 GTK_ICON_SIZE_MENU, NULL);
-  gtk_window_set_icon (GTK_WINDOW (window), icon);
-  g_object_unref (icon);
-
-  notebook = gtk_notebook_new ();
-  gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), notebook,
-		      TRUE, TRUE, 0);
-
-  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
-
-    label = gtk_label_new (N_(label_text [i]));
-    scr = gtk_scrolled_window_new (NULL, NULL);
-    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr),
-				    GTK_POLICY_AUTOMATIC,
-				    GTK_POLICY_AUTOMATIC);
-
-    list_store [i] =
-      gtk_list_store_new (6,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING);
-
-    tree_view =
-      gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store [i]));
-    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Date"),
-						       renderer,
-						       "text",
-						       0,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Remote User"),
-						       renderer,
-						       "text",
-						       1,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "weight", "bold", NULL);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("URL"),
-						       renderer,
-						       "text",
-						       2,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    gtk_tree_view_column_set_visible (column, false);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Call Duration"),
-						       renderer,
-						       "text",
-						       3,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    if (i == 2)
-      gtk_tree_view_column_set_visible (column, false);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Call End
Reason"),
-						       renderer,
-						       "text",
-						       4,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Software"),
-						       renderer,
-						       "text",
-						       5,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
-
-
-    gtk_container_add (GTK_CONTAINER (scr), tree_view);
-    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scr, label);
-
-
-    /* Signal to call the person on the double-clicked row */
-    g_signal_connect (G_OBJECT (tree_view), "row_activated",
-		      G_CALLBACK (contact_activated_cb), GINT_TO_POINTER (3));
-
-    /* The drag and drop information */
-    gtk_drag_source_set (GTK_WIDGET (tree_view),
-			 GDK_BUTTON1_MASK, dnd_targets, 1,
-			 GDK_ACTION_COPY);
-    g_signal_connect (G_OBJECT (tree_view), "drag_data_get",
-		      G_CALLBACK (dnd_drag_data_get_cb), NULL);
-
-    /* Right-click on a contact */
-    g_signal_connect (G_OBJECT (tree_view), "event_after",
-		    G_CALLBACK (contact_clicked_cb), GINT_TO_POINTER (1));
-  }
-
-  chw->received_calls_list_store = list_store [0];
-  chw->given_calls_list_store = list_store [1];
-  chw->missed_calls_list_store = list_store [2];
-
-  g_signal_connect_swapped (GTK_OBJECT (window),
-			    "response",
-			    G_CALLBACK (gnomemeeting_calls_history_window_response_event),
-			    (gpointer) window);
-
-  g_signal_connect_swapped (GTK_OBJECT (window),
-			    "delete-event",
-			    G_CALLBACK (gtk_widget_hide_on_delete),
-			    (gpointer) window);
-
-
-  /* Fill in the window with old calls */
-  gnomemeeting_calls_history_window_populate ();
-
-
-  gtk_widget_show_all (GTK_WIDGET (GTK_DIALOG (window)->vbox));
-
-  return window;
-}
-
-
 GtkWidget *
 gnomemeeting_pc_to_phone_window_new ()
 {
diff -urN gnomemeeting-cvs-20040127.CVS/src/tools.h
gnomemeeting-cvs-20040127.CVS.patched/src/tools.h
--- gnomemeeting-cvs-20040127.CVS/src/tools.h	2004-01-25 18:27:52.000000000
+0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/tools.h	2004-01-27
12:10:03.000000000 +0100
@@ -42,40 +42,6 @@

 #include "common.h"

-enum {
-  RECEIVED_CALL,
-  PLACED_CALL,
-  MISSED_CALL,
-  MAX_VALUE_CALL // hackish... sorry... just keep it last
-};
-
-/* The functions  */
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Build the calls history window and returns a pointer to
it.
- * PRE          :  /
- */
-GtkWidget *gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Populate the calls history window.
- * PRE          :  /
- */
-void gnomemeeting_calls_history_window_populate ();
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Add a call to the calls history window.
- * PRE          :  /
- */
-void gnomemeeting_calls_history_window_add_call (int,
-						 const char *,
-						 const char *,
-						 const char *,
-						 const char *,
-						 const char *);
-
 /* DESCRIPTION  :  /
  * BEHAVIOR     :  Build the log window and returns it.
  * PRE          :  /

--=-uaceEw++FZgra8+Df/yr
Content-Disposition: attachment; filename=private_text_chat.patch
Content-Type: text/x-patch; name=private_text_chat.patch;
charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

diff -ur gnomemeeting-cvs-20040126.CVS/src/chat_window.cpp
gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.cpp
--- gnomemeeting-cvs-20040126.CVS/src/chat_window.cpp	2004-01-22
22:07:29.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.cpp	2004-01-26
11:19:01.000000000 +0100
@@ -54,6 +54,16 @@
 #include "gtk-text-view-addon.h"
 #include "gtk_menu_extensions.h"

+struct _GmTextChatPrivate
+{
+  GtkWidget     *text_view;
+  GtkTextBuffer *text_buffer;
+  gboolean	 something_typed;
+  gchar       	 *begin_msg;
+};
+
+
+
 extern GtkWidget *gm;


@@ -185,10 +195,10 @@

   gw = GnomeMeeting::Process ()->GetMainWindow ();

-  gtk_text_buffer_get_start_iter (chat->text_buffer, &start_iter);
-  gtk_text_buffer_get_end_iter (chat->text_buffer, &end_iter);
+  gtk_text_buffer_get_start_iter (chat->internal->text_buffer,
&start_iter);
+  gtk_text_buffer_get_end_iter (chat->internal->text_buffer, &end_iter);

-  gtk_text_buffer_delete (chat->text_buffer, &start_iter, &end_iter);
+  gtk_text_buffer_delete (chat->internal->text_buffer, &start_iter,
&end_iter);

   gtk_menu_set_sensitive (gw->main_menu, "clear_text_chat", FALSE);
 }
@@ -196,11 +206,11 @@
 void
 gnomemeeting_text_chat_call_start_notification (void)
 {
-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;

   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal;

   // find the time at which the event occured
   time_t *timeptr;
@@ -227,7 +237,7 @@
 gnomemeeting_text_chat_call_stop_notification (void)
 {
   GtkTextIter iter;
-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;
   gchar *text = NULL;

@@ -246,7 +256,7 @@

   // displays the message
   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal;
   gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);

   if (chat->something_typed == TRUE)
@@ -266,11 +276,11 @@
   GtkTextIter iter;
   GtkTextMark *mark;

-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;

   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal ;

   gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);

@@ -337,36 +347,36 @@
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_ALWAYS);
-
-  chat->begin_msg = NULL;
-  chat->something_typed = FALSE;
-
-  chat->text_view = gtk_text_view_new_with_regex ();
-  gtk_text_view_set_editable (GTK_TEXT_VIEW (chat->text_view), FALSE);
-  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (chat->text_view),
+  chat->internal = new _GmTextChatPrivate ();
+  chat->internal->begin_msg = NULL;
+  chat->internal->something_typed = FALSE;
+
+  chat->internal->text_view = gtk_text_view_new_with_regex ();
+  gtk_text_view_set_editable (GTK_TEXT_VIEW (chat->internal->text_view),
FALSE);
+  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (chat->internal->text_view),
 			       GTK_WRAP_WORD);

-  chat->text_buffer =
-    gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->text_view));
+  chat->internal->text_buffer =
+    gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->internal->text_view));

-  gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);
-  gtk_text_view_set_cursor_visible  (GTK_TEXT_VIEW (chat->text_view),
false);
+  gtk_text_buffer_get_end_iter (chat->internal->text_buffer, &iter);
+  gtk_text_view_set_cursor_visible  (GTK_TEXT_VIEW
(chat->internal->text_view), false);

-  mark = gtk_text_buffer_create_mark (chat->text_buffer,
+  mark = gtk_text_buffer_create_mark (chat->internal->text_buffer,
 				      "current-position", &iter, FALSE);

-  gtk_text_buffer_create_tag (chat->text_buffer, "primary-user",
+  gtk_text_buffer_create_tag (chat->internal->text_buffer, "primary-user",
 			      "foreground", "red",
 			      "weight", 900, NULL);

-  gtk_text_buffer_create_tag (chat->text_buffer,
+  gtk_text_buffer_create_tag (chat->internal->text_buffer,
 			      "secondary-user",
 			      "foreground", "darkblue",
 			      "weight", 900, NULL);


   /* Create the various tags for the different urls types */
-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer,
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer,
 					  "uri-http",
 					  "foreground", "blue",
 					  NULL);
@@ -383,7 +393,7 @@
   }


-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "uri-h323",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer,
"uri-h323",
 					  "foreground", "pink",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,
@@ -398,14 +408,14 @@
 				       NULL);
   }

-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "smileys",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer,
"smileys",
 					  "foreground", "grey",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,

"(:[-]?(\\)|\\(|o|O|p|P|D|\\||/)|\\}:(\\(|\\))|\\|[-]?(\\(|\\))|:'\\(|:\\[|:
-(\\.|\\*|x)|;[-]?\\)|(8|B)[-]?\\)|X(\\(|\\||\\))|\\((\\.|\\|)\\)|x\\*O)"))
     gtk_text_tag_set_regex_display (regex_tag,
gtk_text_buffer_insert_smiley);

-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "latex",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer,
"latex",
 					  "foreground", "grey",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,
@@ -417,7 +427,7 @@
   /* */
   frame = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
-  gtk_container_add (GTK_CONTAINER (scr), chat->text_view);
+  gtk_container_add (GTK_CONTAINER (scr), chat->internal->text_view);
   gtk_container_add (GTK_CONTAINER (frame), scr);

   gtk_table_attach (GTK_TABLE (table), GTK_WIDGET (frame),
@@ -448,7 +458,7 @@
 		    0, 0);

   g_signal_connect (GTK_OBJECT (entry), "activate",
-		    G_CALLBACK (chat_entry_activate), chat->text_view);
+		    G_CALLBACK (chat_entry_activate), chat->internal->text_view);

   return chat_window;
 }
diff -ur gnomemeeting-cvs-20040126.CVS/src/chat_window.h
gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.h
--- gnomemeeting-cvs-20040126.CVS/src/chat_window.h	2004-01-20
12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.h	2004-01-26
09:42:08.000000000 +0100
@@ -46,6 +46,14 @@

 G_BEGIN_DECLS

+typedef struct _GmTextChat GmTextChat;
+typedef struct _GmTextChatPrivate GmTextChatPrivate;
+
+struct _GmTextChat
+{
+  GtkWidget *window;
+  GmTextChatPrivate *internal;
+};

 /* DESCRIPTION  :  /
  * BEHAVIOR     :  Initializes the text chat view.
diff -ur gnomemeeting-cvs-20040126.CVS/src/common.h
gnomemeeting-cvs-20040126.CVS.patched/src/common.h
--- gnomemeeting-cvs-20040126.CVS/src/common.h	2004-01-24 23:27:39.000000000
+0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/common.h	2004-01-26
09:29:23.000000000 +0100
@@ -120,7 +120,6 @@
 typedef struct _GmPrefWindow GmPrefWindow;
 typedef struct _GmLdapWindow GmLdapWindow;
 typedef struct _GmLdapWindowPage GmLdapWindowPage;
-typedef struct _GmTextChat GmTextChat;
 typedef struct _GmDruidWindow GmDruidWindow;
 typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
 typedef struct _GmRtpData GmRtpData;
@@ -156,14 +155,6 @@
 } ControlPanelSection;


-struct _GmTextChat
-{
-  GtkWidget     *text_view;
-  GtkTextBuffer *text_buffer;
-  gboolean	something_typed;
-  gchar		*begin_msg;
-};
-

 struct _GmRtpData
 {
diff -ur gnomemeeting-cvs-20040126.CVS/src/endpoint.h
gnomemeeting-cvs-20040126.CVS.patched/src/endpoint.h
--- gnomemeeting-cvs-20040126.CVS/src/endpoint.h	2004-01-24
23:27:40.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/endpoint.h	2004-01-26
09:32:01.000000000 +0100
@@ -43,6 +43,7 @@
 #include "../config.h"

 #include "common.h"
+#include "chat_window.h"

 #ifdef HAS_IXJ
 #include <ixjlid.h>
diff -ur gnomemeeting-cvs-20040126.CVS/src/gnomemeeting.h
gnomemeeting-cvs-20040126.CVS.patched/src/gnomemeeting.h
--- gnomemeeting-cvs-20040126.CVS/src/gnomemeeting.h	2004-01-20
12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/gnomemeeting.h	2004-01-26
09:32:37.000000000 +0100
@@ -40,6 +40,7 @@
 #define _GNOMEMEETING_H_

 #include "common.h"
+#include "chat_window.h"
 #include "endpoint.h"



--=-uaceEw++FZgra8+Df/yr--



--__--__--

_______________________________________________
Gnomemeeting-devel-list mailing list
Gnomemeeting-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gnomemeeting-devel-list


End of Gnomemeeting-devel-list Digest




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]