From 7fce5830e8404516079787ca6fb1975ba8947965 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Tue, 26 Oct 2004 16:08:57 +0000 Subject: - cleanups - fix damage stuff for long tags - cleanups - fix damage stuff for long tags --- src/GsWidget.cxx | 4 +-- src/PSEditWidget.H | 10 +++++- src/PSEditWidget.cxx | 93 ++++++++++++++++++++++++++++++++++------------------ 3 files changed, 72 insertions(+), 35 deletions(-) diff --git a/src/GsWidget.cxx b/src/GsWidget.cxx index 7b50b6f..e2c3341 100644 --- a/src/GsWidget.cxx +++ b/src/GsWidget.cxx @@ -1,5 +1,5 @@ // -// "$Id: GsWidget.cxx,v 1.10 2004/10/26 17:22:45 hofmann Exp $" +// "$Id: GsWidget.cxx,v 1.11 2004/10/26 18:08:57 hofmann Exp $" // // GsWidget routines. // @@ -84,7 +84,7 @@ void GsWidget::setProps() { void GsWidget::kill_gs() { int status; - fprintf(stderr, "Killing...\n"); + if (gs_pid > 0) { kill(gs_pid, SIGTERM); waitpid(gs_pid, &status, 0); diff --git a/src/PSEditWidget.H b/src/PSEditWidget.H index 6ad3704..775ac42 100644 --- a/src/PSEditWidget.H +++ b/src/PSEditWidget.H @@ -1,5 +1,5 @@ // -// "$Id: PSEditWidget.H,v 1.10 2004/10/26 16:58:49 hofmann Exp $" +// "$Id: PSEditWidget.H,v 1.11 2004/10/26 18:08:57 hofmann Exp $" // // X11 header file for the Fast Light Tool Kit (FLTK). // @@ -88,6 +88,14 @@ public: int file_loaded(); int replace_tag(char* tag, char* text); + + int PSEditWidget::bb_x(PSEditText *t); + + int PSEditWidget::bb_y(PSEditText *t); + + int PSEditWidget::bb_w(PSEditText *t); + + int PSEditWidget::bb_h(PSEditText *t); }; #endif diff --git a/src/PSEditWidget.cxx b/src/PSEditWidget.cxx index 4186504..21b327f 100644 --- a/src/PSEditWidget.cxx +++ b/src/PSEditWidget.cxx @@ -1,5 +1,5 @@ // -// "$Id: PSEditWidget.cxx,v 1.23 2004/10/26 17:22:45 hofmann Exp $" +// "$Id: PSEditWidget.cxx,v 1.24 2004/10/26 18:08:57 hofmann Exp $" // // PSEditWidget routines. // @@ -37,6 +37,11 @@ #include "PSEditWidget.H" +#define FLPSED_FONT FL_HELVETICA +#define FLPSED_TAG_FONT FL_COURIER +#define FLPSED_TAG_FONT_SIZE 10 + + void PSEditWidget::clear_text() { model->clear(); } @@ -47,7 +52,7 @@ void PSEditWidget::draw() { while (t) { fl_color((Fl_Color) t->get_color()); - fl_font(FL_HELVETICA, t->get_size()); + fl_font(FLPSED_FONT, t->get_size()); fl_draw(t->get_text(), t->get_x() + x(), t->get_y() + y()); if (model->is_cur_text(t)) { fl_draw_box(FL_BORDER_FRAME, @@ -61,7 +66,7 @@ void PSEditWidget::draw() { if (t->get_tag() && show_tags) { int text_height = fl_height() - fl_descent(); fl_color(FL_BLUE); - fl_font(FL_COURIER, 10); + fl_font(FLPSED_TAG_FONT, FLPSED_TAG_FONT_SIZE); fl_draw(t->get_tag(), t->get_x() + x(), t->get_y() + y() - text_height - 1); } @@ -82,20 +87,20 @@ int PSEditWidget::next() { } void PSEditWidget::new_text(int x1, int y1, const char *s, int p) { - PSEditText *t_old; + PSEditText *t_old, *t; t_old = model->get_cur_text(); model->new_text(x1, y1, s, cur_size, p); - fl_font(FL_HELVETICA, cur_size); - damage(4, x1 - 10, y1 - fl_height() - 20, - fl_width(s) + 20, fl_height() + 30); + t = model->get_cur_text(); + + if (t) { + damage(4, bb_x(t), bb_y(t), bb_w(t), bb_h(t)); + } if (t_old) { - fl_font(FL_HELVETICA, t_old->get_size()); - damage(4, t_old->get_x() - 10, t_old->get_y() - fl_height() - 20, - fl_width(t_old->get_text()) + 20, fl_height() + 30); + damage(4, bb_x(t_old), bb_y(t_old), bb_w(t_old), bb_h(t_old)); } } @@ -113,14 +118,10 @@ int PSEditWidget::set_cur_text(int x1, int y1) { t_new = model->get_cur_text(); if (t_new) { - fl_font(FL_HELVETICA, t_new->get_size()); - damage(4, t_new->get_x() - 10, t_new->get_y() - fl_height() - 20, - fl_width(t_new->get_text()) + 20, fl_height() + 30); + damage(4, bb_x(t_new), bb_y(t_new), bb_w(t_new), bb_h(t_new)); } if (t_old) { - fl_font(FL_HELVETICA, t_old->get_size()); - damage(4, t_old->get_x() - 10, t_old->get_y() - fl_height() - 20, - fl_width(t_old->get_text()) + 20, fl_height() + 30); + damage(4, bb_x(t_old), bb_y(t_old), bb_w(t_old), bb_h(t_old)); } return 0; } @@ -134,8 +135,7 @@ void PSEditWidget::append_text(const char *s) { t = model->get_cur_text(); if (t) { - fl_font(FL_HELVETICA, t->get_size()); - damage(4, t->get_x() - 10, t->get_y() - fl_height() - 20, fl_width(t->get_text()) + 20, fl_height() + 30); + damage(4, bb_x(t), bb_y(t), bb_w(t), bb_h(t)); } } @@ -145,27 +145,25 @@ void PSEditWidget::move(int x1, int y1, int last_x, int last_y) { model->move(x1, y1); t = model->get_cur_text(); if (t) { - fl_font(FL_HELVETICA, t->get_size()); - damage(4, x1 - 10, y1 - fl_height() - 20, fl_width(t->get_text()) + 20, fl_height() + 30); - damage(4, last_x - 10, last_y - fl_height() - 20, fl_width(t->get_text()) + 20, fl_height() + 30); - + damage(4, bb_x(t), bb_y(t), bb_w(t), bb_h(t)); + damage(4, last_x - 10, last_y - fl_height() - 20, bb_w(t), bb_h(t)); } } void PSEditWidget::rm_char() { PSEditText *t; - double width; + int width; t = model->get_cur_text(); if (t) { - fl_font(FL_HELVETICA, t->get_size()); - width = fl_width(t->get_text()); + fl_font(FLPSED_FONT, t->get_size()); + width = bb_w(t); } model->rm_char(); if (t) { - damage(4, t->get_x() - 10, t->get_y() - fl_height() - 20, width + 20, fl_height() + 30); + damage(4, bb_x(t), bb_y(t), width, bb_h(t)); } } @@ -181,21 +179,22 @@ void PSEditWidget::set_cur_size(int s) { void PSEditWidget::set_size(int s) { PSEditText *t; - int old_size; + int old_x, old_y, old_w, old_h; t = model->get_cur_text(); if (t) { - old_size = t->get_size(); + old_x = bb_x(t); + old_y = bb_y(t); + old_w = bb_w(t); + old_h = bb_h(t); } set_cur_size(s); model->set_size(s); if (t) { - fl_font(FL_HELVETICA, t->get_size()); - damage(4, t->get_x() - 10, t->get_y() - fl_height() - 20, fl_width(t->get_text()) + 20, fl_height() + 30); - fl_font(FL_HELVETICA, old_size); - damage(4, t->get_x() - 10, t->get_y() - fl_height() - 20, fl_width(t->get_text()) + 20, fl_height() + 30); + damage(4, bb_x(t), bb_y(t), bb_w(t), bb_h(t)); + damage(4, old_x, old_y, old_w, old_h); } } @@ -250,3 +249,33 @@ int PSEditWidget::replace_tag(char *tag, char *text) { return model->replace_tag(tag, text); } +int PSEditWidget::bb_x(PSEditText *t) { + return t->get_x() - 10; +} + +int PSEditWidget::bb_y(PSEditText *t) { + fl_font(FLPSED_FONT, t->get_size()); + return t->get_y() - fl_height() - 20; +} + +int PSEditWidget::bb_w(PSEditText *t) { + int w, wt = 0; + char *tag; + fl_font(FLPSED_FONT, t->get_size()); + w = (int) fl_width(t->get_text()) + 20; + + tag = t->get_tag(); + if (tag) { + fl_font(FLPSED_TAG_FONT, FLPSED_TAG_FONT_SIZE); + wt = (int) fl_width(tag) + 20; + } + + return w>=wt?w:wt; +} + +int PSEditWidget::bb_h(PSEditText *t) { + fl_font(FLPSED_FONT, t->get_size()); + return fl_height() + 30; +} + + -- cgit v1.2.3