summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Hofmann <johannes.hofmann@gmx.de>2004-10-11 12:44:47 +0000
committerJohannes Hofmann <johannes.hofmann@gmx.de>2004-10-11 12:44:47 +0000
commit51bd38e8d2448350afe349f2f64367d1af9b27cc (patch)
tree12ed5779428d57df613421677bc29eb92dc166d8
parentfcbe89c0c06b39a1fab26e2908788b01283e4f87 (diff)
added import feature
added import feature
-rw-r--r--src/PSEditor.H3
-rw-r--r--src/PSEditor.cxx43
-rw-r--r--src/flpsed.cxx10
3 files changed, 51 insertions, 5 deletions
diff --git a/src/PSEditor.H b/src/PSEditor.H
index 5484ced..dc7545c 100644
--- a/src/PSEditor.H
+++ b/src/PSEditor.H
@@ -1,5 +1,5 @@
//
-// "$Id: PSEditor.H,v 1.2 2004/07/18 20:49:43 hofmann Exp $"
+// "$Id: PSEditor.H,v 1.3 2004/10/11 14:44:47 hofmann Exp $"
//
// X11 header file for the Fast Light Tool Kit (FLTK).
//
@@ -40,6 +40,7 @@ public:
PSEditor(int X,int Y,int W, int H);
int load(char *f);
int save(const char* savefile);
+ int import(char *f);
int modified();
int file_loaded();
void set_ps_level(int l);
diff --git a/src/PSEditor.cxx b/src/PSEditor.cxx
index 308d0dd..963c9fb 100644
--- a/src/PSEditor.cxx
+++ b/src/PSEditor.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: PSEditor.cxx,v 1.8 2004/07/28 20:15:48 hofmann Exp $"
+// "$Id: PSEditor.cxx,v 1.9 2004/10/11 14:44:47 hofmann Exp $"
//
// PSEditor routines.
//
@@ -110,14 +110,21 @@ int PSEditor::file_loaded() {
return loaded;
}
+
int PSEditor::load(char *f) {
- FILE *fp = fopen(f, "r");
+ FILE *fp;
char tmpname[256];
char linebuf[1024];
int size, ret, ret1, ret2;
PSParser *p1 = new PSParser_1(this);
PSParser *p2 = new PSParser_2(this);
+ fp = fopen(f, "r");
+ if (!fp) {
+ fprintf(stderr, "Could not open file %s.\n", f);
+ return 1;
+ }
+
strncpy(tmpname, "/tmp/PSEditorXXXXXX", 256);
tmp_fd = mkstemp(tmpname);
if (tmp_fd < 0) {
@@ -129,7 +136,6 @@ int PSEditor::load(char *f) {
clear_text();
while (fgets(linebuf, 1024, fp) != NULL) {
-
if (!p2->parse(linebuf) && !p1->parse(linebuf)) {
ret = write(tmp_fd, linebuf, strlen(linebuf));
if (ret != strlen(linebuf)) {
@@ -137,6 +143,7 @@ int PSEditor::load(char *f) {
}
}
}
+
fclose(fp);
lseek(tmp_fd, 0L, SEEK_SET);
@@ -175,6 +182,36 @@ int PSEditor::save(const char* savefile) {
return 0;
}
+int PSEditor::import(char *f) {
+ FILE *fp;
+ char linebuf[1024];
+ PSParser *p1;
+ PSParser *p2;
+
+ if (!file_loaded()) {
+ return 1;
+ }
+
+ fp = fopen(f, "r");
+ if (!fp) {
+ fprintf(stderr, "Could not open file %s.\n", f);
+ return 1;
+ }
+
+ p1 = new PSParser_1(this);
+ p2 = new PSParser_2(this);
+ while (fgets(linebuf, 1024, fp) != NULL) {
+ if (!p2->parse(linebuf)) {
+ p1->parse(linebuf);
+ }
+ }
+
+ delete(p1);
+ delete(p2);
+
+ mod = 1;
+}
+
int PSEditor::get_ps_level() {
return ps_level;
}
diff --git a/src/flpsed.cxx b/src/flpsed.cxx
index a0575bf..6482d9d 100644
--- a/src/flpsed.cxx
+++ b/src/flpsed.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: flpsed.cxx,v 1.12 2004/07/09 17:22:55 hofmann Exp $"
+// "$Id: flpsed.cxx,v 1.13 2004/10/11 14:44:47 hofmann Exp $"
//
// flpsed program.
//
@@ -80,6 +80,13 @@ void open_cb() {
}
}
+void import_cb() {
+ char *file = fl_file_chooser("Import Overlay from File?", "*.ps", filename);
+ if(file != NULL) {
+ gsw_p->import(file);
+ }
+}
+
void first_cb() {
gsw_p->reload();
}
@@ -147,6 +154,7 @@ Fl_Menu_Item menuitems[] = {
{ "&File", 0, 0, 0, FL_SUBMENU },
{ "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb },
{ "&Save File as...", FL_CTRL + 's', (Fl_Callback *)save_cb },
+ { "I&mport Tags from File...", FL_CTRL + 'm', (Fl_Callback *)import_cb },
{ "&Print...", FL_CTRL + 'p', (Fl_Callback *)print_cb, 0, FL_MENU_DIVIDER },
{ "&Quit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
{ 0 },