]> git.0d.be Git - empathy.git/commitdiff
Merge branch 'debug'
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Thu, 4 Jun 2009 16:09:44 +0000 (17:09 +0100)
committerJonny Lamb <jonny.lamb@collabora.co.uk>
Thu, 4 Jun 2009 16:09:44 +0000 (17:09 +0100)
Conflicts:
extensions/Makefile.am
extensions/misc.xml
po/POTFILES.in

Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
1  2 
extensions/Makefile.am
extensions/misc.xml
po/POTFILES.in
src/Makefile.am
src/empathy-main-window.c
src/empathy-main-window.ui

diff --combined extensions/Makefile.am
index 85d2c0eda2713256eb0e9298c8f7cbb924ab3894,f179ebc1972907ed6e7827da6cfd5c0cdec2d335..0ed6fc5223a5f97df74e6b1d85b147a4bb09a008
@@@ -1,5 -1,3 +1,5 @@@
 +include $(top_srcdir)/tools/shave.mk
 +
  tools_dir = $(top_srcdir)/tools
  
  AM_CPPFLAGS = $(DISABLE_DEPRECATED)
@@@ -15,8 -13,11 +15,9 @@@ EXTRA_DIST = 
      generic-types.xml \
      misc.xml \
      Channel_Handler.xml \
-     Tube_Handler.xml
 +    Connection_Interface_Location.xml \
 -    Channel_Interface_Tube.xml \
 -    Channel_Type_DBus_Tube.xml \
 -    Channel_Type_Stream_Tube.xml \
+     Tube_Handler.xml \
+     Debug.xml
  
  noinst_LTLIBRARIES = libemp-extensions.la
  
@@@ -60,45 -61,45 +61,45 @@@ XSLTPROCFLAGS = --nonet --novali
  
  _gen/all.xml: all.xml $(wildcard *.xml)
        $(mkdir_p) _gen
 -      $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
 +      $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
                $< > $@
  
  extensions.html: _gen/all.xml $(tools_dir)/doc-generator.xsl
 -      $(XSLTPROC) $(XSLTPROCFLAGS) \
 +      $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) \
                --param "allow-undefined-interfaces" "true()" \
                $(tools_dir)/doc-generator.xsl \
                $< > $@
  
  _gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \
        $(top_srcdir)/tools/glib-gtypes-generator.py
 -      $(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
 +      $(QUIET_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
                $< _gen/gtypes Emp
  
  _gen/signals-marshal.list: _gen/all.xml \
        $(tools_dir)/glib-signals-marshal-gen.py
 -      $(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@
  
  _gen/signals-marshal.h: _gen/signals-marshal.list Makefile.am
 -      $(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@
 +      $(QUIET_GEN)$(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@
  
  _gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am
 -      { echo '#include "_gen/signals-marshal.h"' && \
 +      $(QUIET_GEN){ echo '#include "_gen/signals-marshal.h"' && \
        $(GLIB_GENMARSHAL) --body --prefix=_emp_ext_marshal $< ; } > $@
  
  _gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \
        $(tools_dir)/glib-client-marshaller-gen.py
 -      $(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \
                _emp_ext > $@
  
  _gen/enums.h: _gen/all.xml \
        $(tools_dir)/c-constants-gen.py
 -      $(PYTHON) $(tools_dir)/c-constants-gen.py \
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/c-constants-gen.py \
                Emp \
                $< > $@
  
  _gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \
        $(tools_dir)/glib-interfaces-gen.py
 -      $(PYTHON) $(tools_dir)/glib-interfaces-gen.py \
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-interfaces-gen.py \
                Emp _gen/interfaces-body.h _gen/interfaces.h $<
  
  # Generated files which must be generated per "category". Each TpProxy
  
  _gen/misc.xml: misc.xml $(wildcard *.xml)
        $(mkdir_p) _gen
 -      $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
 +      $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
                $< > $@
  
  _gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \
        $(tools_dir)/glib-client-gen.py
 -      $(PYTHON) $(tools_dir)/glib-client-gen.py \
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \
                --group=misc \
                --subclass=TpProxy \
                --subclass-assert=TP_IS_PROXY \
  
  _gen/svc-misc.c _gen/svc-misc.h: _gen/misc.xml \
        $(tools_dir)/glib-ginterface-gen.py
 -      $(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
 +      $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
                --filename=_gen/svc-misc \
                --signal-marshal-prefix=_emp_ext \
                --include='<telepathy-glib/dbus.h>' \
diff --combined extensions/misc.xml
index 8b29ebb7cb5d27228623bc97cc18e5bcf40742d9,38e802e97485145cb0b445f37b717689542fa798..dd3125fb280ab2b5d930ee5651aff29ca25168cd
@@@ -6,6 -6,9 +6,7 @@@
  
  <xi:include href="Channel_Handler.xml"/>
  <xi:include href="Tube_Handler.xml"/>
 -<xi:include href="Channel_Interface_Tube.xml" />
 -<xi:include href="Channel_Type_DBus_Tube.xml" />
 -<xi:include href="Channel_Type_Stream_Tube.xml" />
 +<xi:include href="Connection_Interface_Location.xml"/>
+ <xi:include href="Debug.xml" />
  
  </tp:spec>
diff --combined po/POTFILES.in
index f5f4f401b256b8f718bbe5d2fc0a408219450642,01b279d1a7ac28736fd06c573e2c95214c2ec8dd..e80a29c67d2c908c9074dd234461dbea90af5a3c
@@@ -4,11 -4,8 +4,11 @@@
  data/empathy.desktop.in.in
  data/empathy.schemas.in
  
 +libempathy/empathy-ft-handler.c
  libempathy/empathy-tp-contact-list.c
 +libempathy/empathy-tp-file.c
  libempathy/empathy-utils.c
 +libempathy/empathy-time.c
  
  libempathy-gtk/empathy-account-chooser.c
  libempathy-gtk/empathy-account-widget.c
@@@ -40,6 -37,8 +40,6 @@@ libempathy-gtk/empathy-log-window.
  [type: gettext/glade]libempathy-gtk/empathy-log-window.ui
  [type: gettext/glade]libempathy-gtk/empathy-new-message-dialog.ui
  libempathy-gtk/empathy-presence-chooser.c
 -libempathy-gtk/empathy-spell-dialog.c
 -[type: gettext/glade]libempathy-gtk/empathy-spell-dialog.ui
  libempathy-gtk/empathy-status-preset-dialog.c
  [type: gettext/glade]libempathy-gtk/empathy-status-preset-dialog.ui
  libempathy-gtk/empathy-theme-boxes.c
@@@ -81,6 -80,5 +81,7 @@@ src/empathy-preferences.
  src/empathy-status-icon.c
  [type: gettext/glade]src/empathy-status-icon.ui
  src/empathy-tube-dispatch.c
 -
 +[type: gettext/glade]src/empathy-call-window-fullscreen.ui
 +src/empathy-map-view.c
 +[type: gettext/glade]src/empathy-map-view.ui
+ src/empathy-debug-dialog.c
diff --combined src/Makefile.am
index 8973d533f28ee21dc39d46fdc3e83f85440f9db7,b776396aaa13a78ca8ac5fbb702630f9770f9efe..081b6f4f2aced30d142f0f9b58cc9ccb9416c3f8
@@@ -1,20 -1,16 +1,20 @@@
 +include $(top_srcdir)/tools/shave.mk
 +
  AM_CPPFLAGS =                                         \
        -I$(top_srcdir)                                 \
        $(EMPATHY_CFLAGS)                               \
        $(LIBNOTIFY_CFLAGS)                             \
 -      $(WARN_CFLAGS)                                  \
 +      $(LIBCHAMPLAIN_CFLAGS)                          \
        $(DISABLE_DEPRECATED)
 +      $(WARN_CFLAGS)
  
  LDADD =                                                               \
        $(top_builddir)/libempathy-gtk/libempathy-gtk.la        \
        $(top_builddir)/libempathy/libempathy.la                \
        $(top_builddir)/extensions/libemp-extensions.la         \
        $(LIBNOTIFY_LIBS)                                       \
 -      $(EMPATHY_LIBS)
 +      $(EMPATHY_LIBS)                                         \
 +      $(LIBCHAMPLAIN_LIBS)
  
  bin_PROGRAMS =                        \
        empathy                 \
@@@ -24,13 -20,14 +24,14 @@@ BUILT_SOURCES= 
        empathy-tube-dispatch-enumtypes.h \
        empathy-tube-dispatch-enumtypes.c
  
 -empathy_SOURCES =                                                     \
 -      bacon-message-connection.c bacon-message-connection.h           \
 +empathy_handwritten_source = \
        empathy.c                                                       \
        empathy-about-dialog.c empathy-about-dialog.h                   \
        empathy-accounts-dialog.c empathy-accounts-dialog.h             \
        empathy-call-window.c empathy-call-window.h                     \
 +      empathy-call-window-fullscreen.c empathy-call-window-fullscreen.h                       \
        empathy-chatrooms-window.c empathy-chatrooms-window.h           \
+       empathy-debug-dialog.c empathy-debug-dialog.h                   \
        empathy-chat-window.c empathy-chat-window.h                     \
        empathy-event-manager.c empathy-event-manager.h                 \
        empathy-ft-manager.c empathy-ft-manager.h                       \
        empathy-preferences.c empathy-preferences.h                     \
        empathy-sidebar.c empathy-sidebar.h                     \
        empathy-status-icon.c empathy-status-icon.h                     \
 -      empathy-tube-dispatch.c empathy-tube-dispatch.h                 \
 +      empathy-tube-dispatch.c empathy-tube-dispatch.h
 +
 +empathy_SOURCES =                                                     \
 +      $(empathy_handwritten_source)                                   \
 +      bacon-message-connection.c bacon-message-connection.h           \
        ephy-spinner.c ephy-spinner.h
  
  nodist_empathy_SOURCES = $(BUILT_SOURCES)
  
  empathy_logs_SOURCES = empathy-logs.c
  
 +check_c_sources = \
 +    $(empathy_handwritten_source) \
 +    $(empathy_logs_SOURCES)
 +include $(top_srcdir)/tools/check-coding-style.mk
 +check-local: check-coding-style
 +
  uidir = $(datadir)/empathy
  ui_DATA =                                     \
        empathy-accounts-dialog.ui              \
        empathy-call-window.ui                  \
 +      empathy-call-window-fullscreen.ui                       \
        empathy-chatrooms-window.ui             \
        empathy-chat-window.ui                  \
        empathy-ft-manager.ui                   \
        empathy-preferences.ui                  \
        empathy-status-icon.ui
  
 +if HAVE_LIBCHAMPLAIN
 +empathy_SOURCES +=                            \
 +      empathy-map-view.c empathy-map-view.h
 +
 +ui_DATA +=                                    \
 +      empathy-map-view.ui
 +endif
 +
  dist_man_MANS =                       \
        empathy.1
  
  # rules for making the glib enum objects
  %-enumtypes.h: %.h Makefile.in
 -      glib-mkenums \
 +      $(QUIET_GEN)glib-mkenums \
        --fhead "#ifndef __$(shell echo $* | tr [:lower:]- [:upper:]_)_ENUM_TYPES_H__\n#define __$(shell echo $* | tr [:lower:]- [:upper:]_)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
        --fprod "/* enumerations from \"@filename@\" */\n" \
        --vhead "GType @enum_name@_get_type (void);\n#define $(shell echo $* | tr [:lower:]- [:upper:]_ | sed 's/_.*//')_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n"         \
@@@ -94,7 -72,7 +95,7 @@@
        $< > $@
  
  %-enumtypes.c: %.h Makefile.in
 -      glib-mkenums \
 +      $(QUIET_GEN)glib-mkenums \
        --fhead "#include <$*.h>\n#include <$*-enumtypes.h>" \
        --fprod "\n/* enumerations from \"@filename@\" */" \
        --vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {"     \
index 6dcd6975e58ecbb4f2cf56ba0d85908cd12542aa,9015a5d25bf30ccfa36046183565c411fe69bd39..5830d2b71b00c78c64fc5cf0a0b2a9d92f88ba20
@@@ -15,9 -15,9 +15,9 @@@
   *
   * 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.
 - * 
 + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 + * Boston, MA  02110-1301  USA
 + *
   * Authors: Xavier Claessens <xclaesse@gmail.com>
   */
  
  #include "ephy-spinner.h"
  #include "empathy-preferences.h"
  #include "empathy-about-dialog.h"
+ #include "empathy-debug-dialog.h"
  #include "empathy-new-chatroom-dialog.h"
 +#include "empathy-map-view.h"
  #include "empathy-chatrooms-window.h"
  #include "empathy-event-manager.h"
 +#include "empathy-ft-manager.h"
  
  #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
  #include <libempathy/empathy-debug.h>
@@@ -94,7 -93,7 +95,7 @@@ typedef struct 
        GtkWidget              *errors_vbox;
  
        GtkUIManager           *ui_manager;
 -      GtkAction              *chat_history;
 +      GtkAction              *view_history;
        GtkAction              *room_join_favorites;
        GtkWidget              *room_menu;
        GtkWidget              *room_separator;
@@@ -134,7 -133,7 +135,7 @@@ main_window_flash_foreach (GtkTreeMode
                           GtkTreeIter  *iter,
                           gpointer      user_data)
  {
 -      FlashForeachData *data = (FlashForeachData*) user_data;
 +      FlashForeachData *data = (FlashForeachData *) user_data;
        EmpathyContact   *contact;
        const gchar      *icon_name;
        GtkTreePath      *parent_path = NULL;
  
        /* To make sure the parent is shown correctly, we emit
         * the row-changed signal on the parent so it prompts
 -       * it to be refreshed by the filter func. 
 +       * it to be refreshed by the filter func.
         */
        if (gtk_tree_model_iter_parent (model, &parent_iter, iter)) {
                parent_path = gtk_tree_model_get_path (model, &parent_iter);
@@@ -563,8 -562,8 +564,8 @@@ main_window_connection_changed_cb (Empa
  static void
  main_window_contact_presence_changed_cb (EmpathyContactMonitor *monitor,
                                         EmpathyContact *contact,
 -                                       McPresence current,
 -                                       McPresence previous,
 +                                       TpConnectionPresenceType current,
 +                                       TpConnectionPresenceType previous,
                                         EmpathyMainWindow *window)
  {
        McAccount *account;
                return;
        }
  
 -      if (previous < MC_PRESENCE_AVAILABLE && current > MC_PRESENCE_OFFLINE) {
 -              /* someone is logging in */
 -              empathy_sound_play (GTK_WIDGET (window->window),
 -                                  EMPATHY_SOUND_CONTACT_CONNECTED);
 -              return;
 -      }
 -
 -      if (previous > MC_PRESENCE_OFFLINE && current < MC_PRESENCE_AVAILABLE) {
 -              /* someone is logging off */
 -              empathy_sound_play (GTK_WIDGET (window->window),
 -                                  EMPATHY_SOUND_CONTACT_DISCONNECTED);
 -      }
 +  if (tp_connection_presence_type_cmp_availability (previous,
 +     TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
 +    {
 +      /* contact was online */
 +      if (tp_connection_presence_type_cmp_availability (current,
 +          TP_CONNECTION_PRESENCE_TYPE_OFFLINE) <= 0)
 +        /* someone is logging off */
 +        empathy_sound_play (GTK_WIDGET (window->window),
 +          EMPATHY_SOUND_CONTACT_DISCONNECTED);
 +    }
 +  else
 +    {
 +      /* contact was offline */
 +      if (tp_connection_presence_type_cmp_availability (current,
 +          TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
 +        /* someone is logging in */
 +        empathy_sound_play (GTK_WIDGET (window->window),
 +          EMPATHY_SOUND_CONTACT_CONNECTED);
 +    }
  }
  
  static void
@@@ -671,7 -663,7 +672,7 @@@ main_window_chat_quit_cb (GtkActio
  }
  
  static void
 -main_window_chat_history_cb (GtkAction         *action,
 +main_window_view_history_cb (GtkAction         *action,
                             EmpathyMainWindow *window)
  {
        empathy_log_window_show (NULL, NULL, FALSE, GTK_WINDOW (window->window));
@@@ -692,14 -684,7 +693,14 @@@ main_window_chat_add_contact_cb (GtkAct
  }
  
  static void
 -main_window_chat_show_offline_cb (GtkToggleAction   *action,
 +main_window_view_show_ft_manager (GtkAction         *action,
 +                                EmpathyMainWindow *window)
 +{
 +      empathy_ft_manager_show ();
 +}
 +
 +static void
 +main_window_view_show_offline_cb (GtkToggleAction   *action,
                                  EmpathyMainWindow *window)
  {
        gboolean current;
        //empathy_sound_set_enabled (TRUE);
  }
  
 +static void
 +main_window_view_show_map_cb (GtkCheckMenuItem  *item,
 +                            EmpathyMainWindow *window)
 +{
 +#if HAVE_LIBCHAMPLAIN
 +      empathy_map_view_show ();
 +#endif
 +}
 +
  static void
  main_window_favorite_chatroom_join (EmpathyChatroom *chatroom)
  {
@@@ -945,6 -921,13 +946,13 @@@ main_window_help_about_cb (GtkActio
        empathy_about_dialog_new (GTK_WINDOW (window->window));
  }
  
+ static void
+ main_window_help_debug_cb (GtkAction         *action,
+                          EmpathyMainWindow *window)
+ {
+       empathy_debug_dialog_new (GTK_WINDOW (window->window));
+ }
  static void
  main_window_help_contents_cb (GtkAction         *action,
                              EmpathyMainWindow *window)
@@@ -1003,7 -986,7 +1011,7 @@@ main_window_account_created_or_deleted_
                                           McAccount              *account,
                                           EmpathyMainWindow      *window)
  {
 -      gtk_action_set_sensitive (window->chat_history,
 +      gtk_action_set_sensitive (window->view_history,
                empathy_account_manager_get_count (manager) > 0);
  }
  
@@@ -1063,7 -1046,7 +1071,7 @@@ main_window_notify_sort_criterium_cb (E
                g_free (str);
  
                if (enum_value) {
 -                      empathy_contact_list_store_set_sort_criterium (window->list_store, 
 +                      empathy_contact_list_store_set_sort_criterium (window->list_store,
                                                                       enum_value->value);
                }
        }
@@@ -1107,7 -1090,6 +1115,7 @@@ empathy_main_window_show (void
        GtkWidget                *sw;
        GtkToggleAction          *show_offline_widget;
        GtkWidget                *ebox;
 +      GtkAction                *show_map_widget;
        GtkToolItem              *item;
        gboolean                  show_offline;
        gboolean                  show_avatars;
                                       "main_vbox", &window->main_vbox,
                                       "errors_vbox", &window->errors_vbox,
                                       "ui_manager", &window->ui_manager,
 -                                     "chat_show_offline", &show_offline_widget,
 -                                     "chat_history", &window->chat_history,
 +                                     "view_show_offline", &show_offline_widget,
 +                                     "view_history", &window->view_history,
 +                                     "view_show_map", &show_map_widget,
                                       "room_join_favorites", &window->room_join_favorites,
                                       "presence_toolbar", &window->presence_toolbar,
                                       "roster_scrolledwindow", &sw,
                              "main_window", "configure_event", main_window_configure_event_cb,
                              "chat_quit", "activate", main_window_chat_quit_cb,
                              "chat_new_message", "activate", main_window_chat_new_message_cb,
 -                            "chat_history", "activate", main_window_chat_history_cb,
 +                            "view_history", "activate", main_window_view_history_cb,
                              "room_join_new", "activate", main_window_room_join_new_cb,
                              "room_join_favorites", "activate", main_window_room_join_favorites_cb,
                              "room_manage_favorites", "activate", main_window_room_manage_favorites_cb,
                              "chat_add_contact", "activate", main_window_chat_add_contact_cb,
 -                            "chat_show_offline", "toggled", main_window_chat_show_offline_cb,
 +                            "view_show_ft_manager", "activate", main_window_view_show_ft_manager,
 +                            "view_show_offline", "toggled", main_window_view_show_offline_cb,
 +                            "view_show_map", "activate", main_window_view_show_map_cb,
                              "edit", "activate", main_window_edit_cb,
                              "edit_accounts", "activate", main_window_edit_accounts_cb,
                              "edit_personal_information", "activate", main_window_edit_personal_information_cb,
                              "edit_preferences", "activate", main_window_edit_preferences_cb,
                              "help_about", "activate", main_window_help_about_cb,
+                             "help_debug", "activate", main_window_help_debug_cb,
                              "help_contents", "activate", main_window_help_contents_cb,
                              NULL);
  
        g_object_ref (window->ui_manager);
        g_object_unref (gui);
  
 +#if !HAVE_LIBCHAMPLAIN
 +      gtk_action_set_visible (show_map_widget, FALSE);
 +#endif
 +
        window->mc = empathy_mission_control_dup_singleton ();
        window->account_manager = empathy_account_manager_dup_singleton ();
  
index d0460e6216655b8944806aa3fac311217183457d,73b49a5db16c608fa9546c06e42b74913187e0c9..f914979f61db5633367429991611436cbff9ae8f
            <accelerator key="N" modifiers="GDK_CONTROL_MASK"/>
          </child>
          <child>
 -          <object class="GtkAction" id="chat_history">
 +          <object class="GtkAction" id="view_history">
              <property name="icon-name">document-open-recent</property>
 -            <property name="name">chat_history</property>
 -            <property name="label" translatable="yes">_View Previous Conversations</property>
 +            <property name="name">view_history</property>
 +            <property name="label" translatable="yes">_Previous Conversations</property>
            </object>
            <accelerator key="F3" modifiers=""/>
          </child>
            </object>
          </child>
          <child>
 -          <object class="GtkToggleAction" id="chat_show_offline">
 -            <property name="name">chat_show_offline</property>
 -            <property name="label" translatable="yes">Show _Offline Contacts</property>
 +          <object class="GtkAction" id="view_show_ft_manager">
 +            <property name="icon-name">document-send</property>
 +            <property name="name">view_show_ft_manager</property>
 +            <property name="label" translatable="yes">_File Transfers</property>
 +          </object>
 +        </child>
 +        <child>
 +          <object class="GtkToggleAction" id="view_show_offline">
 +            <property name="name">view_show_offline</property>
 +            <property name="label" translatable="yes">_Offline Contacts</property>
            </object>
            <accelerator key="H" modifiers="GDK_CONTROL_MASK"/>
          </child>
 +        <child>
 +          <object class="GtkAction" id="view_show_map">
 +            <property name="name">view_show_map</property>
 +            <property name="label" translatable="yes">Contacts on a _Map</property>
 +          </object>
 +        </child>
          <child>
            <object class="GtkAction" id="chat_quit">
              <property name="stock_id">gtk-quit</property>
              <property name="label" translatable="yes">_Preferences</property>
            </object>
          </child>
 +        <child>
 +          <object class="GtkAction" id="view">
 +            <property name="name">view</property>
 +            <property name="label" translatable="yes">_View</property>
 +          </object>
 +        </child>
          <child>
            <object class="GtkAction" id="room">
              <property name="name">room</property>
            </object>
            <accelerator key="F1" modifiers=""/>
          </child>
+         <child>
+           <object class="GtkAction" id="help_debug">
+             <property name="name">help_debug</property>
+             <property name="label" translatable="yes">_Debug</property>
+           </object>
+         </child>
          <child>
            <object class="GtkAction" id="help_about">
              <property name="stock_id">gtk-about</property>
        <menubar name="menubar">
          <menu action="chat">
            <menuitem action="chat_new_message"/>
 -          <menuitem action="chat_history"/>
            <separator/>
            <menuitem action="chat_add_contact"/>
            <separator/>
 -          <menuitem action="chat_show_offline"/>
 -          <separator/>
            <menuitem action="chat_quit"/>
          </menu>
          <menu action="edit">
            <separator/>
            <menuitem action="edit_preferences"/>
          </menu>
 +        <menu action="view">
 +          <menuitem action="view_show_offline"/>
 +          <separator/>
 +          <menuitem action="view_history"/>
 +          <menuitem action="view_show_ft_manager"/>
 +          <menuitem action="view_show_map"/>
 +        </menu>
          <menu action="room">
            <menuitem action="room_join_new"/>
            <menuitem action="room_join_favorites"/>
          </menu>
          <menu action="help">
            <menuitem action="help_contents"/>
+           <menuitem action="help_debug"/>
            <menuitem action="help_about"/>
          </menu>
        </menubar>