Use generic method to launch URL in external browser
[hvgrip.git] / src / grip.c
index 4d817af..fb680b2 100644 (file)
@@ -30,7 +30,6 @@
 #include <X11/Xlib.h>
 #include <time.h>
 #include "grip.h"
-#include <libgnomeui/gnome-window-icon.h>
 #include "discdb.h"
 #include "cdplay.h"
 #include "discedit.h"
@@ -42,7 +41,7 @@
 #include "parsecfg.h"
 #include "tray.h"
 
-static void ReallyDie(gint reply,gpointer data);
+static void ReallyDie(gpointer data);
 static void MakeStatusPage(GripInfo *ginfo);
 static void DoHelp(GtkWidget *widget,gpointer data);
 static void MakeHelpPage(GripInfo *ginfo);
@@ -53,6 +52,8 @@ static void LoadImages(GripGUI *uinfo);
 static void DoLoadConfig(GripInfo *ginfo);
 void DoSaveConfig(GripInfo *ginfo);
 
+#define GRIP_URL "http://www.hugovil.com/hvgrip"
+
 #define BASE_CFG_ENTRIES \
 {"grip_version",CFG_ENTRY_STRING,256,ginfo->version},\
 {"cd_device",CFG_ENTRY_STRING,256,ginfo->cd_device},\
@@ -129,6 +130,8 @@ void DoSaveConfig(GripInfo *ginfo);
 {"win_height_edit",CFG_ENTRY_INT,0,&uinfo->win_height_edit},\
 {"win_width_min",CFG_ENTRY_INT,0,&uinfo->win_width_min},\
 {"win_height_min",CFG_ENTRY_INT,0,&uinfo->win_height_min},\
+{"win_pos_x",CFG_ENTRY_INT,0,&uinfo->x},\
+{"win_pos_y",CFG_ENTRY_INT,0,&uinfo->y},\
 {"vol_vis",CFG_ENTRY_BOOL,0,&uinfo->volvis},\
 {"track_edit_vis",CFG_ENTRY_BOOL,0,&uinfo->track_edit_visible},\
 {"track_prog_vis",CFG_ENTRY_BOOL,0,&uinfo->track_prog_visible},\
@@ -176,10 +179,8 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
   int major,minor,point;
   char buf[256];
 
-  gnome_window_icon_set_default_from_file(GNOME_ICONDIR"/gripicon.png");
+  app = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
-  app=gnome_app_new(PACKAGE,_("Grip"));
   ginfo=g_new0(GripInfo,1);
 
   gtk_object_set_user_data(GTK_OBJECT(app),(gpointer)ginfo);
@@ -268,6 +269,9 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
     }
   }
 
+  /* Position window from values in config file. */
+  gtk_window_move(GTK_WINDOW(app),uinfo->x, uinfo->y);
+
   gtk_widget_realize(app);
 
   uinfo->winbox=gtk_vbox_new(FALSE,3);
@@ -299,17 +303,19 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
   uinfo->playopts=MakePlayOpts(ginfo);
   gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->playopts,FALSE,FALSE,0);
   if(uinfo->track_prog_visible) gtk_widget_show(uinfo->playopts);
+
   uinfo->controls=MakeControls(ginfo);
   if(uinfo->minimized)
     gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->controls,TRUE,TRUE,0);
   else
     gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->controls,FALSE,FALSE,0);
   gtk_widget_show(uinfo->controls);
-  
-  gnome_app_set_contents(GNOME_APP(app),uinfo->winbox);
+
+  gtk_container_add(GTK_CONTAINER(app), uinfo->winbox);
   gtk_widget_show(uinfo->winbox);
 
+  gtk_window_set_icon_from_file(GTK_WINDOW(app), GNOME_ICONDIR"/gripicon.png", NULL);
+
   CheckNewDisc(ginfo,FALSE);
 
   /* Check if we're running this version for the first time */
@@ -320,7 +326,7 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
 
     /* Check if we have a dev release */
     if(minor%2) {
-      gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+      DisplayWarningMsg(GTK_WINDOW(ginfo->gui_info.app),
                         _("This is a development version of Grip. If you encounter problems, you are encouraged to revert to the latest stable version."));
     }
   }
@@ -340,22 +346,22 @@ void GripDie(GtkWidget *widget,gpointer data)
   
 #ifndef GRIPCD
   if(ginfo->ripping_a_disc || ginfo->encoding)
-    gnome_app_ok_cancel_modal((GnomeApp *)ginfo->gui_info.app,
+    DisplayOkCancelDialog(GTK_WINDOW(ginfo->gui_info.app),
                              _("Work is in progress.\nReally shut down?"),
                              ReallyDie,(gpointer)ginfo);
-  else ReallyDie(0,ginfo);
+  else ReallyDie(ginfo);
 #else
-  ReallyDie(0,ginfo);
+  ReallyDie(ginfo);
 #endif
 }
 
-static void ReallyDie(gint reply,gpointer data)
+static void ReallyDie(gpointer data)
 {
   GripInfo *ginfo;
-
-  if(reply) return;
+  GripGUI *uinfo;
 
   ginfo=(GripInfo *)data;
+  uinfo = &(ginfo->gui_info);
 
 #ifndef GRIPCD
   if(ginfo->ripping_a_disc) KillRip(NULL,ginfo);
@@ -365,6 +371,9 @@ static void ReallyDie(gint reply,gpointer data)
   if(!ginfo->no_interrupt)
     CDStop(&(ginfo->disc));
 
+  /* For saving the window position */
+  gtk_window_get_position(GTK_WINDOW(uinfo->app), &uinfo->x, &uinfo->y);
+
   DoSaveConfig(ginfo);
 
   gtk_main_quit();
@@ -473,7 +482,9 @@ static void DoHelp(GtkWidget *widget,gpointer data)
 
   section=(char *)data;
 
+#ifdef CONVERSION_GNOME_TO_GTK
   gnome_help_display("grip.xml",section,NULL);
+#endif
 }
 
 static void MakeHelpPage(GripInfo *ginfo)
@@ -582,7 +593,7 @@ void MakeAboutPage(GripGUI *uinfo)
 
   hbox=gtk_hbox_new(TRUE,0);
 
-  button=gtk_button_new_with_label("http://www.nostatic.org/grip");
+  button=gtk_button_new_with_label(GRIP_URL);
   gtk_widget_set_style(button,uinfo->style_dark_grey);
   gtk_widget_set_style(GTK_BIN(button)->child,
                       uinfo->style_dark_grey);
@@ -625,7 +636,7 @@ static void MakeStyles(GripGUI *uinfo)
 
 static void Homepage(void)
 {
-  system("gnome-moz-remote http://www.nostatic.org/grip");
+  g_app_info_launch_default_for_uri(GRIP_URL, NULL, NULL);
 }
 
 static void LoadImages(GripGUI *uinfo)
@@ -918,7 +929,7 @@ static void DoLoadConfig(GripInfo *ginfo)
   if(confret<0) {
     /* Check if the config is out of date */
     if(confret==-2) {
-      gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+      DisplayWarningMsg(GTK_WINDOW(ginfo->gui_info.app),
                         _("Your config file is out of date -- "
                           "resetting to defaults.\n"
                           "You will need to re-configure Grip.\n"
@@ -1012,7 +1023,7 @@ void DoSaveConfig(GripInfo *ginfo)
   g_snprintf(filename,256,"%s/%s",getenv("HOME"),ginfo->config_filename);
 
   if(!SaveConfig(filename,"GRIP",2,cfg_entries))
-    gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+    DisplayWarningMsg(GTK_WINDOW(ginfo->gui_info.app),
                       _("Error: Unable to save config file."));
 
   SaveRipperConfig(ginfo,ginfo->selected_ripper);