static void DoLoadConfig(GripInfo *ginfo);
void DoSaveConfig(GripInfo *ginfo);
+#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},\
{"cd_device",CFG_ENTRY_STRING,256,ginfo->cd_device},\
{"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},\
{"track_edit_vis",CFG_ENTRY_BOOL,0,&uinfo->track_edit_visible},\
{"track_prog_vis",CFG_ENTRY_BOOL,0,&uinfo->track_prog_visible},\
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;
int major,minor,point;
char buf[256];
-#ifdef CONVERSION_GNOME_TO_GTK
- gnome_window_icon_set_default_from_file(GNOME_ICONDIR"/gripicon.png");
-#endif
-
app = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
+
ginfo=g_new0(GripInfo,1);
gtk_object_set_user_data(GTK_OBJECT(app),(gpointer)ginfo);
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);
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);
+
gtk_widget_realize(app);
uinfo->winbox=gtk_vbox_new(FALSE,3);
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);
-
+
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 */
static void ReallyDie(gpointer data)
{
GripInfo *ginfo;
+ GripGUI *uinfo;
ginfo=(GripInfo *)data;
+ uinfo = &(ginfo->gui_info);
#ifndef GRIPCD
if(ginfo->ripping_a_disc) KillRip(NULL,ginfo);
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();
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)
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);
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)