mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
196 lines
5.0 KiB
C++
196 lines
5.0 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
/*
|
|
Dialog.cpp -- class for toplevel XFE dialogs.
|
|
Created: Linda Wei <lwei@netscape.com>, 16-Sep-96.
|
|
*/
|
|
|
|
|
|
|
|
#include "Dialog.h"
|
|
#include "xpassert.h"
|
|
#include "xfe2_extern.h"
|
|
|
|
#include <Xm/SelectioB.h>
|
|
|
|
// ==================== Public Member Functions ====================
|
|
|
|
// Member: XFE_Dialog
|
|
// Description: Constructor
|
|
// Inputs:
|
|
// Side effects: Creates a prompt dialog
|
|
|
|
XFE_Dialog::XFE_Dialog(Widget parent, // dialog parent
|
|
char *name, // dialog name
|
|
Boolean ok, // show OK button?
|
|
Boolean cancel, // show cancel button?
|
|
Boolean help, // show help button?
|
|
Boolean apply, // show apply button?
|
|
Boolean separator, // show separator?
|
|
Boolean modal, // modal dialog?
|
|
Widget chrome_widget)
|
|
: XFE_Component()
|
|
{
|
|
#if defined(GLUE_COMPO_CONTEXT)
|
|
Widget s = parent;
|
|
while (s && !XtIsShell(s)) {
|
|
s = XtParent(s);
|
|
}
|
|
m_wParent = s;
|
|
|
|
// Create the chrome
|
|
|
|
if (chrome_widget == NULL)
|
|
m_chrome = createDialogChromeWidget(s, name, ok, cancel,
|
|
help, apply, separator, modal);
|
|
else
|
|
m_chrome = chrome_widget;
|
|
#else
|
|
m_wParent = parent;
|
|
|
|
// Create the chrome
|
|
|
|
if (chrome_widget == NULL)
|
|
m_chrome = createDialogChromeWidget(parent, name, ok, cancel,
|
|
help, apply, separator, modal);
|
|
else
|
|
m_chrome = chrome_widget;
|
|
#endif /* GLUE_COMPO_CONTEXT */
|
|
|
|
// Register base widget and parent widget
|
|
|
|
setBaseWidget(XtParent(m_chrome));
|
|
installDestroyHandler();
|
|
}
|
|
|
|
// Member: ~XFE_Dialog
|
|
// Description: Destructor
|
|
// Inputs:
|
|
// Side effects:
|
|
|
|
XFE_Dialog::~XFE_Dialog()
|
|
{
|
|
}
|
|
|
|
// Member: show
|
|
// Description:
|
|
// Inputs:
|
|
// Side effects:
|
|
|
|
void XFE_Dialog::show()
|
|
{
|
|
XP_ASSERT(m_chrome);
|
|
fe_NukeBackingStore(m_chrome);
|
|
XtManageChild(m_chrome);
|
|
}
|
|
|
|
// Member: hide
|
|
// Description:
|
|
// Inputs:
|
|
// Side effects:
|
|
|
|
void XFE_Dialog::hide()
|
|
{
|
|
XP_ASSERT(m_chrome);
|
|
XtUnmanageChild(m_chrome);
|
|
}
|
|
|
|
// ==================== Protected Member Functions ====================
|
|
|
|
// ==================== Private Member Functions ====================
|
|
|
|
Widget
|
|
XFE_Dialog::createDialogChromeWidget(Widget parent,
|
|
char *name,
|
|
Boolean ok,
|
|
Boolean cancel,
|
|
Boolean help,
|
|
Boolean apply,
|
|
Boolean separator,
|
|
Boolean modal)
|
|
{
|
|
Visual *v = 0;
|
|
Colormap cmap = 0;
|
|
Cardinal depth = 0;
|
|
Arg av[20];
|
|
int ac;
|
|
Widget chrome;
|
|
|
|
XtVaGetValues (parent,
|
|
XtNvisual, &v,
|
|
XtNcolormap, &cmap,
|
|
XtNdepth, &depth,
|
|
0);
|
|
|
|
ac = 0;
|
|
XtSetArg (av[ac], XmNvisual, v); ac++;
|
|
XtSetArg (av[ac], XmNdepth, depth); ac++;
|
|
XtSetArg (av[ac], XmNcolormap, cmap); ac++;
|
|
XtSetArg (av[ac], XmNallowShellResize, TRUE); ac++;
|
|
XtSetArg (av[ac], XmNtransientFor, parent); ac++;
|
|
if (modal) {
|
|
XtSetArg (av[ac], XmNdialogStyle, XmDIALOG_PRIMARY_APPLICATION_MODAL); ac++;
|
|
}
|
|
XtSetArg (av[ac], XmNdialogType, XmDIALOG_QUESTION); ac++;
|
|
XtSetArg (av[ac], XmNdeleteResponse, XmDESTROY); ac++;
|
|
XtSetArg (av[ac], XmNautoUnmanage, False); ac++;
|
|
XtSetArg (av[ac], XmNnoResize, True); ac++;
|
|
|
|
chrome = XmCreatePromptDialog (parent, name, av, ac);
|
|
|
|
if (!separator)
|
|
fe_UnmanageChild_safe(XmSelectionBoxGetChild(chrome,
|
|
XmDIALOG_SEPARATOR));
|
|
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome,
|
|
XmDIALOG_TEXT));
|
|
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome,
|
|
XmDIALOG_SELECTION_LABEL));
|
|
|
|
if (!ok)
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome,
|
|
XmDIALOG_OK_BUTTON));
|
|
else
|
|
m_okButton = XmSelectionBoxGetChild(chrome, XmDIALOG_OK_BUTTON);
|
|
|
|
if (!cancel)
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome,
|
|
XmDIALOG_CANCEL_BUTTON));
|
|
else
|
|
m_cancelButton = XmSelectionBoxGetChild(chrome, XmDIALOG_CANCEL_BUTTON);
|
|
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome, XmDIALOG_HELP_BUTTON));
|
|
|
|
if (help) {
|
|
// TODO: Enable help later
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome, XmDIALOG_HELP_BUTTON));
|
|
// m_helpButton = XmSelectionBoxGetChild(chrome, XmDIALOG_HELP_BUTTON);
|
|
}
|
|
else
|
|
fe_UnmanageChild_safe (XmSelectionBoxGetChild (chrome, XmDIALOG_HELP_BUTTON));
|
|
|
|
if (apply) {
|
|
m_applyButton = XmSelectionBoxGetChild(chrome, XmDIALOG_APPLY_BUTTON);
|
|
XtManageChild(m_applyButton);
|
|
}
|
|
|
|
return chrome;
|
|
}
|
|
|