X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fgrip.c;h=8d65a3eac27d73e6b412db42bfb5431f9aa6f974;hb=3a61b18abc33a665f680701ce3fc6cc4efc82870;hp=d217f555817822ddb7f47246226831baa15d6110;hpb=1a27da79b64e18318820ab1be3a47a9a200d186e;p=hvgrip.git diff --git a/src/grip.c b/src/grip.c index d217f55..8d65a3e 100644 --- a/src/grip.c +++ b/src/grip.c @@ -52,7 +52,8 @@ static void LoadImages(GripGUI *uinfo); static void DoLoadConfig(GripInfo *ginfo); void DoSaveConfig(GripInfo *ginfo); -#define GRIP_URL "http://www.nostatic.org/grip" +#define GRIP_URL "http://www.hugovil.com/hvgrip" +#define GRIP_HTML_DOC_URL "file://"DOCDIR"/grip.html" #define BASE_CFG_ENTRIES \ {"grip_version",CFG_ENTRY_STRING,256,ginfo->version},\ @@ -125,11 +126,11 @@ void DoSaveConfig(GripInfo *ginfo); {"selected_ripper",CFG_ENTRY_INT,0,&ginfo->selected_ripper},\ {"play_mode",CFG_ENTRY_INT,0,&ginfo->play_mode},\ {"playloop",CFG_ENTRY_BOOL,0,&ginfo->playloop},\ -{"win_width",CFG_ENTRY_INT,0,&uinfo->win_width},\ -{"win_height",CFG_ENTRY_INT,0,&uinfo->win_height},\ +{"win_width",CFG_ENTRY_INT,0,&uinfo->size_hints.base_width},\ +{"win_height",CFG_ENTRY_INT,0,&uinfo->size_hints.base_height},\ {"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_width_min",CFG_ENTRY_INT,0,&uinfo->size_hints.min_width},\ +{"win_height_min",CFG_ENTRY_INT,0,&uinfo->size_hints.min_height},\ {"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},\ @@ -155,7 +156,7 @@ gboolean AppWindowStateCB(GtkWidget *widget, GdkEventWindowState *event, gpointe GripInfo *ginfo = (GripInfo*)data; GripGUI *uinfo = &(ginfo->gui_info); GdkWindowState state = event->new_window_state; - + if ((state & GDK_WINDOW_STATE_WITHDRAWN) || (state & GDK_WINDOW_STATE_ICONIFIED)) { ginfo->app_visible = FALSE; return TRUE; @@ -192,31 +193,39 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device, uinfo->encode_status_window=NULL; uinfo->track_list=NULL; - uinfo->win_width=WINWIDTH; - uinfo->win_height=WINHEIGHT; + /* Size hints */ + uinfo->size_hints.min_width = MIN_WINWIDTH; + uinfo->size_hints.min_height = MIN_WINHEIGHT; + uinfo->size_hints.base_width = WINWIDTH; + uinfo->size_hints.base_height = WINHEIGHT; + uinfo->size_hints.width_inc = 10; + uinfo->size_hints.height_inc = 10; + uinfo->win_height_edit=WINHEIGHTEDIT; - uinfo->win_width_min=MIN_WINWIDTH; - uinfo->win_height_min=MIN_WINHEIGHT; - - /* if(geometry != NULL) { - gint x,y,w,h; - - if(gnome_parse_geometry(geometry, - &x,&y,&w,&h)) { - if(x != -1) { - gtk_widget_set_uposition(app,x,y); - } - - if(w != -1) { - uinfo->win_width=w; - uinfo->win_height=h; - } - } - else { - g_error(_("Could not parse geometry string `%s'"), geometry); + + gtk_window_set_geometry_hints(GTK_WINDOW(app), app, + &uinfo->size_hints, + GDK_HINT_MIN_SIZE | + GDK_HINT_BASE_SIZE | + GDK_HINT_RESIZE_INC); + + if(geometry != NULL) { + /* + If either a size or a position can be extracted from the geometry string, + gtk-window-parse-geometry returns ‘#t’ and calls + gtk-window-set-default-size and/or gtk-window-move to resize/move the + window. + */ + if (!gtk_window_parse_geometry(GTK_WINDOW(app), geometry)) { + fprintf (stderr, "Failed to parse geometry string '%s'\n", geometry); + } else { + /* For saving the position */ + gtk_window_get_position(GTK_WINDOW(uinfo->app), &uinfo->x, &uinfo->y); } } - */ + + Debug("X = %d\n", uinfo->x); + Debug("Y = %d\n", uinfo->y); if(config_filename && *config_filename) g_snprintf(ginfo->config_filename,256,"%s",config_filename); @@ -252,23 +261,27 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device, gtk_widget_set_size_request(GTK_WIDGET(app),MIN_WINWIDTH, MIN_WINHEIGHT); - gtk_window_resize(GTK_WINDOW(app),uinfo->win_width_min, - uinfo->win_height_min); + gtk_window_resize(GTK_WINDOW(app),uinfo->size_hints.min_width, + uinfo->size_hints.min_height); } else { gtk_widget_set_size_request(GTK_WIDGET(app),WINWIDTH, WINHEIGHT); if(uinfo->track_edit_visible) { - gtk_window_resize(GTK_WINDOW(app),uinfo->win_width, + gtk_window_resize(GTK_WINDOW(app),uinfo->size_hints.base_width, uinfo->win_height_edit); } else { - gtk_window_resize(GTK_WINDOW(app),uinfo->win_width, - uinfo->win_height); + gtk_window_resize(GTK_WINDOW(app),uinfo->size_hints.base_width, + uinfo->size_hints.base_height); } } + Debug("X = %d\n", uinfo->x); + Debug("Y = %d\n", uinfo->y); + gtk_window_move(GTK_WINDOW(app), uinfo->x, uinfo->y); + /* Position window from values in config file. */ gtk_window_move(GTK_WINDOW(app),uinfo->x, uinfo->y); @@ -479,12 +492,23 @@ void LogStatus(GripInfo *ginfo,char *fmt,...) static void DoHelp(GtkWidget *widget,gpointer data) { char *section; + char *uri; section=(char *)data; -#ifdef CONVERSION_GNOME_TO_GTK - gnome_help_display("grip.xml",section,NULL); -#endif + if (section) { + /* + * This doesn't work for the moment: the "#section" seems to be + * ignored by g_app_info_launch_default_for_uri(). + */ + uri = g_strdup_printf("%s#%s", GRIP_HTML_DOC_URL, section); + } + else { + uri = g_strdup_printf("%s", GRIP_HTML_DOC_URL); + } + + g_app_info_launch_default_for_uri(uri, NULL, NULL); + g_free (uri); } static void MakeHelpPage(GripInfo *ginfo) @@ -593,7 +617,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); @@ -636,18 +660,7 @@ static void MakeStyles(GripGUI *uinfo) static void Homepage(void) { - int status; - - status = system("firefox " GRIP_URL); - if (status != 0) { - status = system("opera " GRIP_URL); - if (status != 0) { - status = system("chromium-browser " GRIP_URL); - if (status != 0) { - status = system("gnome-moz-remote " GRIP_URL); - } - } - } + g_app_info_launch_default_for_uri(GRIP_URL, NULL, NULL); } static void LoadImages(GripGUI *uinfo)