diff options
| author | Johannes Hofmann <johannes.hofmann@gmx.de> | 2004-10-21 19:02:05 +0000 | 
|---|---|---|
| committer | Johannes Hofmann <johannes.hofmann@gmx.de> | 2004-10-21 19:02:05 +0000 | 
| commit | 286afda711bcf74b3f923778db7ca574815dc9e7 (patch) | |
| tree | 4fff277c7454825da7671ada280d7f2e1f3e3792 /src/PSEditModel.cxx | |
| parent | ef1117eb50a9a0e82825e961be8e59d203ebf650 (diff) | |
implemented tag replacement 
implemented tag replacement
Diffstat (limited to 'src/PSEditModel.cxx')
| -rw-r--r-- | src/PSEditModel.cxx | 28 | 
1 files changed, 25 insertions, 3 deletions
| 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; | 
