TextEdit.cc
上传用户:weiliju62
上传日期:2007-01-06
资源大小:619k
文件大小:2k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /*  cdrdao - write audio CD-Rs in disc-at-once mode
  2.  *
  3.  *  Copyright (C) 1998, 1999 Andreas Mueller <mueller@daneb.ping.de>
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19. /*
  20.  * $Log: TextEdit.cc,v $
  21.  * Revision 1.1  1999/08/19 20:28:12  mueller
  22.  * Initial revision
  23.  *
  24.  */
  25. static char rcsid[] = "$Id: TextEdit.cc,v 1.1 1999/08/19 20:28:12 mueller Exp mueller $";
  26. #include "TextEdit.h"
  27. #include <stddef.h>
  28. #include <ctype.h>
  29. TextEdit::TextEdit(const char *sample) : Gtk_Entry()
  30. {
  31.   upper_ = 1;
  32.   lower_ = 1;
  33.   digits_ = 1;
  34.   space_ = 1;
  35.   if (sample != NULL && *sample != 0)
  36.     setSize(sample);
  37. }
  38. TextEdit::~TextEdit()
  39. {
  40. }
  41. void TextEdit::upperCase(int f)
  42. {
  43.   upper_ = (f != 0) ? 1 : 0;
  44. }
  45. void TextEdit::lowerCase(int f)
  46. {
  47.   lower_ = (f != 0) ? 1 : 0;
  48. }
  49. void TextEdit::digits(int f)
  50. {
  51.   digits_ = (f != 0) ? 1 : 0;
  52. }
  53. void TextEdit::space(int f)
  54. {
  55.   space_ = (f != 0) ? 1 : 0;
  56. }
  57. void TextEdit::insert_text_impl(const gchar *c, gint p2, gint *p3)
  58. {
  59.   char *s = new char[strlen(c) + 1];
  60.   char *p = s;
  61.   while (*c != 0) {
  62.     if (islower(*c)) {
  63.       if (!lower_) {
  64. if (upper_)
  65.   *p++ = toupper(*c);
  66.       }
  67.       else 
  68. *p++ = *c;
  69.     }
  70.     else if (isupper(*c)) {
  71.       if (!upper_) {
  72. if (lower_)
  73.   *p++ = tolower(*c);
  74.       }
  75.       else
  76. *p++ = *c;
  77.     }
  78.     else if (isdigit(*c)) {
  79.       if (digits_)
  80. *p++ = *c;
  81.     }
  82.     else if (isspace(*c)) {
  83.       if (space_)
  84. *p++ = *c;
  85.     }
  86.     
  87.     c++;
  88.   }
  89.   *p = 0;
  90.   Gtk_Entry::insert_text_impl(s, p2, p3);
  91.   delete[] s;
  92. }
  93. void TextEdit::setSize(const char *sample)
  94. {
  95.   const Gtk_Style *style = get_style();
  96.   const GtkStyle *s = style->gtkobj();
  97.   Gdk_Font font(s->font);
  98.   set_usize(font.string_width(string(sample)) + 8,
  99.     font.string_height(string(sample)) + 12);
  100. }