[Player-cvs] app/gtk Umakefil, 1.64.2.6, 1.64.2.7 commonapp.cpp, 1.35.2.10, 1.35.2.11 commonapp.h, 1.15.2.5, 1.15.2.6 main_callbacks.h, 1.24.2.2, 1.24.2.3 main_interface.c, 1.34.2.3, 1.34.2.4 mainapp.cpp, 1.55.2.10, 1.55.2.11 mimetypes.cpp, 1.10.2.3, 1.10.2.4 setup.cpp, 1.11.6.3, 1.11.6.4 upgrade.cpp, 1.5.2.3, 1.5.2.4 upgrade_callbacks.h, 1.3, 1.3.6.1 upgrade_interface.c, 1.10.2.1, 1.10.2.2

[Player-cvs] app/gtk Umakefil, 1.64.2.6, 1.64.2.7 commonapp.cpp, 1.35.2.10, 1.35.2.11 commonapp.h, 1.15.2.5, 1.15.2.6 main_callbacks.h, 1.24.2.2, 1.24.2.3 main_interface.c, 1.34.2.3, 1.34.2.4 mainapp.cpp, 1.55.2.10, 1.55.2.11 mimetypes.cpp, 1.10.2.3, 1.10.2.4 setup.cpp, 1.11.6.3, 1.11.6.4 upgrade.cpp, 1.5.2.3, 1.5.2.4 upgrade_callbacks.h, 1.3, 1.3.6.1 upgrade_interface.c, 1.10.2.1, 1.10.2.2

rggammon at helixcommunity.org rggammon at helixcommunity.org
Wed Jul 14 19:02:47 PDT 2004


Update of /cvsroot/player/app/gtk
In directory cvs-new:/tmp/cvs-serv22417/app/gtk

Modified Files:
      Tag: bingo-beta
	Umakefil commonapp.cpp commonapp.h main_callbacks.h 
	main_interface.c mainapp.cpp mimetypes.cpp setup.cpp 
	upgrade.cpp upgrade_callbacks.h upgrade_interface.c 
Log Message:
Backporting bug fixes


Index: upgrade_callbacks.h
===================================================================
RCS file: /cvsroot/player/app/gtk/upgrade_callbacks.h,v
retrieving revision 1.3
retrieving revision 1.3.6.1
diff -u -d -r1.3 -r1.3.6.1
--- upgrade_callbacks.h	7 May 2004 22:31:03 -0000	1.3
+++ upgrade_callbacks.h	15 Jul 2004 02:02:45 -0000	1.3.6.1
@@ -14,3 +14,11 @@
 hxcommon_launch_upgrade_with_widget_name
                                         (GtkButton       *button,
                                         gpointer         user_data);
+
+void
+hud_check_for_updates                  (GtkButton       *button,
+                                        gpointer         user_data);
+
+void
+hud_check_for_updates                  (GtkButton       *button,
+                                        gpointer         user_data);

Index: upgrade.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/upgrade.cpp,v
retrieving revision 1.5.2.3
retrieving revision 1.5.2.4
diff -u -d -r1.5.2.3 -r1.5.2.4
--- upgrade.cpp	9 Jul 2004 01:48:55 -0000	1.5.2.3
+++ upgrade.cpp	15 Jul 2004 02:02:45 -0000	1.5.2.4
@@ -65,6 +65,7 @@
 extern "C"
 {
     void hud_show_details(GtkWidget* widget);
+    void hud_check_for_updates(GtkWidget* widget);
 }
 
 
@@ -88,6 +89,13 @@
     }    
 }
 
+void
+hud_check_for_updates(GtkWidget* widget)
+{
+    hxcommon_launch_upgrade_with_widget_name(widget);
+}
+
+
 static void
 hxplay_request_upgrade_dialog_destroy(GtkWidget* /* widget */,
                                       HXUpgradeRequestDialog* dialog)
@@ -97,6 +105,75 @@
     g_free(dialog);
 }
 
+#ifndef HELIX_FEATURE_REAL_BRANDING
+static gboolean
+has_real_player_only_components(GList* components_list)
+{
+    static const gchar* realplayer_only_components[] =
+    {
+        "audio/x-pn-realaudio",
+        "mp3",
+        "swf",
+        "aac",
+        "mp4",
+
+        /* XXXRGG: These will be in a future version of the Helix Player */
+        "wav",
+        "aiff",
+        "au",
+        "protocol_rtsp_rdt" // synthesized by the player.
+    };    
+
+    gboolean rp_only = FALSE;
+    guint i;
+    GList* iter;
+
+    iter = components_list;
+    while(iter && !rp_only)
+    {        
+        gchar* component = (gchar*)iter->data;
+        for(i = 0; i < sizeof(realplayer_only_components) / sizeof(*realplayer_only_components); i++)
+        {
+            if(strcasecmp(realplayer_only_components[i], component) == 0)
+            {
+                rp_only = TRUE;
+                break;
+            }
+        }
+        iter = g_list_next(iter);
+    }
+
+    return rp_only;
+}
+#endif
+
+static gboolean
+has_obsolete_components(GList* components_list)
+{
+   static const gchar* obsolete_components[] = { "DNET" };
+   gboolean obsolete = FALSE;
+   GList* iter = NULL;
+   guint i;
+
+   iter = components_list;
+   while(iter && !obsolete)
+   {        
+       gchar* component = (gchar*)iter->data;
+       for(i = 0; i < sizeof(obsolete_components) / sizeof(*obsolete_components); i++)
+       {
+           if(strcasecmp(obsolete_components[i], component) == 0)
+           {
+               obsolete = TRUE;
+               break;
+           }
+       }
+       iter = g_list_next(iter);
+   }
+
+   return obsolete;
+}
+
+
 GtkDialog*
 hxplay_request_upgrade_dialog_new (const gchar* url,
                                    GList*       components_list,
@@ -112,28 +189,11 @@
     GList* iter;
     gboolean first_component = TRUE;
     HXUpgradeRequestDialog* info = NULL;
-    gchar* obsolete_codecs[] = { "DNET" };
-    guint i;
-    gboolean is_obsolete_codec = FALSE;
+    gboolean is_obsolete = FALSE;
     
-    str = g_string_new("");
-    uri_str = g_string_new("");
-
-    iter = components_list;
-    while(iter)
-    {        
-        gchar* component = (gchar*)iter->data;
-        for(i = 0; i < sizeof(obsolete_codecs) / sizeof(*obsolete_codecs); i++)
-        {
-            if(strcasecmp(obsolete_codecs[i], component) == 0)
-            {
-                is_obsolete_codec = TRUE;   
-            }
-        }
-        iter = g_list_next(iter);
-    }
-
-    if(is_obsolete_codec)
+    is_obsolete = has_obsolete_components(components_list);
+        
+    if(is_obsolete)
     {
         dialog = gtk_message_dialog_new(NULL,
                                         GTK_DIALOG_MODAL,
@@ -143,6 +203,9 @@
 
         return GTK_DIALOG(dialog);
     }
+
+    str = g_string_new("");
+    uri_str = g_string_new("");
     
     iter = components_list;
     while(iter)
@@ -199,6 +262,39 @@
     info = g_new0(HXUpgradeRequestDialog, 1);
     info->xml = xml;
 
+#ifndef HELIX_FEATURE_REAL_BRANDING
+    gboolean is_rp_only = FALSE;
+    GtkWidget* upgrade_description_label;
+    GtkWidget* check_for_updates_button;
+    
+    is_rp_only = has_real_player_only_components(components_list);
+
+    if(is_rp_only)
+    {
+        /* Switch the "Check for updates..." button to "Get RealPlayer...",
+           and the description to emphasize that this functionality is RealPlayer
+           only. */
+        check_for_updates_button = glade_xml_get_widget(xml, "hud_check_for_updates_button");
+        upgrade_description_label = glade_xml_get_widget(xml, "hud_upgrade_description_label");
+
+        if(upgrade_description_label)
+        {
+            gtk_label_set_markup(GTK_LABEL(upgrade_description_label),
+                                 _("<b>"
+                                   "The player does not have the\n"
+                                   "capabilities to play back this content\n"
+                                   "\n"
+                                   "This content is supported by RealPlayer.\n"
+                                   "</b>"));
+        }
+
+        if(check_for_updates_button)
+        {
+            gtk_button_set_label(GTK_BUTTON(check_for_updates_button), _("Get RealPlayer..."));
+        }
+    }
+#endif    
+    
     g_signal_connect (G_OBJECT (dialog), "destroy",
                       G_CALLBACK (hxplay_request_upgrade_dialog_destroy),
                       info);

Index: main_interface.c
===================================================================
RCS file: /cvsroot/player/app/gtk/main_interface.c,v
retrieving revision 1.34.2.3
retrieving revision 1.34.2.4
diff -u -d -r1.34.2.3 -r1.34.2.4
--- main_interface.c	7 Jul 2004 18:52:35 -0000	1.34.2.3
+++ main_interface.c	15 Jul 2004 02:02:45 -0000	1.34.2.4
@@ -36,9 +36,9 @@
   GtkWidget *hmw_file_menu;
   GtkWidget *hmw_file_menu_menu;
   GtkWidget *hmw_open_file_menu_item;
-  GtkWidget *image1324;
+  GtkWidget *image1392;
   GtkWidget *hmw_open_location_menu_item;
-  GtkWidget *image1325;
+  GtkWidget *image1393;
   GtkWidget *separator14;
   GtkWidget *hmw_clip_properties_menu_item;
   GtkWidget *hmw_clip_properties_menu_item_menu;
@@ -47,33 +47,33 @@
   GtkWidget *hmw_mru_separator;
   GtkWidget *hmw_close_menu_item;
   GtkWidget *hmw_quit_menu_item;
-  GtkWidget *image1326;
+  GtkWidget *image1394;
   GtkWidget *hmw_play_menu;
   GtkWidget *hmw_play_menu_menu;
   GtkWidget *hmw_play_menu_item;
-  GtkWidget *image1327;
+  GtkWidget *image1395;
   GtkWidget *hmw_pause_menu_item;
-  GtkWidget *image1328;
+  GtkWidget *image1396;
   GtkWidget *hmw_stop_menu_item;
-  GtkWidget *image1329;
+  GtkWidget *image1397;
   GtkWidget *separator4;
   GtkWidget *hmw_clip_list_menu_item;
   GtkWidget *separator12;
   GtkWidget *hmw_previous_menu_item;
-  GtkWidget *image1330;
+  GtkWidget *image1398;
   GtkWidget *hmw_next_menu_item;
-  GtkWidget *image1331;
+  GtkWidget *image1399;
   GtkWidget *separator5;
   GtkWidget *hmw_volume_up_menu_item;
-  GtkWidget *image1332;
+  GtkWidget *image1400;
   GtkWidget *hmw_volume_down_menu_item;
-  GtkWidget *image1333;
+  GtkWidget *image1401;
   GtkWidget *hmw_mute_menu_item;
   GtkWidget *hmw_view_menu;
   GtkWidget *hmw_view_menu_menu;
   GtkWidget *hmw_fullscreen_menu_item;
   GtkWidget *hmw_zoom_menu_item;
-  GtkWidget *image1334;
+  GtkWidget *image1402;
   GtkWidget *hmw_zoom_menu_item_menu;
   GtkWidget *hmw_normal_size_menu_item;
   GtkWidget *hmw_double_size_menu_item;
@@ -88,7 +88,7 @@
   GtkWidget *hmw_tools_menu_menu;
   GtkWidget *hmw_plugins_menu_item;
   GtkWidget *hmw_preferences_menu_item;
-  GtkWidget *image1335;
+  GtkWidget *image1403;
   GtkWidget *hmw_statistics_menu_item;
   GtkWidget *hmw_favorites_menu;
   GtkWidget *hmw_favorites_menu_menu;
@@ -100,18 +100,20 @@
   GtkWidget *hmw_help_menu;
   GtkWidget *hmw_help_menu_menu;
   GtkWidget *hmw_intro_menu_item;
-  GtkWidget *image1336;
+  GtkWidget *image1404;
   GtkWidget *hmw_release_notes_menu_item;
-  GtkWidget *image1337;
+  GtkWidget *image1405;
   GtkWidget *hmw_faq_menu_item;
-  GtkWidget *image1338;
+  GtkWidget *image1406;
   GtkWidget *hmw_report_issue_item;
-  GtkWidget *image1339;
+  GtkWidget *image1407;
   GtkWidget *hmw_nightly_build_menu_item;
-  GtkWidget *image1340;
+  GtkWidget *image1408;
   GtkWidget *separator6;
+  GtkWidget *hmw_check_for_updates_menu_item;
+  GtkWidget *separator15;
   GtkWidget *hmw_player_reset_menu_item;
-  GtkWidget *image1341;
+  GtkWidget *image1409;
   GtkWidget *separator13;
   GtkWidget *hmw_about_menu_item;
   GtkWidget *hmw_hxbin;
@@ -179,10 +181,10 @@
                               GDK_o, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1324 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1324, "image1324");
-  gtk_widget_show (image1324);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_open_file_menu_item), image1324);
+  image1392 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1392, "image1392");
+  gtk_widget_show (image1392);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_open_file_menu_item), image1392);
 
   hmw_open_location_menu_item = gtk_image_menu_item_new_with_mnemonic (_("Open _Location..."));
   gtk_widget_set_name (hmw_open_location_menu_item, "hmw_open_location_menu_item");
@@ -192,10 +194,10 @@
                               GDK_l, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1325 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1325, "image1325");
-  gtk_widget_show (image1325);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_open_location_menu_item), image1325);
+  image1393 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1393, "image1393");
+  gtk_widget_show (image1393);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_open_location_menu_item), image1393);
 
   separator14 = gtk_separator_menu_item_new ();
   gtk_widget_set_name (separator14, "separator14");
@@ -244,10 +246,10 @@
                               GDK_q, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1326 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1326, "image1326");
-  gtk_widget_show (image1326);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_quit_menu_item), image1326);
+  image1394 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1394, "image1394");
+  gtk_widget_show (image1394);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_quit_menu_item), image1394);
 
   hmw_play_menu = gtk_menu_item_new_with_mnemonic (_("_Play"));
   gtk_widget_set_name (hmw_play_menu, "hmw_play_menu");
@@ -266,10 +268,10 @@
                               GDK_p, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1327 = create_pixmap (hxplayer_main_window, "play.png");
-  gtk_widget_set_name (image1327, "image1327");
-  gtk_widget_show (image1327);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_play_menu_item), image1327);
+  image1395 = create_pixmap (hxplayer_main_window, "play.png");
+  gtk_widget_set_name (image1395, "image1395");
+  gtk_widget_show (image1395);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_play_menu_item), image1395);
 
   hmw_pause_menu_item = gtk_image_menu_item_new_with_mnemonic (_("P_ause"));
   gtk_widget_set_name (hmw_pause_menu_item, "hmw_pause_menu_item");
@@ -279,10 +281,10 @@
                               GDK_a, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1328 = create_pixmap (hxplayer_main_window, "pause.png");
-  gtk_widget_set_name (image1328, "image1328");
-  gtk_widget_show (image1328);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_pause_menu_item), image1328);
+  image1396 = create_pixmap (hxplayer_main_window, "pause.png");
+  gtk_widget_set_name (image1396, "image1396");
+  gtk_widget_show (image1396);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_pause_menu_item), image1396);
 
   hmw_stop_menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Stop"));
   gtk_widget_set_name (hmw_stop_menu_item, "hmw_stop_menu_item");
@@ -292,10 +294,10 @@
                               GDK_s, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1329 = create_pixmap (hxplayer_main_window, "stop.png");
-  gtk_widget_set_name (image1329, "image1329");
-  gtk_widget_show (image1329);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_stop_menu_item), image1329);
+  image1397 = create_pixmap (hxplayer_main_window, "stop.png");
+  gtk_widget_set_name (image1397, "image1397");
+  gtk_widget_show (image1397);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_stop_menu_item), image1397);
 
   separator4 = gtk_separator_menu_item_new ();
   gtk_widget_set_name (separator4, "separator4");
@@ -322,10 +324,10 @@
                               GDK_r, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1330 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1330, "image1330");
-  gtk_widget_show (image1330);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_previous_menu_item), image1330);
+  image1398 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1398, "image1398");
+  gtk_widget_show (image1398);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_previous_menu_item), image1398);
 
   hmw_next_menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Next Clip"));
   gtk_widget_set_name (hmw_next_menu_item, "hmw_next_menu_item");
@@ -335,10 +337,10 @@
                               GDK_n, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1331 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1331, "image1331");
-  gtk_widget_show (image1331);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_next_menu_item), image1331);
+  image1399 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1399, "image1399");
+  gtk_widget_show (image1399);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_next_menu_item), image1399);
 
   separator5 = gtk_separator_menu_item_new ();
   gtk_widget_set_name (separator5, "separator5");
@@ -354,10 +356,10 @@
                               GDK_Up, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1332 = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1332, "image1332");
-  gtk_widget_show (image1332);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_volume_up_menu_item), image1332);
+  image1400 = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1400, "image1400");
+  gtk_widget_show (image1400);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_volume_up_menu_item), image1400);
 
   hmw_volume_down_menu_item = gtk_image_menu_item_new_with_mnemonic (_("Volume _Down"));
   gtk_widget_set_name (hmw_volume_down_menu_item, "hmw_volume_down_menu_item");
@@ -367,10 +369,10 @@
                               GDK_Down, GDK_CONTROL_MASK,
                               GTK_ACCEL_VISIBLE);
 
-  image1333 = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1333, "image1333");
-  gtk_widget_show (image1333);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_volume_down_menu_item), image1333);
+  image1401 = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1401, "image1401");
+  gtk_widget_show (image1401);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_volume_down_menu_item), image1401);
 
   hmw_mute_menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Mute"));
   gtk_widget_set_name (hmw_mute_menu_item, "hmw_mute_menu_item");
@@ -402,10 +404,10 @@
   gtk_widget_show (hmw_zoom_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_view_menu_menu), hmw_zoom_menu_item);
 
-  image1334 = gtk_image_new_from_stock ("gtk-zoom-in", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1334, "image1334");
-  gtk_widget_show (image1334);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_zoom_menu_item), image1334);
+  image1402 = gtk_image_new_from_stock ("gtk-zoom-in", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1402, "image1402");
+  gtk_widget_show (image1402);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_zoom_menu_item), image1402);
 
   hmw_zoom_menu_item_menu = gtk_menu_new ();
   gtk_widget_set_name (hmw_zoom_menu_item_menu, "hmw_zoom_menu_item_menu");
@@ -487,10 +489,10 @@
   gtk_widget_show (hmw_preferences_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_tools_menu_menu), hmw_preferences_menu_item);
 
-  image1335 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1335, "image1335");
-  gtk_widget_show (image1335);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_preferences_menu_item), image1335);
+  image1403 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1403, "image1403");
+  gtk_widget_show (image1403);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_preferences_menu_item), image1403);
 
   hmw_statistics_menu_item = gtk_menu_item_new_with_mnemonic (_("Playback _Statistics..."));
   gtk_widget_set_name (hmw_statistics_menu_item, "hmw_statistics_menu_item");
@@ -546,50 +548,50 @@
   gtk_widget_show (hmw_intro_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_intro_menu_item);
 
-  image1336 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1336, "image1336");
-  gtk_widget_show (image1336);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_intro_menu_item), image1336);
+  image1404 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1404, "image1404");
+  gtk_widget_show (image1404);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_intro_menu_item), image1404);
 
   hmw_release_notes_menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Release Notes..."));
   gtk_widget_set_name (hmw_release_notes_menu_item, "hmw_release_notes_menu_item");
   gtk_widget_show (hmw_release_notes_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_release_notes_menu_item);
 
-  image1337 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1337, "image1337");
-  gtk_widget_show (image1337);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_release_notes_menu_item), image1337);
+  image1405 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1405, "image1405");
+  gtk_widget_show (image1405);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_release_notes_menu_item), image1405);
 
   hmw_faq_menu_item = gtk_image_menu_item_new_with_mnemonic (_("_FAQ..."));
   gtk_widget_set_name (hmw_faq_menu_item, "hmw_faq_menu_item");
   gtk_widget_show (hmw_faq_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_faq_menu_item);
 
-  image1338 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1338, "image1338");
-  gtk_widget_show (image1338);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_faq_menu_item), image1338);
+  image1406 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1406, "image1406");
+  gtk_widget_show (image1406);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_faq_menu_item), image1406);
 
   hmw_report_issue_item = gtk_image_menu_item_new_with_mnemonic (_("R_eport an Issue..."));
   gtk_widget_set_name (hmw_report_issue_item, "hmw_report_issue_item");
   gtk_widget_show (hmw_report_issue_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_report_issue_item);
 
-  image1339 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1339, "image1339");
-  gtk_widget_show (image1339);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_report_issue_item), image1339);
+  image1407 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1407, "image1407");
+  gtk_widget_show (image1407);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_report_issue_item), image1407);
 
   hmw_nightly_build_menu_item = gtk_image_menu_item_new_with_mnemonic (_("Get _Nightly Build..."));
   gtk_widget_set_name (hmw_nightly_build_menu_item, "hmw_nightly_build_menu_item");
   gtk_widget_show (hmw_nightly_build_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_nightly_build_menu_item);
 
-  image1340 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1340, "image1340");
-  gtk_widget_show (image1340);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_nightly_build_menu_item), image1340);
+  image1408 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1408, "image1408");
+  gtk_widget_show (image1408);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_nightly_build_menu_item), image1408);
 
   separator6 = gtk_separator_menu_item_new ();
   gtk_widget_set_name (separator6, "separator6");
@@ -597,15 +599,26 @@
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), separator6);
   gtk_widget_set_sensitive (separator6, FALSE);
 
+  hmw_check_for_updates_menu_item = gtk_menu_item_new_with_mnemonic (_("_Check for Updates..."));
+  gtk_widget_set_name (hmw_check_for_updates_menu_item, "hmw_check_for_updates_menu_item");
+  gtk_widget_show (hmw_check_for_updates_menu_item);
+  gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_check_for_updates_menu_item);
+
+  separator15 = gtk_separator_menu_item_new ();
+  gtk_widget_set_name (separator15, "separator15");
+  gtk_widget_show (separator15);
+  gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), separator15);
+  gtk_widget_set_sensitive (separator15, FALSE);
+
   hmw_player_reset_menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Player Reset..."));
   gtk_widget_set_name (hmw_player_reset_menu_item, "hmw_player_reset_menu_item");
   gtk_widget_show (hmw_player_reset_menu_item);
   gtk_container_add (GTK_CONTAINER (hmw_help_menu_menu), hmw_player_reset_menu_item);
 
-  image1341 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
-  gtk_widget_set_name (image1341, "image1341");
-  gtk_widget_show (image1341);
-  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_player_reset_menu_item), image1341);
+  image1409 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
+  gtk_widget_set_name (image1409, "image1409");
+  gtk_widget_show (image1409);
+  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (hmw_player_reset_menu_item), image1409);
 
   separator13 = gtk_separator_menu_item_new ();
   gtk_widget_set_name (separator13, "separator13");
@@ -870,6 +883,9 @@
   g_signal_connect ((gpointer) hmw_nightly_build_menu_item, "activate",
                     G_CALLBACK (hmw_nightly_build),
                     NULL);
+  g_signal_connect ((gpointer) hmw_check_for_updates_menu_item, "activate",
+                    G_CALLBACK (hmw_check_for_updates),
+                    NULL);
   g_signal_connect ((gpointer) hmw_player_reset_menu_item, "activate",
                     G_CALLBACK (hmw_player_reset),
                     NULL);
@@ -902,9 +918,9 @@
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_file_menu, "hmw_file_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_file_menu_menu, "hmw_file_menu_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_open_file_menu_item, "hmw_open_file_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1324, "image1324");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1392, "image1392");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_open_location_menu_item, "hmw_open_location_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1325, "image1325");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1393, "image1393");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator14, "separator14");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_clip_properties_menu_item, "hmw_clip_properties_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_clip_properties_menu_item_menu, "hmw_clip_properties_menu_item_menu");
@@ -913,33 +929,33 @@
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_mru_separator, "hmw_mru_separator");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_close_menu_item, "hmw_close_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_quit_menu_item, "hmw_quit_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1326, "image1326");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1394, "image1394");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_play_menu, "hmw_play_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_play_menu_menu, "hmw_play_menu_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_play_menu_item, "hmw_play_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1327, "image1327");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1395, "image1395");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_pause_menu_item, "hmw_pause_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1328, "image1328");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1396, "image1396");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_stop_menu_item, "hmw_stop_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1329, "image1329");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1397, "image1397");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator4, "separator4");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_clip_list_menu_item, "hmw_clip_list_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator12, "separator12");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_previous_menu_item, "hmw_previous_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1330, "image1330");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1398, "image1398");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_next_menu_item, "hmw_next_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1331, "image1331");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1399, "image1399");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator5, "separator5");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_volume_up_menu_item, "hmw_volume_up_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1332, "image1332");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1400, "image1400");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_volume_down_menu_item, "hmw_volume_down_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1333, "image1333");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1401, "image1401");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_mute_menu_item, "hmw_mute_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_view_menu, "hmw_view_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_view_menu_menu, "hmw_view_menu_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_fullscreen_menu_item, "hmw_fullscreen_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_zoom_menu_item, "hmw_zoom_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1334, "image1334");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1402, "image1402");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_zoom_menu_item_menu, "hmw_zoom_menu_item_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_normal_size_menu_item, "hmw_normal_size_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_double_size_menu_item, "hmw_double_size_menu_item");
@@ -953,7 +969,7 @@
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_tools_menu_menu, "hmw_tools_menu_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_plugins_menu_item, "hmw_plugins_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_preferences_menu_item, "hmw_preferences_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1335, "image1335");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1403, "image1403");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_statistics_menu_item, "hmw_statistics_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_favorites_menu, "hmw_favorites_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_favorites_menu_menu, "hmw_favorites_menu_menu");
@@ -965,18 +981,20 @@
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_help_menu, "hmw_help_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_help_menu_menu, "hmw_help_menu_menu");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_intro_menu_item, "hmw_intro_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1336, "image1336");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1404, "image1404");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_release_notes_menu_item, "hmw_release_notes_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1337, "image1337");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1405, "image1405");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_faq_menu_item, "hmw_faq_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1338, "image1338");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1406, "image1406");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_report_issue_item, "hmw_report_issue_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1339, "image1339");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1407, "image1407");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_nightly_build_menu_item, "hmw_nightly_build_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1340, "image1340");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1408, "image1408");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator6, "separator6");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_check_for_updates_menu_item, "hmw_check_for_updates_menu_item");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator15, "separator15");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_player_reset_menu_item, "hmw_player_reset_menu_item");
-  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1341, "image1341");
+  GLADE_HOOKUP_OBJECT (hxplayer_main_window, image1409, "image1409");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, separator13, "separator13");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_about_menu_item, "hmw_about_menu_item");
   GLADE_HOOKUP_OBJECT (hxplayer_main_window, hmw_hxbin, "hmw_hxbin");

Index: commonapp.h
===================================================================
RCS file: /cvsroot/player/app/gtk/commonapp.h,v
retrieving revision 1.15.2.5
retrieving revision 1.15.2.6
diff -u -d -r1.15.2.5 -r1.15.2.6
--- commonapp.h	9 Jul 2004 01:48:54 -0000	1.15.2.5
+++ commonapp.h	15 Jul 2004 02:02:45 -0000	1.15.2.6
@@ -157,7 +157,10 @@
 void       hxcommon_launch_error_help_with_widget_name  (GtkWidget*    widget);
 void       hxcommon_launch_context_help_with_widget_name(GtkWidget* widget);
 void       hxcommon_launch_upgrade_with_widget_name     (GtkWidget* widget);
-void       hxcommon_reset_player              (void);
+void       hxcommon_reset_player                (void);
+
+/* Also see gnome_vfs_escape_string && gnome_vfs_unescape_string */
+gchar*     hxcommon_strdup_and_escape_url        (const gchar* src_str);
 
 /* This is a handler for realize. Normally, we'd set the transient's parent
    with gtk_window_set_transient_for, which requires

Index: setup.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/setup.cpp,v
retrieving revision 1.11.6.3
retrieving revision 1.11.6.4
diff -u -d -r1.11.6.3 -r1.11.6.4
--- setup.cpp	9 Jul 2004 01:48:55 -0000	1.11.6.3
+++ setup.cpp	15 Jul 2004 02:02:45 -0000	1.11.6.4
@@ -71,6 +71,7 @@
 #include "commonapp.h"
 #include "mainapp.h"
 #include "mimetypes.h"
+#include "switchboard.h"
  
 #include "hxplayer-i18n.h"
 
@@ -275,7 +276,10 @@
 		G_OBJECT(gtk_widget_get_toplevel(GTK_WIDGET(widget))), 
 		"privacy-clicked"))
 	{
-	    hxcommon_url_show(PRIVACY_URL);
+            gchar* url = hx_switchboard_get_privacy_url();
+	    hxcommon_url_show(url);
+            g_free(url);
+            
 	    g_object_set_data(
 		G_OBJECT(gtk_widget_get_toplevel(GTK_WIDGET(widget))), 
 		"privacy-clicked", NULL);

Index: commonapp.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/commonapp.cpp,v
retrieving revision 1.35.2.10
retrieving revision 1.35.2.11
diff -u -d -r1.35.2.10 -r1.35.2.11
--- commonapp.cpp	14 Jul 2004 22:45:25 -0000	1.35.2.10
+++ commonapp.cpp	15 Jul 2004 02:02:45 -0000	1.35.2.11
@@ -47,12 +47,19 @@
  * 
  * ***** END LICENSE BLOCK ***** */
 
+/* Helix includes */
+#include "hxcom.h"
+#include "hxwintyp.h"
+#include "hxstring.h"
+#include "hxurl.h"
+
 #include "commonapp.h"
 #include "mainapp.h"
 #include "auth.h"
 #include "error.h"
 #include "upgrade.h"
 #include "remote.h"
+#include "switchboard.h"
 
 #include "appver.h"
 
@@ -85,7 +92,6 @@
 #include <locale.h>
 #include "hxplayer-i18n.h"
 
-
 #define EXIT_RESTART_PLAYER 10
 #define MAX_TITLE_LENGTH 60
 
@@ -458,18 +464,12 @@
     gchar* url;
     GtkWidget* toplevel;
     guint error_code;
-    gint is_realplayer = 0;
-
-#ifdef HELIX_FEATURE_REAL_BRANDING
-    is_realplayer = 1;
-#endif
 
     toplevel = hxcommon_get_toplevel_widget_no_menus(widget);
 
     error_code = (guint)g_object_get_data(G_OBJECT(toplevel), "error_code");
         
-    url = g_strdup_printf("https://player.helixcommunity.org/sitecode/redirect/?action=ErrorHelp&error=0x%08x&playerVersion=%s&isRealPlayer=%d",
-                          error_code, TARVER_STRING_VERSION, is_realplayer);
+    url = hx_switchboard_get_error_help_url(error_code);
 
     hxcommon_url_show(url);
     g_free(url);    
@@ -481,23 +481,12 @@
     gchar* url;
     GtkWidget* toplevel;
     gchar* components;
-    gint is_realplayer = 0;
-
-#ifdef HELIX_FEATURE_REAL_BRANDING
-    is_realplayer = 1;
-#endif
 
     toplevel = hxcommon_get_toplevel_widget_no_menus(widget);
 
     components = (gchar*)g_object_get_data(G_OBJECT(toplevel), "components");
 
-    if(!components)
-    {
-        components = "";
-    }
-    
-    url = g_strdup_printf("https://player.helixcommunity.org/sitecode/redirect/?action=CheckUpdate&components=%s&playerVersion=%s&isRealPlayer=%d",
-                          components, TARVER_STRING_VERSION, is_realplayer);
+    url = hx_switchboard_get_upgrade_url (components);
     
     hxcommon_url_show(url);
     g_free(url);    
@@ -508,14 +497,7 @@
 hxcommon_launch_context_help(const gchar* context)
 {
     gchar* url;
-    gint is_realplayer = 0;
-
-#ifdef HELIX_FEATURE_REAL_BRANDING
-    is_realplayer = 1;
-#endif
-    
-    url = g_strdup_printf("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=%s&playerVersion=%s&isRealPlayer=%d",
-                          context, TARVER_STRING_VERSION, is_realplayer);    
+    url = hx_switchboard_get_context_help_url(context);
     hxcommon_url_show(url);
     g_free(url);
 }
@@ -561,7 +543,7 @@
 }
 
 gboolean
-hxcommon_player_has_feature (GtkWidget*   player,
+hxcommon_player_has_feature (GtkWidget*   /* player */,
                              const gchar* feature)
 {
     gboolean has_feature = FALSE;
@@ -868,7 +850,6 @@
     return TRUE;
 } 
 
-
 static gchar*
 strdup_and_unescape(const gchar* src_str)
 {
@@ -922,6 +903,16 @@
     return dest_str;    
 }
 
+static gboolean
+is_special_character(gchar c)
+{
+    gboolean is_special = FALSE;
+    
+    is_special = (c == '%' || c == '\n' || c == '=');
+
+    return is_special;
+}
+
 static gchar*
 strdup_and_escape(const gchar* src_str)
 {
@@ -940,7 +931,7 @@
     src_pos = src_str;
     while(*src_pos)
     {
-        if(*src_pos == '%' || *src_pos == '\n' || *src_pos == '=')
+        if(is_special_character(*src_pos))
         {
             buffer_length += 3;
         }
@@ -958,7 +949,7 @@
     dest_pos = dest_str;
     while(*src_pos)
     {
-        if(*src_pos == '%' || *src_pos == '\n' || *src_pos == '=')
+        if(is_special_character(*src_pos))
         {
             /* These characters are also escaped by the real prefs code
                in common/util/platform/unix/unix_pref.cpp */
@@ -977,6 +968,20 @@
     return dest_str;
 }
 
+gchar*
+hxcommon_strdup_and_escape_url(const gchar* url)
+{
+    CHXString strEncodedUrl;
+    const char* encoded_url;
+    HX_RESULT result;
+
+    result = CHXURL::encodeURL(url, strEncodedUrl);
+    g_return_val_if_fail(SUCCEEDED(result), NULL);
+
+    encoded_url = (const char*) strEncodedUrl;
+    
+    return g_strdup(encoded_url);
+}
 
 void
 hxcommon_save_preferences(HXMainWindow* window)
@@ -1038,7 +1043,7 @@
         entry = (HXEntry*)prefs_iter->data;
         value = hx_entry_get_value(entry);
 
-        escaped_value_str = strdup_and_escape(hx_value_get_string(value));        
+        escaped_value_str = strdup_and_escape(hx_value_get_string(value));
         line = g_strdup_printf("%s=%s\n", hx_entry_get_key(entry), escaped_value_str);
         g_free(escaped_value_str);
 
@@ -1645,8 +1650,8 @@
     }
     else
     {
-	text = g_strdup_printf("Buffering (%d%%)", percent);
-	hx_player_set_status_text(player, text);
+    text = g_strdup_printf("Buffering (%d%%)", percent);
+    hx_player_set_status_text(player, text);
     }
 }
 

Index: mainapp.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/mainapp.cpp,v
retrieving revision 1.55.2.10
retrieving revision 1.55.2.11
diff -u -d -r1.55.2.10 -r1.55.2.11
--- mainapp.cpp	13 Jul 2004 02:18:16 -0000	1.55.2.10
+++ mainapp.cpp	15 Jul 2004 02:02:45 -0000	1.55.2.11
@@ -108,6 +108,7 @@
 #include "plugins.h"
 #include "open.h"
 #include "contextmenu.h"
+#include "switchboard.h"
 
 /* Helix includes (currently for viewsrc) */
 #include "hxcom.h"
@@ -332,6 +333,7 @@
 void     hmw_faq                (GtkWidget* widget);
 void     hmw_report_issue       (GtkWidget* widget);    
 void     hmw_nightly_build      (GtkWidget* widget);
+void     hmw_check_for_updates  (GtkWidget* widget);    
 void     hmw_about              (GtkWidget* widget);
 void     hmw_view_source        (GtkWidget* widget);
 void     hmw_file_menu_update   (GtkWidget* widget);
@@ -532,8 +534,6 @@
     {
         recent_urls_menu_populate(window);
     }
-    
-    hxcommon_save_preferences(window);
 }
 
 static void
@@ -710,8 +710,8 @@
 	    HXValue* value = hx_value_new(HX_VALUE_STRING);
 	    hx_value_set_string(value, "1");
 	    hx_prefs_set_entry(REGISTERED_PREF, value);
-	    hxcommon_save_preferences(window);
-	}
+            hxcommon_save_preferences(window);
+        }
     }
     return nResult;
 }
@@ -858,8 +858,6 @@
 {
     favorites_menu_unpopulate(window);
     favorites_menu_populate(window);
-
-    hxcommon_save_preferences(window);
 }
 
 void
@@ -2716,10 +2714,15 @@
             gtk_window_set_transient_for(GTK_WINDOW(window->manage_favorites_dialog),
                                          GTK_WINDOW(window->window));
 
-            g_signal_connect_swapped(G_OBJECT(window->manage_favorites_dialog),
-                                     "destroy",
-                                     G_CALLBACK(favorites_menu_refresh),
-                                     window);
+            g_signal_connect_swapped (G_OBJECT(window->manage_favorites_dialog),
+                                      "response",
+                                      G_CALLBACK(favorites_menu_refresh),
+                                      window);
+
+            g_signal_connect_swapped (G_OBJECT(window->preferences_dialog),
+                                      "response",
+                                      G_CALLBACK(hxcommon_save_preferences),
+                                      window);
 
             g_signal_connect_after (G_OBJECT(window->manage_favorites_dialog),
                                     "response",
@@ -2755,6 +2758,9 @@
     }
     
     hxwindow_favorite_add(window, title, url);
+    
+    hxcommon_save_preferences(window);
+
     g_free(str);
 }
 
@@ -2798,10 +2804,15 @@
             gtk_window_set_transient_for(GTK_WINDOW(window->import_favorites_dialog),
                                          GTK_WINDOW(window->window));
             
-            g_signal_connect_swapped(G_OBJECT(window->import_favorites_dialog),
-                                     "destroy",
-                                     G_CALLBACK(favorites_menu_refresh),
-                                     window);
+            g_signal_connect_swapped (G_OBJECT(window->import_favorites_dialog),
+                                      "response",
+                                      G_CALLBACK(favorites_menu_refresh),
+                                      window);
+            
+            g_signal_connect_swapped (G_OBJECT(window->preferences_dialog),
+                                      "response",
+                                      G_CALLBACK(hxcommon_save_preferences),
+                                      window);
 
             g_signal_connect_after (G_OBJECT(window->import_favorites_dialog),
                                     "response",
@@ -3100,31 +3111,49 @@
 void
 hmw_intro(GtkWidget* /* widget */)
 {
-    hxcommon_url_show("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=Introduction&playerVersion=" TARVER_STRING_VERSION);
+    gchar* url = hx_switchboard_get_context_help_url("Introduction");
+    hxcommon_url_show(url);
+    g_free(url);
 }
 
 void
 hmw_release_notes(GtkWidget* /* widget */)
 {
-    hxcommon_url_show("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=ReleaseNotes&playerVersion=" TARVER_STRING_VERSION);
+    gchar* url = hx_switchboard_get_context_help_url("ReleaseNotes");
+    hxcommon_url_show(url);
+    g_free(url);
 }
 
 void
 hmw_faq(GtkWidget* /* widget */)
 {
-    hxcommon_url_show("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=FAQ&playerVersion=" TARVER_STRING_VERSION);
+    gchar* url = hx_switchboard_get_context_help_url("FAQ");
+    hxcommon_url_show(url);
+    g_free(url);
 }
 
 void
 hmw_report_issue(GtkWidget* /* widget */)
 {
-    hxcommon_url_show("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=ReportIssue&playerVersion=" TARVER_STRING_VERSION);
+    gchar* url = hx_switchboard_get_context_help_url("ReportIssue");
+    hxcommon_url_show(url);
+    g_free(url);
 }
 
 void
 hmw_nightly_build(GtkWidget* /* widget */)
 {
-    hxcommon_url_show("https://player.helixcommunity.org/sitecode/redirect/?action=ContextHelp&context=NightlyBuild&playerVersion=" TARVER_STRING_VERSION);
+    gchar* url = hx_switchboard_get_context_help_url("NightlyBuild");
+    hxcommon_url_show(url);
+    g_free(url);
+}
+
+void
+hmw_check_for_updates(GtkWidget* /* widget */)
+{
+    gchar* url = hx_switchboard_get_upgrade_url(NULL);
+    hxcommon_url_show(url);
+    g_free(url);    
 }
 
 void
@@ -3640,6 +3669,7 @@
     if(url)
     {
         hxwindow_recent_urls_prepend(window, url);
+        hxcommon_save_preferences(window);
     }
 }
 
@@ -3994,12 +4024,36 @@
 
 void
 hpw_hxerror(HXMainWindow* window,
-            guint         hxcode,
-            guint         user_code,
+            gint          hxcode,
+            gint          user_code,
             const gchar*  error_string,
             const gchar*  user_string,
             const gchar*  more_info_url)
 {
+#ifndef HELIX_FEATURE_REAL_BRANDING
+    /* Bad protocol errors are (hopefully) the result of the Helix Player
+       trying to play an rtsp stream that uses RDT, which is a RP-only
+       feature. Forward these errors to the AU system */
+
+    if(hxcode == HXR_BAD_TRANSPORT)
+    {        
+        const gchar* url = hx_player_get_url(HX_PLAYER(window->player));
+        gchar rtsp_component[] = "protocol_rtsp_rdt";
+
+        GList* component_list = NULL;
+        component_list = g_list_append(component_list, rtsp_component);
+
+        hxcommon_run_request_upgrade_dialog(GTK_WINDOW(window->window),
+                                            NULL,
+                                            url,
+                                            component_list,
+                                            TRUE);
+        g_list_free(component_list);
+        
+        return;
+    }
+#endif
+
     hxcommon_run_error_dialog(GTK_WINDOW(window->window),
                               NULL,
                               hxcode,

Index: main_callbacks.h
===================================================================
RCS file: /cvsroot/player/app/gtk/main_callbacks.h,v
retrieving revision 1.24.2.2
retrieving revision 1.24.2.3
diff -u -d -r1.24.2.2 -r1.24.2.3
--- main_callbacks.h	29 Jun 2004 22:45:50 -0000	1.24.2.2
+++ main_callbacks.h	15 Jul 2004 02:02:45 -0000	1.24.2.3
@@ -246,3 +246,7 @@
 void
 hmw_export_favorites                   (GtkMenuItem     *menuitem,
                                         gpointer         user_data);
+
+void
+hmw_check_for_updates                  (GtkMenuItem     *menuitem,
+                                        gpointer         user_data);

Index: Umakefil
===================================================================
RCS file: /cvsroot/player/app/gtk/Umakefil,v
retrieving revision 1.64.2.6
retrieving revision 1.64.2.7
diff -u -d -r1.64.2.6 -r1.64.2.7
--- Umakefil	12 Jul 2004 20:41:40 -0000	1.64.2.6
+++ Umakefil	15 Jul 2004 02:02:45 -0000	1.64.2.7
@@ -116,6 +116,7 @@
                            "common/container[contlib]",
                            "common/runtime[runtlib]",
                            "common/dbgtool[debuglib]",
+                           "common/util[utillib]",
                            "player/hxclientkit[hxclientlib]",
                            "player/mime/util[mimelib]")
 
@@ -126,12 +127,10 @@
         project.AddModuleLibraries("common_rn/r1signin[r1signin]",
                                    "common_rn/r1misc[r1misc]",
                                    "common/fileio[fileiolib]",
-                                   "common/util[utillib]",
                                    "common/lang/xml[xmllib]",
                                    "client/common/container[contclntlib]")
         project.AddModuleIncludes ("common_rn/r1signin/pub",
                                    "common_rn/r1misc/pub",
-                                   "common/util/pub",
                                    "common/lang/xml/pub")
         project.AddSources("signin.cpp")
 
@@ -148,6 +147,7 @@
 project.AddModuleIncludes("client/include",
                           "common/dbgtool/pub",
                           "common/runtime/pub",
+                          "common/util/pub",
                           "client/include",
                           "filesystem/memory/pub",
                           "filesystem/http",
@@ -196,7 +196,9 @@
                    "plugins.cpp",
                    "open.cpp",
                    "guids.cpp",
-                   "contextmenu.cpp")
+                   "contextmenu.cpp",
+                   "sysinfo.cpp",
+                   "switchboard.cpp")
 
 if project.IsDefined('HELIX_FEATURE_REAL_BRANDING'):
     project.AddDefines('APP_NAME_SHORT="realplay"')
@@ -205,7 +207,6 @@
     project.AddDefines('APP_PREFIX_LC="rp"')
     project.AddDefines('APP_URL="http://www.real.com"')
     project.AddDefines('APP_FG_COLOR="#336699"')
-    project.AddDefines('PRIVACY_URL="http://www.realnetworks.com/company/privacy"')
 
     ProgramTarget("realplay.bin")
     project.AddCopyTargets("realplay")
@@ -218,7 +219,6 @@
     project.AddDefines('APP_PREFIX_LC="hx"')
     project.AddDefines('APP_URL="https://player.helixcommunity.org"')
     project.AddDefines('APP_FG_COLOR="#003300"')
-    project.AddDefines('PRIVACY_URL="https://helixcommunity.org/2002/intro/privacy.php"')
 
     ProgramTarget("hxplay.bin")
     project.AddCopyTargets("hxplay")

Index: upgrade_interface.c
===================================================================
RCS file: /cvsroot/player/app/gtk/upgrade_interface.c,v
retrieving revision 1.10.2.1
retrieving revision 1.10.2.2
diff -u -d -r1.10.2.1 -r1.10.2.2
--- upgrade_interface.c	29 Jun 2004 22:09:48 -0000	1.10.2.1
+++ upgrade_interface.c	15 Jul 2004 02:02:45 -0000	1.10.2.2
@@ -35,8 +35,9 @@
   GtkWidget *hbox1;
   GtkWidget *image1;
   GtkWidget *vbox1;
-  GtkWidget *label1;
-  GtkWidget *alignment2;
+  GtkWidget *hud_upgrade_description_label;
+  GtkWidget *hbox2;
+  GtkWidget *hud_check_for_updates_button;
   GtkWidget *button1;
   GtkWidget *hud_details_vbox;
   GtkWidget *label2;
@@ -56,6 +57,7 @@
       gtk_window_set_icon (GTK_WINDOW (hxplayer_upgrade_dialog), hxplayer_upgrade_dialog_icon_pixbuf);
       gdk_pixbuf_unref (hxplayer_upgrade_dialog_icon_pixbuf);
     }
+  gtk_window_set_type_hint (GTK_WINDOW (hxplayer_upgrade_dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
 
   dialog_vbox3 = GTK_DIALOG (hxplayer_upgrade_dialog)->vbox;
   gtk_widget_set_name (dialog_vbox3, "dialog_vbox3");
@@ -77,23 +79,28 @@
   gtk_widget_show (vbox1);
   gtk_box_pack_start (GTK_BOX (hbox1), vbox1, TRUE, TRUE, 0);
 
-  label1 = gtk_label_new (_("<b>The player does not have the capabilities to play back this content.</b>"));
-  gtk_widget_set_name (label1, "label1");
-  gtk_widget_show (label1);
-  gtk_box_pack_start (GTK_BOX (vbox1), label1, FALSE, FALSE, 0);
-  gtk_label_set_use_markup (GTK_LABEL (label1), TRUE);
-  gtk_label_set_line_wrap (GTK_LABEL (label1), TRUE);
-  gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
+  hud_upgrade_description_label = gtk_label_new (_("<b>The player does not have the capabilities to play back this content.</b>"));
+  gtk_widget_set_name (hud_upgrade_description_label, "hud_upgrade_description_label");
+  gtk_widget_show (hud_upgrade_description_label);
+  gtk_box_pack_start (GTK_BOX (vbox1), hud_upgrade_description_label, FALSE, FALSE, 0);
+  gtk_label_set_use_markup (GTK_LABEL (hud_upgrade_description_label), TRUE);
+  gtk_label_set_line_wrap (GTK_LABEL (hud_upgrade_description_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (hud_upgrade_description_label), 0, 0.5);
 
-  alignment2 = gtk_alignment_new (1, 0.5, 0, 0);
-  gtk_widget_set_name (alignment2, "alignment2");
-  gtk_widget_show (alignment2);
-  gtk_box_pack_start (GTK_BOX (vbox1), alignment2, FALSE, FALSE, 0);
+  hbox2 = gtk_hbox_new (TRUE, 12);
+  gtk_widget_set_name (hbox2, "hbox2");
+  gtk_widget_show (hbox2);
+  gtk_box_pack_start (GTK_BOX (vbox1), hbox2, TRUE, TRUE, 0);
+
+  hud_check_for_updates_button = gtk_button_new_with_mnemonic (_("Check for Updates..."));
+  gtk_widget_set_name (hud_check_for_updates_button, "hud_check_for_updates_button");
+  gtk_widget_show (hud_check_for_updates_button);
+  gtk_box_pack_start (GTK_BOX (hbox2), hud_check_for_updates_button, TRUE, TRUE, 0);
 
   button1 = gtk_button_new_with_mnemonic (_("Details..."));
   gtk_widget_set_name (button1, "button1");
   gtk_widget_show (button1);
-  gtk_container_add (GTK_CONTAINER (alignment2), button1);
+  gtk_box_pack_start (GTK_BOX (hbox2), button1, TRUE, TRUE, 0);
 
   hud_details_vbox = gtk_vbox_new (FALSE, 6);
   gtk_widget_set_name (hud_details_vbox, "hud_details_vbox");
@@ -144,6 +151,9 @@
   gtk_dialog_add_action_widget (GTK_DIALOG (hxplayer_upgrade_dialog), okbutton3, GTK_RESPONSE_OK);
   GTK_WIDGET_SET_FLAGS (okbutton3, GTK_CAN_DEFAULT);
 
+  g_signal_connect ((gpointer) hud_check_for_updates_button, "clicked",
+                    G_CALLBACK (hud_check_for_updates),
+                    NULL);
   g_signal_connect ((gpointer) button1, "clicked",
                     G_CALLBACK (hud_show_details),
                     NULL);
@@ -157,8 +167,9 @@
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, hbox1, "hbox1");
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, image1, "image1");
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, vbox1, "vbox1");
-  GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, label1, "label1");
-  GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, alignment2, "alignment2");
+  GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, hud_upgrade_description_label, "hud_upgrade_description_label");
+  GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, hbox2, "hbox2");
+  GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, hud_check_for_updates_button, "hud_check_for_updates_button");
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, button1, "button1");
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, hud_details_vbox, "hud_details_vbox");
   GLADE_HOOKUP_OBJECT (hxplayer_upgrade_dialog, label2, "label2");

Index: mimetypes.cpp
===================================================================
RCS file: /cvsroot/player/app/gtk/mimetypes.cpp,v
retrieving revision 1.10.2.3
retrieving revision 1.10.2.4
diff -u -d -r1.10.2.3 -r1.10.2.4
--- mimetypes.cpp	9 Jul 2004 01:48:55 -0000	1.10.2.3
+++ mimetypes.cpp	15 Jul 2004 02:02:45 -0000	1.10.2.4
@@ -520,9 +520,9 @@
     nPlugins = pPluginEnumerator->GetNumOfPlugins();
 
     for(i = 0; i < nPlugins; i++)
-    {
-        pPluginEnumerator->GetPlugin(i, pUnk);
-
+    {        
+        retVal = pPluginEnumerator->GetPlugin(i, pUnk);
+        
         pMimeAssocMgr = NULL;
         retVal = pUnk->QueryInterface(IID_IHXMimeAssocManager,
                                       (void**)&pMimeAssocMgr);




More information about the Player-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.