Binary files gv-3.6.2/doc/gv.info and gv-3.6.2-savepos/doc/gv.info differ
diff -u -r gv-3.6.2/src/actions.c gv-3.6.2-savepos/src/actions.c
--- gv-3.6.2/src/actions.c 2005-08-10 20:46:20.000000000 +0530
+++ gv-3.6.2-savepos/src/actions.c 2008-01-09 09:14:43.000000000 +0530
@@ -793,6 +793,23 @@
}
/*##################################################################*/
+/* action_savepos */
+/*##################################################################*/
+
+void
+action_savepos(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ BEGINMESSAGE(action_savepos)
+ if (!XtIsSensitive(saveposEntry)) {INFMESSAGE(insensitive) ENDMESSAGE(action_savepos) return; }
+ cb_savepos((Widget)NULL,(XtPointer)NULL,(XtPointer)NULL);
+ ENDMESSAGE(action_savepos)
+}
+
+/*##################################################################*/
/* action_save */
/* Popup the save file dialog box. */
/*##################################################################*/
diff -u -r gv-3.6.2/src/actions.h gv-3.6.2-savepos/src/actions.h
--- gv-3.6.2/src/actions.h 2004-11-11 17:51:04.000000000 +0530
+++ gv-3.6.2-savepos/src/actions.h 2008-01-08 22:57:35.000000000 +0530
@@ -150,6 +150,15 @@
#endif
);
+extern void action_savepos (
+#if NeedFunctionPrototypes
+ Widget,
+ XEvent *,
+ String *,
+ Cardinal *
+#endif
+);
+
extern void action_save (
#if NeedFunctionPrototypes
Widget,
diff -u -r gv-3.6.2/src/callbacks.c gv-3.6.2-savepos/src/callbacks.c
--- gv-3.6.2/src/callbacks.c 2005-08-10 17:03:21.000000000 +0530
+++ gv-3.6.2-savepos/src/callbacks.c 2008-01-13 22:46:05.000000000 +0530
@@ -90,6 +90,9 @@
static char* save_directory = NULL;
static char* open_directory = NULL;
+static int last_psx;
+static int last_psy;
+
/*############################################################*/
/* cb_showTitle */
/*############################################################*/
@@ -826,6 +829,28 @@
}
/*##################################################################*/
+/* cb_savepos */
+/*##################################################################*/
+
+void
+cb_savepos(w, client_data, call_data)
+ Widget w;
+ XtPointer client_data, call_data;
+{
+ FILE* posfile = fopen("gv.savepos", "a");
+
+ BEGINMESSAGE(cb_savepos)
+ if (posfile == NULL) {
+ INFMESSAGE(cannot open file for writting)
+ ENDMESSAGE(cb_savepos)
+ return;
+ }
+ fprintf(posfile, "%i %i\n", last_psx, last_psy);
+ fclose(posfile);
+ ENDMESSAGE(cb_savepos)
+}
+
+/*##################################################################*/
/* cb_redisplay */
/*##################################################################*/
@@ -1134,6 +1159,8 @@
}
x=p->psx; y=p->psy;
}
+ last_psx = p->psx;
+ last_psy = p->psy;
ENDMESSAGE1(cb_track)
return;
}
@@ -1374,5 +1401,3 @@
XtDestroyWidget(toplevel);
ENDMESSAGE(cb_doQuit)
}
-
-
diff -u -r gv-3.6.2/src/callbacks.h gv-3.6.2-savepos/src/callbacks.h
--- gv-3.6.2/src/callbacks.h 2004-11-11 17:51:04.000000000 +0530
+++ gv-3.6.2-savepos/src/callbacks.h 2008-01-09 09:15:12.000000000 +0530
@@ -193,6 +193,14 @@
#endif
);
+extern void cb_savepos (
+#if NeedFunctionPrototypes
+ Widget,
+ XtPointer,
+ XtPointer
+#endif
+);
+
extern void cb_redisplay (
#if NeedFunctionPrototypes
Widget,
@@ -313,4 +321,5 @@
#endif
);
+
#endif /* _GV_CALLBACKS_H_ */
diff -u -r gv-3.6.2/src/gv_misc_res.dat gv-3.6.2-savepos/src/gv_misc_res.dat
--- gv-3.6.2/src/gv_misc_res.dat 2005-04-01 02:44:27.000000000 +0530
+++ gv-3.6.2-savepos/src/gv_misc_res.dat 2008-01-09 09:25:28.000000000 +0530
@@ -401,6 +401,7 @@
<Key>p: GV_Print(all) \n\
~c ~s <Key>period: GV_Page(redisplay) \n\
<Key>period: GV_Reopen() \n\
+ <Key>Z: GV_SavePos() \n\
c <Key>L: GV_Page(redisplay) \n\
<Key>M: GV_SetPageMark(current,mark)\n\
<Key>N: GV_SetPageMark(current,unmark)\n\
diff -u -r gv-3.6.2/src/main.c gv-3.6.2-savepos/src/main.c
--- gv-3.6.2/src/main.c 2006-09-15 00:26:08.000000000 +0530
+++ gv-3.6.2-savepos/src/main.c 2008-01-09 09:14:43.000000000 +0530
@@ -236,6 +236,7 @@
{ "GV_Print" , action_print },
{ "GV_Quit" , action_quit },
{ "GV_Reopen" , action_reopen },
+ { "GV_SavePos" , action_savepos },
{ "GV_Resizing" , action_autoResize },
{ "GV_Save" , action_save },
{ "GV_SetScale" , action_setScale },
@@ -780,6 +781,7 @@
{ &fileMenu, "menu", NULL ,NULL},
{ &openEntry, "open", cb_openFile, NULL},
{ &reopenEntry, "reopen", cb_reopen, NULL},
+ { &saveposEntry, "savepos", cb_savepos, NULL},
{ &updateEntry, "update", cb_checkFile, (XtPointer)CHECK_FILE_VERSION },
{ NULL, "line", NULL, NULL },
{ &printAllEntry, "printAllPages", cb_print, (XtPointer)PAGE_MODE_ALL},
diff -u -r gv-3.6.2/src/main_globals.h gv-3.6.2-savepos/src/main_globals.h
--- gv-3.6.2/src/main_globals.h 2005-03-31 17:44:09.000000000 +0530
+++ gv-3.6.2-savepos/src/main_globals.h 2008-01-09 09:18:00.000000000 +0530
@@ -171,6 +171,7 @@
EXTERN Widget fileMenu;
EXTERN Widget openEntry;
EXTERN Widget reopenEntry;
+EXTERN Widget saveposEntry;
EXTERN Widget updateEntry;
EXTERN Widget printAllEntry;
EXTERN Widget printMarkedEntry;
diff -u -r gv-3.6.2/src/misc.c gv-3.6.2-savepos/src/misc.c
--- gv-3.6.2/src/misc.c 2005-08-10 17:03:21.000000000 +0530
+++ gv-3.6.2-savepos/src/misc.c 2008-01-09 09:18:00.000000000 +0530
@@ -1084,6 +1084,7 @@
misc_setSensitive(w_unmarkAllPages , show_unmarkAllPages , (toc_text != NULL));
XtSetSensitive(reopenEntry, (gv_psfile != NULL));
+ XtSetSensitive(saveposEntry, (gv_psfile != NULL));
XtSetSensitive(printAllEntry, (gv_psfile != NULL));
XtSetSensitive(printMarkedEntry, (toc_text != NULL));
XtSetSensitive(saveAllEntry, (gv_psfile != NULL));