From 286afda711bcf74b3f923778db7ca574815dc9e7 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Thu, 21 Oct 2004 19:02:05 +0000 Subject: implemented tag replacement implemented tag replacement --- src/PSEditModel.H | 3 ++- src/PSEditModel.cxx | 28 +++++++++++++++++++++++++--- src/PSEditText.H | 3 ++- src/PSEditText.cxx | 15 ++++++++++++++- src/PSEditWidget.cxx | 6 ++---- src/PSEditor.cxx | 5 +---- src/flpsed.cxx | 14 +++++++++++--- 7 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/PSEditModel.H b/src/PSEditModel.H index 4398bec..2c94142 100644 --- a/src/PSEditModel.H +++ b/src/PSEditModel.H @@ -1,5 +1,5 @@ // -// "$Id: PSEditModel.H,v 1.2 2004/10/21 20:12:36 hofmann Exp $" +// "$Id: PSEditModel.H,v 1.3 2004/10/21 21:02:05 hofmann Exp $" // // X11 header file for the Fast Light Tool Kit (FLTK). // @@ -54,6 +54,7 @@ public: int set_cur_text(int x1, int y1, int p); int is_cur_text(PSEditText *t); PSEditText *get_text(int p); + int replace_tag(char* tag, char* text); int ps_to_display_x(int x1); int ps_to_display_y(int y1); int ps_x(int x1); diff --git a/src/PSEditModel.cxx b/src/PSEditModel.cxx index 81e2bf4..a7542f2 100644 --- a/src/PSEditModel.cxx +++ b/src/PSEditModel.cxx @@ -1,5 +1,5 @@ // -// "$Id: PSEditModel.cxx,v 1.2 2004/10/21 20:12:36 hofmann Exp $" +// "$Id: PSEditModel.cxx,v 1.3 2004/10/21 21:02:05 hofmann Exp $" // // PSEditWidget routines. // @@ -37,6 +37,7 @@ PSEditModel::PSEditModel(int x1, int y1, float dx, float dy) { xdpi = dx; ydpi = dy; max_pages = 32; + page = 0; text = (PSEditText**) malloc(sizeof(PSEditText*) * max_pages); if (!text) { perror("malloc"); @@ -45,15 +46,16 @@ PSEditModel::PSEditModel(int x1, int y1, float dx, float dy) { for (int i = 0; i < max_pages; i++) { text[i] = NULL; } + cur_text = NULL; } void PSEditModel::set_page(int p) { int old_max_pages; - old_max_pages = max_pages; - if (p >= max_pages) { + old_max_pages = max_pages; + max_pages = p + max_pages; text = (PSEditText**) realloc(text, sizeof(PSEditText*) * max_pages); if (!text) { @@ -81,6 +83,8 @@ void PSEditModel::clear() { } void PSEditModel::new_text(int x1, int y1, const char *s, int size, int p) { + set_page(p); + cur_text = new PSEditText(x1, y1, s, size); if (text[p]) { text[p]->append(cur_text); @@ -163,6 +167,24 @@ char *PSEditModel::get_tag() { } } +int PSEditModel::replace_tag(char *tag, char *txt) { + PSEditText *t; + int p, ret = 0; + fprintf(stderr, "%s => %s\n", tag, txt); + for (p = 0; p < max_pages; p++) { + t = get_text(p); + while (t) { + if (t->get_tag() && strcmp(t->get_tag(), tag) == 0) { + t->set_text(txt); + ret++; + } + t = t->get_next(); + } + } + + return ret; +} + PSEditText *PSEditModel::get_text(int p) { if (p >= max_pages) { return 0; diff --git a/src/PSEditText.H b/src/PSEditText.H index 2724559..1e9e341 100644 --- a/src/PSEditText.H +++ b/src/PSEditText.H @@ -1,5 +1,5 @@ // -// "$Id: PSEditText.H,v 1.2 2004/10/21 20:12:36 hofmann Exp $" +// "$Id: PSEditText.H,v 1.3 2004/10/21 21:02:05 hofmann Exp $" // // X11 header file for the Fast Light Tool Kit (FLTK). // @@ -42,6 +42,7 @@ public: void move(int x1, int y1); void append(PSEditText *g); PSEditText *get_match(int x1, int y1); + int set_text(const char *t); char *get_text(); char *get_tag(); int set_tag(const char *t); diff --git a/src/PSEditText.cxx b/src/PSEditText.cxx index 309fb0c..001f3c1 100644 --- a/src/PSEditText.cxx +++ b/src/PSEditText.cxx @@ -1,5 +1,5 @@ // -// "$Id: PSEditText.cxx,v 1.1 2004/10/21 19:55:36 hofmann Exp $" +// "$Id: PSEditText.cxx,v 1.2 2004/10/21 21:02:05 hofmann Exp $" // // PSEditWidget routines. // @@ -95,6 +95,19 @@ PSEditText *PSEditText::get_match(int x1, int y1) { } } +int PSEditText::set_text(const char *t) { + if (s) { + free(s); + } + if (t) { + s = strdup(t); + } else { + s = NULL; + } + + return 0; +} + char *PSEditText::get_text() { return s; } diff --git a/src/PSEditWidget.cxx b/src/PSEditWidget.cxx index c0295fa..d8c9254 100644 --- a/src/PSEditWidget.cxx +++ b/src/PSEditWidget.cxx @@ -1,5 +1,5 @@ // -// "$Id: PSEditWidget.cxx,v 1.19 2004/10/21 20:12:36 hofmann Exp $" +// "$Id: PSEditWidget.cxx,v 1.20 2004/10/21 21:02:05 hofmann Exp $" // // PSEditWidget routines. // @@ -176,8 +176,6 @@ int PSEditWidget::file_loaded() { } int PSEditWidget::replace_tag(char *tag, char *text) { - fprintf(stderr, "%s => %s\n", tag, text); - - return 0; + return model->replace_tag(tag, text); } diff --git a/src/PSEditor.cxx b/src/PSEditor.cxx index 64b4a6f..5412119 100644 --- a/src/PSEditor.cxx +++ b/src/PSEditor.cxx @@ -1,5 +1,5 @@ // -// "$Id: PSEditor.cxx,v 1.12 2004/10/21 19:55:36 hofmann Exp $" +// "$Id: PSEditor.cxx,v 1.13 2004/10/21 21:02:05 hofmann Exp $" // // PSEditor routines. // @@ -102,9 +102,6 @@ int PSEditor::handle(int event) { } - - - int PSEditor::load(char *f) { FILE *fp; char tmpname[256]; diff --git a/src/flpsed.cxx b/src/flpsed.cxx index 802ad94..0b4d0c4 100644 --- a/src/flpsed.cxx +++ b/src/flpsed.cxx @@ -1,5 +1,5 @@ // -// "$Id: flpsed.cxx,v 1.17 2004/10/21 19:55:36 hofmann Exp $" +// "$Id: flpsed.cxx,v 1.18 2004/10/21 21:02:05 hofmann Exp $" // // flpsed program. // @@ -224,6 +224,10 @@ int main(int argc, char** argv) { win->callback((Fl_Callback *)quit_cb); win->show(1, argv); + if (argc > 1) { + gsw_p->load(argv[argc - 1]); + } + err = 0; while ((c = getopt(argc, argv, "t:")) != EOF) { switch (c) { @@ -247,12 +251,16 @@ int main(int argc, char** argv) { err++; } } - + if (err) { exit(1); } - + + argc -= optind; + argv += optind; + + return Fl::run(); } -- cgit v1.2.3