Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
190
cde/programs/dtprintinfo/UI/DtSetModList.C
Normal file
190
cde/programs/dtprintinfo/UI/DtSetModList.C
Normal file
@@ -0,0 +1,190 @@
|
||||
/* $XConsortium: DtSetModList.C /main/2 1995/07/17 14:04:17 drk $ */
|
||||
/* *
|
||||
* (c) Copyright 1993, 1994 Hewlett-Packard Company *
|
||||
* (c) Copyright 1993, 1994 International Business Machines Corp. *
|
||||
* (c) Copyright 1993, 1994 Sun Microsystems, Inc. *
|
||||
* (c) Copyright 1993, 1994 Novell, Inc. *
|
||||
*/
|
||||
|
||||
#include "DtSetModList.h"
|
||||
#include "DtMainW.h"
|
||||
#include "DtWorkArea.h"
|
||||
#include "Button.h"
|
||||
#include "IconObj.h"
|
||||
#include "LabelObj.h"
|
||||
#include "Container.h"
|
||||
|
||||
|
||||
#include "dtprintinfomsg.h"
|
||||
|
||||
DtSetModList::DtSetModList(AnyUI *parent,
|
||||
char *name,
|
||||
BaseUI *workarea,
|
||||
ButtonCallback filterCB)
|
||||
: Dialog(parent, name)
|
||||
{
|
||||
mainw = (DtMainW *) parent;
|
||||
_has_been_posted = false;
|
||||
_info = new LabelObj(this, MESSAGE(SelectPrintersToBeShowL));
|
||||
_container = new Container(this, "FilterList", SCROLLED_VERTICAL_ROW_COLUMN,
|
||||
MULTIPLE_SELECT);
|
||||
_container->IconView(SMALL_ICON);
|
||||
_filterCB = filterCB;
|
||||
_workarea = (Container *) workarea;
|
||||
Container *form = new Container(this, "Form", FORM);
|
||||
|
||||
_info->AttachRight();
|
||||
_info->AttachLeft();
|
||||
_info->AttachTop();
|
||||
form->AttachBottom();
|
||||
form->AttachRight();
|
||||
form->AttachLeft();
|
||||
_container->AttachBottom(form, 5);
|
||||
_container->AttachRight();
|
||||
_container->AttachLeft();
|
||||
_container->AttachTop(_info);
|
||||
select_all = new Button(form, MESSAGE(SelectAllL), PUSH_BUTTON, SelectAllCB,
|
||||
_container);
|
||||
unselect_all = new Button(form, MESSAGE(DeselectAllL), PUSH_BUTTON,
|
||||
UnSelectAllCB, _container);
|
||||
|
||||
int i;
|
||||
IconObj **objs = (IconObj **) workarea->Children();
|
||||
for (i = 0; i < workarea->NumChildren(); i++)
|
||||
{
|
||||
if (objs[i]->UIClass() == ICON)
|
||||
{
|
||||
IconObj *icon = new IconObj(_container, (char *)objs[i]->Name(),
|
||||
objs[i]->IconFile());
|
||||
icon->ApplicationData = objs[i];
|
||||
}
|
||||
}
|
||||
|
||||
ok = new Button(this, MESSAGE(OKL), PUSH_BUTTON, OkCB, this);
|
||||
apply = new Button(this, MESSAGE(ApplyL), PUSH_BUTTON, ApplyCB, this);
|
||||
cancel = new Button(this, MESSAGE(CancelL), PUSH_BUTTON, CancelCB, this);
|
||||
help = new Button(this, MESSAGE(HelpL), PUSH_BUTTON, HelpCB, this);
|
||||
DefaultButton(ok);
|
||||
CancelButton(cancel);
|
||||
Reset();
|
||||
}
|
||||
|
||||
DtSetModList::~DtSetModList()
|
||||
{
|
||||
// Empty
|
||||
}
|
||||
|
||||
boolean DtSetModList::SetVisiblity(boolean flag)
|
||||
{
|
||||
if (_has_been_posted == false)
|
||||
{
|
||||
int height;
|
||||
if (_container->NumChildren())
|
||||
{
|
||||
BaseUI **kids = _container->Children();
|
||||
height = (kids[0]->Height() + 4) * _container->NumChildren();
|
||||
if (height > 300)
|
||||
height = 300;
|
||||
}
|
||||
else
|
||||
height = 200;
|
||||
int width = StringWidth(Name()) + 30;
|
||||
if (Width() < width)
|
||||
{
|
||||
width -= 10;
|
||||
_container->WidthHeight(width, height);
|
||||
}
|
||||
else
|
||||
_container->Height(height);
|
||||
_has_been_posted = true;
|
||||
|
||||
int offset = (width - (select_all->Width() + unselect_all->Width())) / 3;
|
||||
select_all->AttachLeft(offset);
|
||||
unselect_all->AttachRight(offset);
|
||||
unselect_all->AttachLeft(NULL, 0);
|
||||
}
|
||||
Reset();
|
||||
Dialog::SetVisiblity(flag);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DtSetModList::Reset()
|
||||
{
|
||||
int i;
|
||||
IconObj **children = (IconObj **) _container->Children();
|
||||
mainw->container->BeginUpdate();
|
||||
for (i = 0; i < _container->NumChildren(); i++)
|
||||
{
|
||||
IconObj *icon = (IconObj *)children[i]->ApplicationData;
|
||||
children[i]->Selected(icon->Visible());
|
||||
if (strcmp(icon->Name(), children[i]->Name()))
|
||||
children[i]->Name((char *)icon->Name());
|
||||
if (strcmp(icon->IconFile(), children[i]->IconFile()))
|
||||
children[i]->IconFile(icon->IconFile());
|
||||
}
|
||||
mainw->container->EndUpdate();
|
||||
}
|
||||
|
||||
void DtSetModList::Apply()
|
||||
{
|
||||
if (_filterCB)
|
||||
(*_filterCB)((void *)_container);
|
||||
|
||||
}
|
||||
|
||||
void DtSetModList::OkCB(void *data)
|
||||
{
|
||||
DtSetModList *obj = (DtSetModList *) data;
|
||||
|
||||
obj->Apply();
|
||||
obj->Visible(false);
|
||||
}
|
||||
|
||||
void DtSetModList::Cancel()
|
||||
{
|
||||
Reset();
|
||||
Visible(false);
|
||||
}
|
||||
|
||||
void DtSetModList::CloseCB()
|
||||
{
|
||||
Cancel();
|
||||
}
|
||||
|
||||
void DtSetModList::CancelCB(void *data)
|
||||
{
|
||||
DtSetModList *obj = (DtSetModList *) data;
|
||||
|
||||
obj->Cancel();
|
||||
}
|
||||
|
||||
void DtSetModList::ApplyCB(void *data)
|
||||
{
|
||||
DtSetModList *obj = (DtSetModList *) data;
|
||||
|
||||
obj->Apply();
|
||||
}
|
||||
|
||||
void DtSetModList::SelectAllCB(void *data)
|
||||
{
|
||||
Container *obj = (Container *) data;
|
||||
obj->SelectAll();
|
||||
}
|
||||
|
||||
void DtSetModList::UnSelectAllCB(void *data)
|
||||
{
|
||||
Container *obj = (Container *) data;
|
||||
obj->SelectAll(false);
|
||||
}
|
||||
|
||||
void DtSetModList::HelpCB(void *data)
|
||||
{
|
||||
DtSetModList *obj = (DtSetModList *) data;
|
||||
obj->HandleHelpRequest();
|
||||
}
|
||||
|
||||
boolean DtSetModList::HandleHelpRequest()
|
||||
{
|
||||
mainw->DisplayHelp("ShowPrintersDE");
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user