home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
vos2-121.zip
/
v
/
srcos2
/
vtextinc.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1999-02-21
|
5KB
|
143 lines
//===============================================================
// vtextinc.xxx - TextIn Cmd - Windows
//
// Copyright (C) 1995,1996,1997,1998 Bruce E. Wampler
//
// This file is part of the V C++ GUI Framework, and is covered
// under the terms of the GNU Library General Public License,
// Version 2. This library has NO WARRANTY. See the source file
// vapp.cxx for more complete information about license terms.
//===============================================================
#include <v/vos2.h> // for OS/2 stuff
#include <v/vapp.h>
#include <v/vtextinc.h> // our definitions
#include <v/vcmdprnt.h> // a command parent
#define TextInFont SysVariableFont // The font to use
//=====================>>> vTextInCmd::vTextInCmd <<<=======================
vTextInCmd::vTextInCmd(vCmdParent* dp, CommandObject* co) :
vCmd(dp, co)
{
initialize();
}
//=====================>>> vTextInCmd::~vTextInCmd <<<=======================
vTextInCmd::~vTextInCmd()
{
SysDebug(Destructor,"vTextInCmd::~vTextInCmd() destructor\n")
}
//=====================>>> vTextInCmd::initialize <<<=======================
void vTextInCmd::initialize(void)
{
// build a TextIn command for use in a parent window
SysDebug(Constructor,"vTextInCmd::vTextInCmd() constructor\n")
_msg[0] = 0; // no string yet
CopyToLocal(); // Make local copies of CmdObject
int defLen = strlen(_title); // length of supplied string
if (defLen < 130)
strcpy(_msg,_title);
int defWidth = (dlgCmd->attrs & CA_Large) ? 35 : 20;
if (dlgCmd->attrs & CA_Small) // allow small, too.
defWidth = 10;
if (dlgCmd->size > 0) // V:1.13
defWidth = dlgCmd->size;
if (defLen > defWidth) // Some work space
defWidth = defLen + 6;
LONG style = ES_LEFT | ES_AUTOSCROLL | WS_GROUP | WS_TABSTOP;
_efd.cb = sizeof(ENTRYFDATA);
_efd.cchEditLimit = 130;
_efd.ichMinSel = 0;
_efd.ichMaxSel = 0;
if (dlgCmd->attrs & CA_Password)
style |= ES_UNREADABLE;
if (!(dlgCmd->attrs & CA_NoBorder))
style |= ES_MARGIN;
if (!(dlgCmd->attrs & CA_Hidden)) // Check for Hidden
style |= WS_VISIBLE;
_w = defWidth * 4 + 6;
_h = LabelHeight()+6; // was 12
_parentWin->SetPosition(_x, _y, _w, _h, dlgCmd->cFrame, dlgCmd->cRightOf,
dlgCmd->cBelow);
// entrybox border extends 1/2 character beyond specified width so
// need to compensate to keep alignment aesthetic
if (!(dlgCmd->attrs & CA_NoBorder))
{
_x += 2; _y += 3;
_w -= 4; _h -= 6;
}
_CtrlOffset = _parentWin->AddDlgControl(_x, _y , _w, _h, _cmdId,
style, WC_ENTRYFIELD, _title, 0, _efd.cb, &_efd);
}
//=====================>>> vTextInCmd::GetTextIn <<<=======================
int vTextInCmd::GetTextIn(ItemVal id, char* str, int maxlen) VCONST
{
// recover the data from a TextInCmd - return text + length
int ix;
for (ix = 0 ; _msg[ix] != 0 && ix < maxlen-1 ; ++ix)
str[ix] = _msg[ix];
str[ix] = 0;
return strlen(str);
}
//================>>> vTextInCmd::SetCmdVal <<<============================
void vTextInCmd::SetCmdVal(ItemVal val, ItemSetType st)
{
SysDebug1(Misc,"vTextInCmd::SetCmdVal(val:%d)\n",val)
HWND myHwnd = GetMyHwnd(_cmdId);
switch (st)
{
case Sensitive:
_Sensitive = val; // set
WinEnableWindow (myHwnd, val);
break;
case Hidden:
if (val)
WinShowWindow (myHwnd, FALSE);
else
WinShowWindow (myHwnd, TRUE);
break;
}
}
//================>>> vTextInCmd::SetCmdStr <<<============================
void vTextInCmd::SetCmdStr(VCONST char* str)
{
char trunc[80];
SysDebug1(Misc,"vTextInCmd::SetCmdStr(str:%s)\n", strncpy(trunc, str, 60))
strcpy(_msg, str);
HWND myHwnd = GetMyHwnd(_cmdId);
WinSetWindowText(myHwnd, str);
}
//====================>>> vRadioButtonCmd::CmdCallback <<<=======================
void vTextInCmd::CmdCallback(UINT uMsg, MPARAM mp1, MPARAM mp2)
{
// Edit strings are noops except for EN_CHANGE
if (uMsg == WM_CONTROL)
{
if (SHORT2FROMMP(mp1) == EN_CHANGE)
{
HWND myHwnd = GetMyHwnd(_cmdId);
WinQueryWindowText(myHwnd, sizeof(_msg), _msg);
// SysDebug1(OS2Dev,"vTextInCmd::CmdCallBack _msg:%s \n", _msg)
}
}
}