summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/PSEditModel.H3
-rw-r--r--src/PSEditModel.cxx28
-rw-r--r--src/PSEditText.H3
-rw-r--r--src/PSEditText.cxx15
-rw-r--r--src/PSEditWidget.cxx6
-rw-r--r--src/PSEditor.cxx5
-rw-r--r--src/flpsed.cxx14
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();
}