Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
348
cde/programs/dtprintinfo/UI/DtMainW.C
Normal file
348
cde/programs/dtprintinfo/UI/DtMainW.C
Normal file
@@ -0,0 +1,348 @@
|
||||
/* $TOG: DtMainW.C /main/5 1998/07/24 16:12:56 mgreess $ */
|
||||
/* *
|
||||
* (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 "DtMainW.h"
|
||||
#include "Application.h"
|
||||
#include "Menu.h"
|
||||
#include "MenuBar.h"
|
||||
#include "LabelObj.h"
|
||||
#include "Sep.h"
|
||||
#include "Button.h"
|
||||
#include "IconObj.h"
|
||||
#include "DtWorkArea.h"
|
||||
#include "DtActions.h"
|
||||
#include "DtSetModList.h"
|
||||
#include "DtFindD.h"
|
||||
#include "HelpSystem.h"
|
||||
|
||||
#include "BaseObj.h"
|
||||
|
||||
#include "dtprintinfomsg.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static char *GetIcon(AnyUI *obj, PrinterApplicationMode app_mode)
|
||||
{
|
||||
if (app_mode == SINGLE_PRINTER)
|
||||
{
|
||||
if (obj->depth == 1)
|
||||
return "Fpprnt.l.bm";
|
||||
else
|
||||
return "Fpprnt.l.pm";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (obj->depth == 1)
|
||||
return "FpPrtmg.l.bm";
|
||||
else
|
||||
return "FpPrtmg.l.pm";
|
||||
}
|
||||
}
|
||||
|
||||
DtMainW::DtMainW(char *category,
|
||||
AnyUI *p,
|
||||
char *name,
|
||||
ContainerType container_type,
|
||||
SelectionType select_type,
|
||||
OpenCallback openCB,
|
||||
void *openCallbackData,
|
||||
PreferenceCallback prefCB,
|
||||
void *prefCallbackData,
|
||||
char *fileMenuName,
|
||||
char *fileMenuMnemonic,
|
||||
PrinterApplicationMode _app_mode)
|
||||
: MainWindow(category, p, name, name, GetIcon(p, _app_mode))
|
||||
{
|
||||
Visible(true);
|
||||
in_find = false;
|
||||
working_curs = 0;
|
||||
app_mode = _app_mode;
|
||||
_openClose = openCB;
|
||||
_prefCB = prefCB;
|
||||
if (openCallbackData)
|
||||
_openCallbackData = openCallbackData;
|
||||
else
|
||||
_openCallbackData = this;
|
||||
if (prefCallbackData)
|
||||
_prefCallbackData = prefCallbackData;
|
||||
else
|
||||
_prefCallbackData = this;
|
||||
_fileMenuName = fileMenuName;
|
||||
_fileMenuMnemonic = fileMenuMnemonic;
|
||||
_container_type = container_type;
|
||||
_select_type = select_type;
|
||||
setModList = NULL;
|
||||
setPrefD = NULL;
|
||||
findD = NULL;
|
||||
helpSystem = NULL;
|
||||
findSetD = NULL;
|
||||
action_data = (ActionData **) malloc(sizeof(ActionData *));
|
||||
n_action_data = 0;
|
||||
}
|
||||
|
||||
DtMainW::~DtMainW()
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < n_action_data; i++)
|
||||
{
|
||||
delete action_data[i]->actionReferenceName;
|
||||
delete action_data[i];
|
||||
}
|
||||
delete action_data;
|
||||
}
|
||||
|
||||
void DtMainW::DisplayHelp(char *location_id, char *volume)
|
||||
{
|
||||
char old_msg[200];
|
||||
|
||||
strcpy(old_msg, status_line->Name());
|
||||
status_line->Name(MESSAGE(GettingHelpL));
|
||||
WorkingCursor(true);
|
||||
if (!helpSystem)
|
||||
{
|
||||
char *title = new char[120];
|
||||
sprintf(title, "%s - %s", Name(), MESSAGE(HelpL));
|
||||
|
||||
helpSystem = new HelpSystem(this, title, volume, location_id);
|
||||
helpSystem->Visible(true);
|
||||
delete [] title;
|
||||
}
|
||||
else
|
||||
{
|
||||
helpSystem->Visible(true);
|
||||
helpSystem->Refresh();
|
||||
helpSystem->HelpVolume(volume, location_id);
|
||||
}
|
||||
status_line->Name(old_msg);
|
||||
WorkingCursor(false);
|
||||
helpSystem->ToFront();
|
||||
}
|
||||
|
||||
void DtMainW::Initialize()
|
||||
{
|
||||
mbar = new MenuBar(this);
|
||||
Container *form = new DtWorkArea((char *) Category(), this, (char *)Name(),
|
||||
FORM);
|
||||
container = new DtWorkArea((char *) Category(), form, (char *)Name(),
|
||||
_container_type, _select_type);
|
||||
|
||||
status_line = new LabelObj(form, " ", LEFT_JUSTIFIED, true);
|
||||
status_line->AttachBottom();
|
||||
status_line->AttachLeft();
|
||||
status_line->AttachRight();
|
||||
container->AttachTop();
|
||||
container->AttachLeft();
|
||||
container->AttachRight();
|
||||
container->AttachBottom(status_line);
|
||||
if (app_mode == SINGLE_PRINTER)
|
||||
container->WidthHeight(600, 150);
|
||||
else
|
||||
container->WidthHeight(600, 400);
|
||||
SetWorkWindow(form);
|
||||
|
||||
char *title = new char[100];
|
||||
sprintf(title, MESSAGE(SetOptionsTitleL), Name());
|
||||
setPrefD = new DtSetPref(this, title, container, _prefCB,
|
||||
_prefCallbackData);
|
||||
delete [] title;
|
||||
|
||||
fileMenu = new DtMenu(mbar, _fileMenuName, _fileMenuMnemonic,
|
||||
"PrinterMenuDE");
|
||||
exitB = new Button(fileMenu, MESSAGE(ExitChoiceL), PUSH_BUTTON, ExitCB, this,
|
||||
MESSAGE(ExitMnemonicL), MESSAGE(ExitAcceleratorL));
|
||||
|
||||
actionsMenu = new DtActions(mbar, MESSAGE(SelectedMenuL),
|
||||
MESSAGE(SelectedAcceleratorL));
|
||||
actionsMenu->Active(false);
|
||||
|
||||
if (app_mode != CONFIG_PRINTERS)
|
||||
{
|
||||
viewMenu = new DtMenu(mbar, MESSAGE(ViewMenuL),
|
||||
MESSAGE(ViewAcceleratorL), "ViewMenuDE");
|
||||
|
||||
setPref = new Button(viewMenu, MESSAGE(SetOptionsChoiceL), PUSH_BUTTON,
|
||||
SetPrefCB, setPrefD, MESSAGE(SetOptionsMnemonicL));
|
||||
}
|
||||
else
|
||||
viewMenu = NULL;
|
||||
helpMenu = new DtMenu(mbar, MESSAGE(HelpChoiceL), MESSAGE(HelpMnemonicL),
|
||||
"HelpMenuDE");
|
||||
introduction = new Button(helpMenu, MESSAGE(OverviewChoiceL), PUSH_BUTTON,
|
||||
HelpCB, this, MESSAGE(OverviewMnemonicL));
|
||||
new Sep(helpMenu);
|
||||
tasks = new Button(helpMenu, MESSAGE(TaskChoiceL), PUSH_BUTTON, TasksCB,
|
||||
this, MESSAGE(TaskMnemonicL));
|
||||
reference = new Button(helpMenu, MESSAGE(ReferenceChoiceL), PUSH_BUTTON,
|
||||
ReferenceCB, this, MESSAGE(ReferenceMnemonicL));
|
||||
onWindow = new Button(helpMenu, MESSAGE(OnItemChoiceL), PUSH_BUTTON,
|
||||
OnItemCB, this, MESSAGE(OnItemMnemonicL));
|
||||
new Sep(helpMenu);
|
||||
usingHelp = new Button(helpMenu, MESSAGE(UsingHelpChoiceL), PUSH_BUTTON,
|
||||
UsingHelpCB, this, MESSAGE(UsingHelpMnemonicL));
|
||||
new Sep(helpMenu);
|
||||
char *tmp;
|
||||
if (app_mode == PRINT_MANAGER)
|
||||
tmp = MESSAGE(AboutChoice1L);
|
||||
else if (app_mode == SINGLE_PRINTER)
|
||||
tmp = MESSAGE(AboutChoice2L);
|
||||
else
|
||||
tmp = MESSAGE(AboutChoice3L);
|
||||
version = new Button(helpMenu, tmp, PUSH_BUTTON, AboutCB,
|
||||
this, MESSAGE(AboutMnemonicL));
|
||||
|
||||
mbar->SetHelpMenu(helpMenu);
|
||||
}
|
||||
|
||||
void DtMainW::SetPrefCB(void *data)
|
||||
{
|
||||
DtSetPref *obj = (DtSetPref *) data;
|
||||
|
||||
obj->Visible(true);
|
||||
}
|
||||
|
||||
void DtMainW::ExitCB(void *data)
|
||||
{
|
||||
Application *app = (Application *)((BaseUI *)data)->Parent();
|
||||
app->SaveMe();
|
||||
delete (BaseObj *)((BaseUI *)data)->ApplicationData;
|
||||
delete ((BaseUI *)data)->Parent();
|
||||
exit (0);
|
||||
}
|
||||
|
||||
void DtMainW::OpenClose(BaseUI *obj)
|
||||
{
|
||||
if (_openClose)
|
||||
(*_openClose)(_openCallbackData, obj);
|
||||
}
|
||||
|
||||
void DtMainW::DtAddAction(char *name, char *category, char *actionName,
|
||||
ActionCallback callback, void *callback_data,
|
||||
char *mnemonic, char *acceleratorText,
|
||||
char *accelerator)
|
||||
{
|
||||
BaseUI *action1;
|
||||
if (action1 = actionsMenu->FindByName(name))
|
||||
action1->Category(NULL);
|
||||
else
|
||||
actionsMenu->AddAction(name, category, actionName, callback,
|
||||
callback_data, mnemonic, acceleratorText,
|
||||
accelerator);
|
||||
|
||||
int size = sizeof(ActionData *) * (n_action_data + 1);
|
||||
action_data = (ActionData **) realloc(action_data, size);
|
||||
action_data[n_action_data] = (ActionData *)malloc(sizeof(ActionData));
|
||||
action_data[n_action_data]->actionReferenceName = strdup(actionName);
|
||||
action_data[n_action_data]->callback_data = callback_data;
|
||||
action_data[n_action_data]->actionCallback = callback;
|
||||
Button *action = AddAction(name, category, &DtMainW::ActionCB, NULL,
|
||||
mnemonic, acceleratorText, accelerator);
|
||||
action->ApplicationData = action_data[n_action_data];
|
||||
n_action_data++;
|
||||
}
|
||||
|
||||
void DtMainW::DtAddSep(char *category)
|
||||
{
|
||||
actionsMenu->AddSep(category);
|
||||
AddSep(category);
|
||||
}
|
||||
|
||||
void DtMainW::ActionCB(void *callback_data)
|
||||
{
|
||||
Button *action = (Button *) callback_data;
|
||||
DtMainW *window = (DtMainW *)action->Parent()->Parent()->Parent();
|
||||
ActionData *cb = (ActionData *) action->ApplicationData;
|
||||
if (cb->actionCallback)
|
||||
{
|
||||
if (window->container->ObjectExists(window->PopupObjectUniqueID))
|
||||
{
|
||||
(*cb->actionCallback)(cb->callback_data, window->PopupObject,
|
||||
cb->actionReferenceName);
|
||||
}
|
||||
else
|
||||
{
|
||||
Dialog *dialog = new Dialog(window, (char *)window->Name(),
|
||||
MESSAGE(NotFoundMessageL), INFORMATION,
|
||||
MESSAGE(OKL));
|
||||
dialog->Visible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DtMainW::HelpCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
obj->DisplayHelp("_hometopic");
|
||||
}
|
||||
|
||||
void DtMainW::ReferenceCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
obj->DisplayHelp("Reference");
|
||||
}
|
||||
|
||||
void DtMainW::TasksCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
obj->DisplayHelp("Tasks");
|
||||
}
|
||||
|
||||
void DtMainW::UsingHelpCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
obj->DisplayHelp("_hometopic", "Help4Help");
|
||||
}
|
||||
|
||||
void DtMainW::AboutCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
obj->DisplayHelp("_copyright");
|
||||
}
|
||||
|
||||
void DtMainW::OnItemCB(void *data)
|
||||
{
|
||||
DtMainW * obj = (DtMainW *) data;
|
||||
|
||||
obj->ContextualHelp();
|
||||
}
|
||||
|
||||
boolean DtMainW::HandleHelpRequest()
|
||||
{
|
||||
if (app_mode == PRINT_MANAGER)
|
||||
DisplayHelp("MainWindowDE");
|
||||
else
|
||||
DisplayHelp("PJMainWindowDE");
|
||||
return true;
|
||||
}
|
||||
|
||||
void DtMainW::WorkingCursor(boolean flag)
|
||||
{
|
||||
int i;
|
||||
BaseUI **children = Children();
|
||||
if (flag)
|
||||
{
|
||||
if (working_curs == 0)
|
||||
for (i = 0; i < NumChildren(); i++, children++)
|
||||
(*children)->PointerShape(HOUR_GLASS_CURSOR);
|
||||
working_curs++;
|
||||
}
|
||||
else
|
||||
{
|
||||
working_curs--;
|
||||
if (working_curs == 0)
|
||||
for (i = 0; i < NumChildren(); i++, children++)
|
||||
(*children)->PointerShape(LEFT_SLANTED_ARROW_CURSOR);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
boolean DtMenu::HandleHelpRequest()
|
||||
{
|
||||
((DtMainW *)Parent()->Parent())->DisplayHelp(location_id);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user