summaryrefslogtreecommitdiff
path: root/src/PSEditText.cxx
diff options
context:
space:
mode:
authorJohannes Hofmann <johannes.hofmann@gmx.de>2004-10-21 17:55:36 +0000
committerJohannes Hofmann <johannes.hofmann@gmx.de>2004-10-21 17:55:36 +0000
commit382846248e84c478f713deabbb05a18c1a0d6951 (patch)
treeb58f10daa02582f2040acb00459f665ec655d9cf /src/PSEditText.cxx
parentaa60a0e14a2f186f1b8d282fdc377889a32fada9 (diff)
separated model out from PSEditWidget
separated model out from PSEditWidget
Diffstat (limited to 'src/PSEditText.cxx')
-rw-r--r--src/PSEditText.cxx137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/PSEditText.cxx b/src/PSEditText.cxx
new file mode 100644
index 0000000..309fb0c
--- /dev/null
+++ b/src/PSEditText.cxx
@@ -0,0 +1,137 @@
+//
+// "$Id: PSEditText.cxx,v 1.1 2004/10/21 19:55:36 hofmann Exp $"
+//
+// PSEditWidget routines.
+//
+// Copyright 2004 by Johannes Hofmann
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include "PSEditText.H"
+
+
+PSEditText::PSEditText(int x1, int y1, const char *s1, int size1) {
+ x = x1;
+ y = y1;
+ s = strdup(s1);
+ tag = NULL;
+ c = 0;
+ size = size1;
+ next = NULL;
+}
+
+PSEditText::~PSEditText() {
+ if (next) {
+ delete(next);
+ }
+ if (s) {
+ free(s);
+ }
+ if (tag) {
+ free(tag);
+ }
+}
+
+void PSEditText::append_text(const char*s1) {
+ int len = (s?strlen(s):0) + strlen(s1) + 1;
+ char *tmp = (char*) malloc(len);
+
+ strncpy(tmp, s?s:"", len);
+ strncat(tmp, s1, len - strlen(tmp));
+
+ if (s) {
+ free(s);
+ }
+
+ s = tmp;
+}
+
+void PSEditText::rm_char() {
+ if (s && strlen(s) > 0) {
+ s[strlen(s) - 1] = '\0';
+ }
+}
+
+void PSEditText::move(int x1, int y1) {
+ x = x1;
+ y = y1;
+}
+
+void PSEditText::append(PSEditText *g) {
+ PSEditText *p = this;
+ while (p->next) {
+ p = p->next;
+ }
+ p->next = g;
+}
+
+PSEditText *PSEditText::get_match(int x1, int y1) {
+ if (abs(x - x1) < 10 && abs(y - y1) < 10) {
+ return this;
+ } else if (next) {
+ return next->get_match(x1, y1);
+ } else {
+ return NULL;
+ }
+}
+
+char *PSEditText::get_text() {
+ return s;
+}
+
+char *PSEditText::get_tag() {
+ return tag;
+}
+
+int PSEditText::set_tag(const char *t) {
+ if (tag) {
+ free(tag);
+ }
+ if (t) {
+ tag = strdup(t);
+ } else {
+ tag = NULL;
+ }
+
+ return 0;
+}
+
+int PSEditText::get_size() {
+ return size;
+}
+
+int PSEditText::get_color() {
+ return c;
+}
+
+PSEditText* PSEditText::get_next() {
+ return next;
+}
+
+int PSEditText::get_x() {
+ return x;
+}
+
+int PSEditText::get_y() {
+ return y;
+}