Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

NDK_XX::Edit Class Reference

#include <ndk++.h>

Inheritance diagram for NDK_XX::Edit:

NDK_XX::Label NDK_XX::Control NDK_XX::EditNumber NDK_XX::EditDate NDK_XX::EditDouble List of all members.

Public Methods

 Edit (Control *parent, int id, const string &text,int lines, int cols, int y, int x,int style=framed|editable|tabstop|notify)
 ~Edit ()

Protected Methods

virtual int edit (int key)
 This is the specialized driver for edition.

virtual int add_or_insert_char (int key)
virtual void add_char (int key)
 In overwrite mode.

virtual void insert_char (int key)
 In insert mode.

virtual void refresh_text ()
 Update the text we present on the viewport.

int move_right ()
int move_left ()
int driver (int key)

Constructor & Destructor Documentation

NDK_XX::Edit::Edit Control   parent,
int    id,
const string &    text,
int    lines,
int    cols,
int    y,
int    x,
int    style = framed|editable|tabstop|notify
 

Edit Constructor See parameters for class Control

Definition at line 618 of file ndk++.cc.

Referenced by NDK_XX::Label::operator[]().

00622         :Label(parent,id,title,lines,cols,y,x,style)
00623 {
00624 }

NDK_XX::Edit::~Edit  
 

Definition at line 628 of file ndk++.cc.

References NDK_XX::Control::has_frame(), and NDK_XX::Label::viewport.

00629 {
00630     if(has_frame())
00631         delete viewport;
00632 }


Member Function Documentation

void NDK_XX::Edit::add_char int    key [protected, virtual]
 

In overwrite mode.

Definition at line 645 of file ndk++.cc.

References NDK_XX::Label::cur_x, and NDK_XX::Label::text.

Referenced by add_or_insert_char().

00646 {
00647     if(cur_x < text.size())
00648         text[cur_x]=key;
00649     else
00650         text+=key;
00651 }

int NDK_XX::Edit::add_or_insert_char int    key [protected, virtual]
 

Definition at line 664 of file ndk++.cc.

References add_char(), NDK_XX::Label::cur_x, NDK_XX::Control::get_ctrl_id(), insert_char(), NDK_XX::Label::max_len(), NDK_XX::Control::notify_enabled(), NDK_XX::Control::overwrite(), NDK_XX::Control::pParent, NDK_XX::Control::process_message(), refresh_text(), NDK_XX::Label::refresh_viewport(), NDK_XX::Label::text, TXT_CHANGED, NDK_XX::Label::viewport, and NDK_XX::Label::x_start.

Referenced by edit().

00665 {
00666     if(!isprint(key))
00667         return FALSE;
00668         
00669     if(cur_x > -1 && cur_x < max_len()){
00670         if(overwrite())add_char(key);
00671         else{ 
00672             if(text.size()==max_len()){
00673                 beep();
00674                 return TRUE;
00675             }
00676             insert_char(key);
00677         }
00678         refresh_text();
00679         if(++cur_x >= viewport->width())
00680             x_start++;
00681 //      send_to_log(text) << ":" << cur_x << endl;
00682         refresh_viewport();
00683         if(notify_enabled())
00684             process_message(pParent,TXT_CHANGED,get_ctrl_id(),0);
00685     }
00686     else beep();
00687     return TRUE;
00688 }

int NDK_XX::Edit::driver int    key [protected, virtual]
 

get a chance at processing the key, before parent does

Reimplemented from NDK_XX::Control.

Definition at line 636 of file ndk++.cc.

References edit().

00637 {
00638     if(key==KEY_MOUSE)
00639         return false;
00640     return edit(key);
00641 }

int NDK_XX::Edit::edit int    key [protected, virtual]
 

This is the specialized driver for edition.

Reimplemented in NDK_XX::EditNumber, NDK_XX::EditDate, and NDK_XX::EditDouble.

Definition at line 692 of file ndk++.cc.

References add_or_insert_char(), NDK_XX::Label::cur_x, NDK_XX::Control::get_ctrl_id(), KEY_ENTER, KEY_TAB, move_left(), move_right(), NDK_XX::Control::notify_enabled(), NDK_XX::Control::pParent, NDK_XX::Control::process_message(), refresh_text(), NDK_XX::Label::refresh_viewport(), NDK_XX::Label::text, TXT_CHANGED, and NDK_XX::Label::x_start.

Referenced by driver().

00693 {
00694     switch(key) {
00695         case KEY_BACKSPACE:
00696         case KEY_DC:
00697             if(!text.empty()){
00698                 if(cur_x)   cur_x--;
00699                 if(x_start) x_start--;
00700                 text.erase(cur_x,1);
00701                 refresh_text();
00702                 refresh_viewport();
00703                 if(notify_enabled())
00704                     process_message(pParent,TXT_CHANGED,get_ctrl_id(),0);
00705             }
00706             else beep();
00707             return TRUE;
00708         case KEY_LEFT:  return move_left();
00709         case KEY_RIGHT: return move_right();
00710         case KEY_ENTER: beep(); return KEY_TAB;
00711         default:
00712             if(add_or_insert_char(key)) 
00713                 return TRUE;
00714     }
00715     return FALSE;
00716 }

void NDK_XX::Edit::insert_char int    key [protected, virtual]
 

In insert mode.

Definition at line 655 of file ndk++.cc.

References NDK_XX::Label::cur_x, NDK_XX::Label::max_len(), and NDK_XX::Label::text.

Referenced by add_or_insert_char().

00656 {
00657     if(text.size()+1 <= max_len()){
00658         text.insert(cur_x,1,(char)key);
00659     }
00660 }

int NDK_XX::Edit::move_left   [protected, virtual]
 

move_left and move_right:

if arrow_is_tab == true, they return false, so the owner can process KEY_LEFT and KEY_RIGHT, and properly move to previous or next control.

Reimplemented from NDK_XX::Control.

Definition at line 737 of file ndk++.cc.

References NDK_XX::Label::cur_x, refresh_text(), NDK_XX::Label::refresh_viewport(), and NDK_XX::Label::x_start.

Referenced by edit().

00738 {
00739     int result = TRUE;
00740     if(cur_x){
00741         if(--cur_x == x_start){
00742             if(x_start)
00743                 x_start--;
00744             refresh_text();
00745         }
00746         refresh_viewport();
00747     }
00748     else 
00749         result = Label::move_left();
00750     return result;
00751 }

int NDK_XX::Edit::move_right   [protected, virtual]
 

Reimplemented from NDK_XX::Control.

Definition at line 720 of file ndk++.cc.

References NDK_XX::Label::cur_x, NDK_XX::Label::max_len(), refresh_text(), NDK_XX::Label::refresh_viewport(), NDK_XX::Label::text, NDK_XX::Label::viewport, and NDK_XX::Label::x_start.

Referenced by edit().

00721 {
00722     int result=TRUE;
00723     if(text.size() && cur_x < text.size() && cur_x < max_len()-1){
00724         if(++cur_x >= viewport->width()){
00725             x_start++;
00726             refresh_text();
00727         }
00728         refresh_viewport();
00729     }
00730     else 
00731         result = Label::move_right();
00732     return result;
00733 }

virtual void NDK_XX::Edit::refresh_text   [inline, protected, virtual]
 

Update the text we present on the viewport.

Reimplemented from NDK_XX::Label.

Definition at line 576 of file ndk++.h.

References NDK_XX::Button::default_choice, NDK_XX::Control::notify, NDK_XX::Control::tabstop, and NDK_XX::Control::title.

Referenced by add_or_insert_char(), NDK_XX::EditDate::edit(), edit(), move_left(), and move_right().

00590                                        {default_choice=t_or_f;}


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 16:02:15 2002 by doxygen1.2.17