summaryrefslogtreecommitdiff
path: root/src/flpsed.cxx
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-11-21 18:40:39 +0100
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-11-21 18:40:39 +0100
commitab3d61f0af6da17bf0367acfc5622092a385ddb1 (patch)
tree62a3cd201b243bd4dec3f773fee9bfe7ff879296 /src/flpsed.cxx
parentcaec99cd46b55c27f05b0d5f444b54dc083c8e9b (diff)
indent + new open_file() function
Diffstat (limited to 'src/flpsed.cxx')
-rw-r--r--src/flpsed.cxx857
1 files changed, 433 insertions, 424 deletions
diff --git a/src/flpsed.cxx b/src/flpsed.cxx
index c5d7bee..ef1638a 100644
--- a/src/flpsed.cxx
+++ b/src/flpsed.cxx
@@ -51,11 +51,11 @@ Fl_Scroll *scroll = NULL;
Fl_Hold_Browser *page_sel = NULL;
int xev_handler(int ev) {
- if (psed_p) {
- return psed_p->handleX11(ev);
- } else {
- return 0;
- }
+ if (psed_p) {
+ return psed_p->handleX11(ev);
+ } else {
+ return 0;
+ }
}
void save_cb();
@@ -64,12 +64,12 @@ int check_save(void) {
if (!psed_p->modified()) return 1;
int r = fl_choice("The current file has not been saved.\n"
- "Would you like to save it now?",
- "Cancel", "Save", "Discard");
+ "Would you like to save it now?",
+ "Cancel", "Save", "Discard");
if (r == 1) {
- save_cb(); // Save the file...
- return !psed_p->modified();
+ save_cb(); // Save the file...
+ return !psed_p->modified();
}
return (r == 2) ? 1 : 0;
@@ -80,521 +80,530 @@ char filename[256] = "";
void page_sel_cb(Fl_Widget *w, void *) {
- int p = page_sel->value();
+ int p = page_sel->value();
if (p > 0) {
- psed_p->load_page(page_sel->value());
+ psed_p->load_page(page_sel->value());
}
}
void page_sel_fill() {
- char buf[64];
- int p = psed_p->get_pages();
+ char buf[64];
+ int p = psed_p->get_pages();
- page_sel->clear();
+ page_sel->clear();
- if (p == 0) {
- return;
- }
+ if (p == 0) {
+ return;
+ }
- for(int i=1; i<=p; i++) {
- snprintf(buf, sizeof(buf), "%d", i);
- page_sel->add(buf);
- }
- page_sel->select(psed_p->get_page());
+ for(int i=1; i<=p; i++) {
+ snprintf(buf, sizeof(buf), "%d", i);
+ page_sel->add(buf);
+ }
+ page_sel->select(psed_p->get_page());
+}
+
+void open_file(char *file) {
+ FILE *p;
+ int status;
+ char *args[32];
+ pid_t pid;
+ char *dot = strrchr(file, '.');
+
+ if (dot && strcasecmp(dot, ".pdf")) {
+ // assume pdf and try to import it using pdftops
+ args[0] = "pdftops";
+ args[1] = file;
+ args[2] = "-";
+ args[3] = NULL;
+
+ p = pexecvp("pdftops", args, &pid, "r");
+
+ if (p) {
+ psed_p->open_file(p);
+ psed_p->load();
+ fclose(p);
+ waitpid(pid, &status, 0);
+ if (WEXITSTATUS(status) == 127 || WEXITSTATUS(status) == 126) {
+ fl_message("PDF import depends on pdftops from xpdf.\n"
+ "Make sure pdftops is available on your system.\n");
+ } else if (WEXITSTATUS(status) != 0) {
+ fl_message("PDF import failed\n");
+ }
+ } else {
+ perror("pexecvp");
+ }
+ } else {
+ // assume postscript
+ psed_p->open_file(file);
+ psed_p->load();
+ }
+
+ page_sel_fill();
}
void open_cb() {
- if (!check_save()) return;
- char *file = fl_file_chooser("Open File?", "*.ps", filename);
- if(file != NULL) {
-
- psed_p->open_file(file);
- psed_p->load();
- page_sel_fill();
- }
+ if (!check_save()) return;
+ char *file = fl_file_chooser("Open File?", "*.ps", filename);
+ if(file != NULL) {
+ open_file(file);
+ }
}
void import_pdf_cb() {
- char *file;
- FILE *p;
- int status;
- char *args[32];
- pid_t pid;
-
- if (!check_save()) return;
- file = fl_file_chooser("Open File?", "*.pdf", filename);
- if(file != NULL) {
- args[0] = "pdftops";
- args[1] = file;
- args[2] = "-";
- args[3] = NULL;
-
- p = pexecvp("pdftops", args, &pid, "r");
-
- if (p) {
- psed_p->open_file(p);
- psed_p->load();
- page_sel_fill();
- fclose(p);
- waitpid(pid, &status, 0);
- if (WEXITSTATUS(status) == 127 || WEXITSTATUS(status) == 126) {
- fl_message("PDF import depends on pdftops from xpdf.\n"
- "Make sure pdftops is available on your system.\n");
- } else if (WEXITSTATUS(status) != 0) {
- fl_message("PDF import failed\n");
- }
- } else {
- perror("pexecvp");
- }
- }
+ if (!check_save()) return;
+ file = fl_file_chooser("Open File?", "*.pdf", filename);
+ if(file != NULL) {
+ open_file(file);
+ }
}
void export_pdf_cb() {
- char *file;
- FILE *p;
- int status;
- char *args[32];
- pid_t pid;
-
- file = fl_file_chooser("Open File?", "*.pdf", filename);
- if(file != NULL) {
- args[0] = "ps2pdf";
- args[1] = "-";
- args[2] = file;
- args[3] = NULL;
-
- signal(SIGPIPE, SIG_IGN);
-
- p = pexecvp("ps2pdf", args, &pid, "w");
-
- if (p) {
- psed_p->save(p);
-
- fclose(p);
- waitpid(pid, &status, 0);
- if (WEXITSTATUS(status) == 127 || WEXITSTATUS(status) == 126) {
- fl_message("PDF export depends on ps2pdf from ghostscript.\n"
- "Make sure ps2pdf is available on your system.\n");
- } else if (WEXITSTATUS(status) != 0) {
- fl_message("PDF export failed\n");
- }
- } else {
- perror("pexecvp");
- }
+ char *file;
+ FILE *p;
+ int status;
+ char *args[32];
+ pid_t pid;
+
+ file = fl_file_chooser("Open File?", "*.pdf", filename);
+ if(file != NULL) {
+ args[0] = "ps2pdf";
+ args[1] = "-";
+ args[2] = file;
+ args[3] = NULL;
+
+ signal(SIGPIPE, SIG_IGN);
+
+ p = pexecvp("ps2pdf", args, &pid, "w");
+
+ if (p) {
+ psed_p->save(p);
+
+ fclose(p);
+ waitpid(pid, &status, 0);
+ if (WEXITSTATUS(status) == 127 || WEXITSTATUS(status) == 126) {
+ fl_message("PDF export depends on ps2pdf from ghostscript.\n"
+ "Make sure ps2pdf is available on your system.\n");
+ } else if (WEXITSTATUS(status) != 0) {
+ fl_message("PDF export failed\n");
+ }
+ } else {
+ perror("pexecvp");
+ }
signal(SIGPIPE, SIG_DFL);
- }
+ }
}
void import_cb() {
- char *file = fl_file_chooser("Import Overlay from File?", "*.ps", filename);
- if(file != NULL) {
- psed_p->import(file);
- }
+ char *file = fl_file_chooser("Import Overlay from File?", "*.ps", filename);
+ if(file != NULL) {
+ psed_p->import(file);
+ }
}
void first_cb() {
- psed_p->load();
- page_sel->select(psed_p->get_page());
+ psed_p->load();
+ page_sel->select(psed_p->get_page());
}
void next_cb() {
- psed_p->next();
- page_sel->select(psed_p->get_page());
+ psed_p->next();
+ page_sel->select(psed_p->get_page());
}
void quit_cb() {
- if (!check_save()) return;
- delete psed_p;
- exit(0);
+ if (!check_save()) return;
+ delete psed_p;
+ exit(0);
}
void save_cb() {
- char *file = fl_file_chooser("Open File?", "*.ps", filename);
- if (file != NULL) {
- psed_p->save(file);
- }
+ char *file = fl_file_chooser("Open File?", "*.ps", filename);
+ if (file != NULL) {
+ psed_p->save(file);
+ }
}
void print_cb() {
- char tmpname[256];
- char buf[256];
- int tmp_fd;
+ char tmpname[256];
+ char buf[256];
+ int tmp_fd;
- int r = fl_choice("Print file?", "Cancel", "Print", NULL);
- if (r != 1) {
- return;
- }
+ int r = fl_choice("Print file?", "Cancel", "Print", NULL);
+ if (r != 1) {
+ return;
+ }
- strncpy(tmpname, "/tmp/PSEditWidgetXXXXXX", 256);
- tmp_fd = mkstemp(tmpname);
+ strncpy(tmpname, "/tmp/PSEditWidgetXXXXXX", 256);
+ tmp_fd = mkstemp(tmpname);
- if (tmp_fd >= 0) {
- close(tmp_fd);
- if (psed_p->save(tmpname) != 0) {
- fprintf(stderr, "Failed to print file\n");
+ if (tmp_fd >= 0) {
+ close(tmp_fd);
+ if (psed_p->save(tmpname) != 0) {
+ fprintf(stderr, "Failed to print file\n");
} else {
- snprintf(buf, 256, "lpr %s", tmpname);
- system(buf);
+ snprintf(buf, 256, "lpr %s", tmpname);
+ system(buf);
}
- unlink(tmpname);
- }
+ unlink(tmpname);
+ }
}
void about_cb() {
- fl_message("flpsed -- a pseudo PostScript editor\n"
- "Version %s\n\n"
+ fl_message("flpsed -- a pseudo PostScript editor\n"
+ "Version %s\n\n"
"(c) Johannes Hofmann 2004-2006\n\n"
- "PostScript is a registered trademark of Adobe Systems", VERSION);
+ "PostScript is a registered trademark of Adobe Systems", VERSION);
}
Fl_Choice *size_c;
Fl_Button *color_b;
static struct {
- char *label;
- int size;
+ char *label;
+ int size;
} text_sizes[] = {
- {"8", 8},
- {"10", 10},
- {"12", 12},
- {"14", 14},
- {"18", 18},
- {"24", 24},
- {NULL, 0}
+ {"8", 8},
+ {"10", 10},
+ {"12", 12},
+ {"14", 14},
+ {"18", 18},
+ {"24", 24},
+ {NULL, 0}
};
void property_changed_cb() {
- PSEditColor c;
- int size;
-
- psed_p->get_color(&c);
- color_b->color(fl_rgb_color(c.get_r(), c.get_g(), c.get_b()));
- color_b->redraw();
-
- size = psed_p->get_size();
- for (int i=0; text_sizes[i].label != NULL; i++) {
- if (size == text_sizes[i].size) {
- size_c->value(i);
- size_c->redraw();
- }
- }
+ PSEditColor c;
+ int size;
+
+ psed_p->get_color(&c);
+ color_b->color(fl_rgb_color(c.get_r(), c.get_g(), c.get_b()));
+ color_b->redraw();
+
+ size = psed_p->get_size();
+ for (int i=0; text_sizes[i].label != NULL; i++) {
+ if (size == text_sizes[i].size) {
+ size_c->value(i);
+ size_c->redraw();
+ }
+ }
}
void size_cb(Fl_Widget *w, void *) {
- Fl_Menu_* mw = (Fl_Menu_*)w;
- const Fl_Menu_Item* m = mw->mvalue();
- if (m) {
- psed_p->set_size(atoi(m->label()));
- }
+ Fl_Menu_* mw = (Fl_Menu_*)w;
+ const Fl_Menu_Item* m = mw->mvalue();
+ if (m) {
+ psed_p->set_size(atoi(m->label()));
+ }
}
void color_cb(Fl_Widget *w, void *v) {
- uchar r, g, b;
- PSEditColor pc;
+ uchar r, g, b;
+ PSEditColor pc;
- psed_p->get_color(&pc);
+ psed_p->get_color(&pc);
- r = pc.get_r();
- g = pc.get_g();
- b = pc.get_b();
+ r = pc.get_r();
+ g = pc.get_g();
+ b = pc.get_b();
- if (!fl_color_chooser("Text Color", r, g, b)) return;
- Fl_Button* button = (Fl_Button*)v;
- pc.set(r, g, b);
- psed_p->set_color(&pc);
- button->color(fl_rgb_color(r, g, b));
- button->parent()->redraw();
+ if (!fl_color_chooser("Text Color", r, g, b)) return;
+ Fl_Button* button = (Fl_Button*)v;
+ pc.set(r, g, b);
+ psed_p->set_color(&pc);
+ button->color(fl_rgb_color(r, g, b));
+ button->parent()->redraw();
}
void zoom_cb(Fl_Widget *w, void *) {
- Fl_Menu_* mw = (Fl_Menu_*)w;
- const Fl_Menu_Item* m = mw->mvalue();
- if (m) {
- if (psed_p) {
- psed_p->zoom(atoi(m->label()));
- if (scroll) {
- scroll->position(0,0);
- scroll->redraw();
- }
- }
- }
+ Fl_Menu_* mw = (Fl_Menu_*)w;
+ const Fl_Menu_Item* m = mw->mvalue();
+ if (m) {
+ if (psed_p) {
+ psed_p->zoom(atoi(m->label()));
+ if (scroll) {
+ scroll->position(0,0);
+ scroll->redraw();
+ }
+ }
+ }
}
void show_tags_cb(Fl_Widget* w, void*d) {
- psed_p->set_show_tags(d==NULL?0:1);
+ psed_p->set_show_tags(d==NULL?0:1);
}
void edit_tag_cb() {
- char *tag = psed_p->get_tag();
- const char *new_tag;
- new_tag = fl_input("Tag Name", tag?tag:"");
- if (new_tag) {
- if (strcmp(new_tag, "") != 0) {
- psed_p->set_tag(new_tag);
- } else {
- psed_p->set_tag(NULL);
- }
- }
+ char *tag = psed_p->get_tag();
+ const char *new_tag;
+ new_tag = fl_input("Tag Name", tag?tag:"");
+ if (new_tag) {
+ if (strcmp(new_tag, "") != 0) {
+ psed_p->set_tag(new_tag);
+ } else {
+ psed_p->set_tag(NULL);
+ }
+ }
}
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 },
- { "&Import PDF...", FL_CTRL + 'i', (Fl_Callback *)import_pdf_cb },
- { "E&xport PDF...", FL_CTRL + 'x', (Fl_Callback *)export_pdf_cb },
- { "&Print...", FL_CTRL + 'p', (Fl_Callback *)print_cb, 0, FL_MENU_DIVIDER },
- { "&Quit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
- { 0 },
-
- { "&Page", 0, 0, 0, FL_SUBMENU },
- { "&First", FL_CTRL + 'f', (Fl_Callback *)first_cb },
- { "&Next", FL_CTRL + 'n', (Fl_Callback *)next_cb },
- { 0 },
-
- { "&Zoom", 0, 0, 0, FL_SUBMENU },
+ { "&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 },
+ { "&Import PDF...", FL_CTRL + 'i', (Fl_Callback *)import_pdf_cb },
+ { "E&xport PDF...", FL_CTRL + 'x', (Fl_Callback *)export_pdf_cb },
+ { "&Print...", FL_CTRL + 'p', (Fl_Callback *)print_cb, 0, FL_MENU_DIVIDER },
+ { "&Quit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
+ { 0 },
+
+ { "&Page", 0, 0, 0, FL_SUBMENU },
+ { "&First", FL_CTRL + 'f', (Fl_Callback *)first_cb },
+ { "&Next", FL_CTRL + 'n', (Fl_Callback *)next_cb },
+ { 0 },
+
+ { "&Zoom", 0, 0, 0, FL_SUBMENU },
{ "50 %", 0, (Fl_Callback *)zoom_cb },
- { "75 %", 0, (Fl_Callback *)zoom_cb },
- { "100 %", 0, (Fl_Callback *)zoom_cb },
+ { "75 %", 0, (Fl_Callback *)zoom_cb },
+ { "100 %", 0, (Fl_Callback *)zoom_cb },
{ "150 %", 0, (Fl_Callback *)zoom_cb },
- { "200 %", 0, (Fl_Callback *)zoom_cb },
- { "250 %", 0, (Fl_Callback *)zoom_cb },
- { 0 },
+ { "200 %", 0, (Fl_Callback *)zoom_cb },
+ { "250 %", 0, (Fl_Callback *)zoom_cb },
+ { 0 },
- { "&Tags", 0, 0, 0, FL_SUBMENU },
- { "Show &Tags", FL_CTRL + 't', (Fl_Callback *)show_tags_cb, (void *)1, FL_MENU_RADIO|FL_MENU_VALUE},
- { "&Hide Tags", FL_CTRL + 'h', (Fl_Callback *)show_tags_cb, (void *)0, FL_MENU_RADIO},
- { "&Edit Tag", FL_CTRL + 'e', (Fl_Callback *)edit_tag_cb },
- { 0 },
+ { "&Tags", 0, 0, 0, FL_SUBMENU },
+ { "Show &Tags", FL_CTRL + 't', (Fl_Callback *)show_tags_cb, (void *)1, FL_MENU_RADIO|FL_MENU_VALUE},
+ { "&Hide Tags", FL_CTRL + 'h', (Fl_Callback *)show_tags_cb, (void *)0, FL_MENU_RADIO},
+ { "&Edit Tag", FL_CTRL + 'e', (Fl_Callback *)edit_tag_cb },
+ { 0 },
- { "&Help", 0, 0, 0, FL_SUBMENU },
- { "About", 0, (Fl_Callback *)about_cb },
- { 0 },
+ { "&Help", 0, 0, 0, FL_SUBMENU },
+ { "About", 0, (Fl_Callback *)about_cb },
+ { 0 },
- { 0 }
+ { 0 }
};
Fl_Menu_Item size_menu[] = {
-{ text_sizes[0].label, 0, (Fl_Callback *)size_cb },
-{ text_sizes[1].label, 0, (Fl_Callback *)size_cb },
-{ text_sizes[2].label, 0, (Fl_Callback *)size_cb },
-{ text_sizes[3].label, 0, (Fl_Callback *)size_cb },
-{ text_sizes[4].label, 0, (Fl_Callback *)size_cb },
-{ text_sizes[5].label, 0, (Fl_Callback *)size_cb },
-{ 0 }
+ { text_sizes[0].label, 0, (Fl_Callback *)size_cb },
+ { text_sizes[1].label, 0, (Fl_Callback *)size_cb },
+ { text_sizes[2].label, 0, (Fl_Callback *)size_cb },
+ { text_sizes[3].label, 0, (Fl_Callback *)size_cb },
+ { text_sizes[4].label, 0, (Fl_Callback *)size_cb },
+ { text_sizes[5].label, 0, (Fl_Callback *)size_cb },
+ { 0 }
};
void usage() {
- fprintf(stderr,
- "usage: flpsed [-hbdz] [-t <tag>=<value>] [<infile>] [<outfile>]\n"
- " -h print this message\n"
- " -b batch mode (no gui)\n"
- " -d dump tags and values from a document\n"
- " to stdout (this implies -b)\n"
- " -z <zoom> set the zoom percentage (e.g. 200)\n"
- " -t <tag>=<value> set text to <value> where tag is <tag>\n"
- " <infile> optional input file; in batch mode if no\n"
- " input file is given, input is read from stdin\n"
- " <outfile> optional output file for batch mode; if no\n"
- " output file is given, output is written to stdout\n\n"
- "additionally flpsed supports the following FLTK standard options:\n"
- " -geometry WxH+X+Y\n"
- " -iconic\n"
- " -scheme string\n"
- );
+ fprintf(stderr,
+ "usage: flpsed [-hbdz] [-t <tag>=<value>] [<infile>] [<outfile>]\n"
+ " -h print this message\n"
+ " -b batch mode (no gui)\n"
+ " -d dump tags and values from a document\n"
+ " to stdout (this implies -b)\n"
+ " -z <zoom> set the zoom percentage (e.g. 200)\n"
+ " -t <tag>=<value> set text to <value> where tag is <tag>\n"
+ " <infile> optional input file; in batch mode if no\n"
+ " input file is given, input is read from stdin\n"
+ " <outfile> optional output file for batch mode; if no\n"
+ " output file is given, output is written to stdout\n\n"
+ "additionally flpsed supports the following FLTK standard options:\n"
+ " -geometry WxH+X+Y\n"
+ " -iconic\n"
+ " -scheme string\n"
+ );
}
#define TV_LEN 256
int main(int argc, char** argv) {
- char *sep, *tmp, **my_argv;
- int c, err, bflag = 0, dflag = 0;
- int i, n;
- Fl_Window *win;
- Fl_Menu_Bar *m;
- struct {char *tag; char *value;} tv[TV_LEN];
- int tv_idx = 0, my_argc;
- FILE *in_fp = NULL, *out_fp = NULL;
- int zoom_val = 0;
-
- err = 0;
- while ((c = getopt(argc, argv, "hdbt:z:g:d:f:i:s:")) != -1) {
- switch (c) {
- case 'h':
- usage();
- exit(0);
- break;
- case 'b':
- bflag = 1;
- break;
- case 'd':
- dflag = 1;
- break;
- case 't':
- tmp = strdup(optarg);
- sep = strchr(tmp, '=');
- if (!sep) {
- fprintf(stderr, "Cannot parse %s\n", optarg);
- free(tmp);
- continue;
- }
- *sep = '\0';
-
- if (tv_idx >= TV_LEN) {
- fprintf(stderr, "More than %d tag/value pairs; ignoring %s->%s\n",
- TV_LEN, tmp, sep+1);
- } else {
- tv[tv_idx].tag = strdup(tmp);
- tv[tv_idx].value = strdup(sep+1);
- tv_idx++;
- }
- free(tmp);
- break;
- case 'z':
- zoom_val = atoi(optarg);
- break;
- default:
- i = optind -1;
- n = Fl::arg(argc, argv, i);
- if (n == 0) {
- err++;
- } else {
- optind = i;
- }
- }
- }
-
- if (err) {
- usage();
- exit(1);
- }
-
- my_argc = argc - optind;
- my_argv = argv + optind;
+ char *sep, *tmp, **my_argv;
+ int c, err, bflag = 0, dflag = 0;
+ int i, n;
+ Fl_Window *win;
+ Fl_Menu_Bar *m;
+ struct {char *tag; char *value;} tv[TV_LEN];
+ int tv_idx = 0, my_argc;
+ FILE *in_fp = NULL, *out_fp = NULL;
+ int zoom_val = 0;
+
+ err = 0;
+ while ((c = getopt(argc, argv, "hdbt:z:g:d:f:i:s:")) != -1) {
+ switch (c) {
+ case 'h':
+ usage();
+ exit(0);
+ break;
+ case 'b':
+ bflag = 1;
+ break;
+ case 'd':
+ dflag = 1;
+ break;
+ case 't':
+ tmp = strdup(optarg);
+ sep = strchr(tmp, '=');
+ if (!sep) {
+ fprintf(stderr, "Cannot parse %s\n", optarg);
+ free(tmp);
+ continue;
+ }
+ *sep = '\0';
+
+ if (tv_idx >= TV_LEN) {
+ fprintf(stderr, "More than %d tag/value pairs; ignoring %s->%s\n",
+ TV_LEN, tmp, sep+1);
+ } else {
+ tv[tv_idx].tag = strdup(tmp);
+ tv[tv_idx].value = strdup(sep+1);
+ tv_idx++;
+ }
+ free(tmp);
+ break;
+ case 'z':
+ zoom_val = atoi(optarg);
+ break;
+ default:
+ i = optind -1;
+ n = Fl::arg(argc, argv, i);
+ if (n == 0) {
+ err++;
+ } else {
+ optind = i;
+ }
+ }
+ }
- if (my_argc >= 1) {
- in_fp = fopen(my_argv[0], "r");
- if (!in_fp) {
- perror("fopen");
- exit(1);
- }
+ if (err) {
+ usage();
+ exit(1);
}
-
- if (bflag || dflag) {
- //
- // Batch Mode
- //
-
- PSEditModel *m = new PSEditModel();
- int tmp_fd;
-
- if (!in_fp) {
- in_fp = stdin;
- }
-
- tmp_fd= m->load(in_fp);
+ my_argc = argc - optind;
+ my_argv = argv + optind;
- if (tmp_fd == -1) {
- fprintf(stderr, "Could not load %s\n", argv[argc - 2]);
- exit(1);
- }
-
- if (in_fp != stdin) {
- fclose(in_fp);
- }
-
- for(int i=0; i<tv_idx; i++) {
- m->replace_tag(tv[i].tag, tv[i].value);
- free(tv[i].tag);
- free(tv[i].value);
- }
-
-
- if (bflag) {
- if (my_argc >= 2) {
- out_fp = fopen(my_argv[1], "w");
- if (!in_fp) {
- perror("fopen");
- exit(1);
+ if (my_argc >= 1) {
+ in_fp = fopen(my_argv[0], "r");
+ if (!in_fp) {
+ perror("fopen");
+ exit(1);
+ }
}
- } else {
- out_fp = stdout;
- }
-
- m->save(out_fp, tmp_fd);
-
- if (out_fp != stdout) {
- fclose(out_fp);
- }
- } else { // dump tags
- m->dump_tags();
- }
-
- } else {
- //
- // Interactive Mode
- //
-
- win = new Fl_Window(600,700);
- m = new Fl_Menu_Bar(0, 0, 600, 30);
- m->menu(menuitems);
-
- Fl_Box props_box(FL_UP_BOX, 0, 30, 600, 25, "");
- Fl_Group props(0, 30, 600, 25);
- props.resizable(NULL);
- size_c = new Fl_Choice(30, 32, 50, 21, NULL);
- size_c->menu(size_menu);
- size_c->callback(size_cb);
- size_c->tooltip("Text Size");
-
- color_b = new Fl_Button(100, 32, 21, 21);
- color_b->color(FL_BLACK);
- color_b->callback(color_cb, color_b);
- color_b->shortcut(FL_ALT + 'c');
- color_b->tooltip("Text Color");
- props.end();
- page_sel = new Fl_Hold_Browser(0, 55, 40, win->h()-55);
- page_sel->callback(page_sel_cb);
- page_sel->end();
- scroll = new Fl_Scroll(40, 55, win->w()-40, win->h()-55);
- psed_p = new PSEditor(0, 0, 700, 900);
- psed_p->property_changed_callback(property_changed_cb);
- scroll->end();
-
-
- fl_open_display();
- Fl::add_handler(xev_handler);
-
- win->resizable(scroll);
-
- win->end();
- win->callback((Fl_Callback *)quit_cb);
- win->show(1, argv);
-
-
- if (zoom_val) {
- psed_p->zoom(zoom_val);
- }
- if (in_fp) {
- psed_p->open_file(in_fp);
- psed_p->load();
- page_sel_fill();
- fclose(in_fp);
- }
-
- for(int i=0; i<tv_idx; i++) {
- psed_p->replace_tag(tv[i].tag, tv[i].value);
- free(tv[i].tag);
- free(tv[i].value);
- }
-
- return Fl::run();
- }
+ if (bflag || dflag) {
+ //
+ // Batch Mode
+ //
+
+ PSEditModel *m = new PSEditModel();
+ int tmp_fd;
+
+ if (!in_fp) {
+ in_fp = stdin;
+ }
+
+
+ tmp_fd = m->load(in_fp);
+
+ if (tmp_fd == -1) {
+ fprintf(stderr, "Could not load %s\n", argv[argc - 2]);
+ exit(1);
+ }
+
+ if (in_fp != stdin) {
+ fclose(in_fp);
+ }
+
+ for(int i=0; i<tv_idx; i++) {
+ m->replace_tag(tv[i].tag, tv[i].value);
+ free(tv[i].tag);
+ free(tv[i].value);
+ }
+
+
+ if (bflag) {
+ if (my_argc >= 2) {
+ out_fp = fopen(my_argv[1], "w");
+ if (!in_fp) {
+ perror("fopen");
+ exit(1);
+ }
+ } else {
+ out_fp = stdout;
+ }
+
+ m->save(out_fp, tmp_fd);
+
+ if (out_fp != stdout) {
+ fclose(out_fp);
+ }
+ } else { // dump tags
+ m->dump_tags();
+ }
+
+ } else {
+ //
+ // Interactive Mode
+ //
+
+ win = new Fl_Window(600,700);
+ m = new Fl_Menu_Bar(0, 0, 600, 30);
+ m->menu(menuitems);
+
+ Fl_Box props_box(FL_UP_BOX, 0, 30, 600, 25, "");
+ Fl_Group props(0, 30, 600, 25);
+ props.resizable(NULL);
+ size_c = new Fl_Choice(30, 32, 50, 21, NULL);
+ size_c->menu(size_menu);
+ size_c->callback(size_cb);
+ size_c->tooltip("Text Size");
+
+ color_b = new Fl_Button(100, 32, 21, 21);
+ color_b->color(FL_BLACK);
+ color_b->callback(color_cb, color_b);
+ color_b->shortcut(FL_ALT + 'c');
+ color_b->tooltip("Text Color");
+ props.end();
+ page_sel = new Fl_Hold_Browser(0, 55, 40, win->h()-55);
+ page_sel->callback(page_sel_cb);
+ page_sel->end();
+ scroll = new Fl_Scroll(40, 55, win->w()-40, win->h()-55);
+ psed_p = new PSEditor(0, 0, 700, 900);
+ psed_p->property_changed_callback(property_changed_cb);
+ scroll->end();
+
+
+ fl_open_display();
+ Fl::add_handler(xev_handler);
+
+ win->resizable(scroll);
+
+ win->end();
+ win->callback((Fl_Callback *)quit_cb);
+ win->show(1, argv);
+
+
+ if (zoom_val) {
+ psed_p->zoom(zoom_val);
+ }
+
+ if (in_fp) {
+ psed_p->open_file(in_fp);
+ psed_p->load();
+ page_sel_fill();
+ fclose(in_fp);
+ }
+
+ for(int i=0; i<tv_idx; i++) {
+ psed_p->replace_tag(tv[i].tag, tv[i].value);
+ free(tv[i].tag);
+ free(tv[i].value);
+ }
+
+ return Fl::run();
+ }
}