2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: JobBox.c /main/3 1996/08/12 18:41:59 cde-hp $ */
28 * (c) Copyright 1996 Digital Equipment Corporation.
29 * (c) Copyright 1996 Hewlett-Packard Company.
30 * (c) Copyright 1996 International Business Machines Corp.
31 * (c) Copyright 1996 Sun Microsystems, Inc.
32 * (c) Copyright 1996 Novell, Inc.
33 * (c) Copyright 1996 FUJITSU LIMITED.
34 * (c) Copyright 1996 Hitachi.
36 #include <Dt/PrintDlgMgrP.h>
41 * JobBox-specific data - PdmSetupBox.subclass_data
45 const char* job_options;
47 PdmOidNotify notification_profile;
49 Boolean job_options_supported;
50 Boolean job_name_supported;
51 Boolean notification_profile_supported;
53 Widget job_options_text;
60 * JobBox-specific fallback resources
62 static String PdmJobBoxFallbackResources[] =
64 "*JobSetup.locationId: JobSetup",
65 "*JobSetup.marginHeight: 5",
66 "*JobSetup.marginWidth: 5",
67 "*JobSetup.verticalSpacing: 5",
68 "*JobTab.compoundString: Job",
69 "*JobTab.labelString: Job"
73 * static function declarations
75 static void PdmJobBoxDelete(PdmSetupBox* me);
76 static void PdmJobBoxCreate(PdmSetupBox* me, Widget parent);
77 static PdmStatus PdmJobBoxVerifyAttr(PdmSetupBox* me, PdmXp* pdm_xp);
78 static void PdmJobBoxGetAttr(PdmSetupBox* me, PdmXp* pdm_xp);
79 static void PdmJobBoxSetAttr(PdmSetupBox* me, PdmXp* pdm_xp);
82 * ------------------------------------------------------------------------
87 * Creates a new PdmJobBox (PdmSetupBox) instance structure.
91 * The new PdmJobBox instance structure.
97 PdmSetupBox* me = (PdmSetupBox*)XtCalloc(1, sizeof(PdmSetupBox));
99 me->delete_proc = PdmJobBoxDelete;
100 me->create_proc = PdmJobBoxCreate;
101 me->verify_attr_proc = PdmJobBoxVerifyAttr;
102 me->get_attr_proc = PdmJobBoxGetAttr;
103 me->set_attr_proc = PdmJobBoxSetAttr;
104 me->fallback_resources = PdmJobBoxFallbackResources;
105 me->fallback_resources_count = XtNumber(PdmJobBoxFallbackResources);
106 me->tab_name = "JobTab";
108 me->subclass_data = (XtPointer)XtCalloc(1, sizeof(PdmJobBoxData));
114 * ------------------------------------------------------------------------
115 * Name: PdmJobBoxDelete
119 * Frees the passed PdmJobBox (PdmSetupBox) instance structure.
127 PdmJobBoxDelete(PdmSetupBox* me)
129 PdmJobBoxData* data = (PdmJobBoxData*)me->subclass_data;
136 * ------------------------------------------------------------------------
137 * Name: PdmJobBoxCreate
141 * Creates a managed PDM Job options setup box widget.
145 * The passed PdmJobBox (PdmSetupBox) instance structure.
149 PdmJobBoxCreate(PdmSetupBox* me, Widget parent)
151 PdmJobBoxData* data = (PdmJobBoxData*)me->subclass_data;
152 me->widget = _DtCreatePDMJobSetup(parent);
153 XtManageChild(me->widget);
155 * get the control widget ids
157 data->notify_toggle = XtNameToWidget(me->widget, "*SendMail.button_0");
158 data->job_name_text = XtNameToWidget(me->widget, "*Banner");
159 data->job_options_text = XtNameToWidget(me->widget, "*Options");
161 * initialize the banner field
163 if(data->job_name_supported)
165 XtVaSetValues(data->job_name_text, XmNvalue, data->job_name, NULL);
169 XtSetSensitive(data->job_name_text, False);
170 XtSetSensitive(XtNameToWidget(me->widget, "*BannerLabel"), False);
173 * initialize the options field
175 if(data->job_options_supported)
177 XtVaSetValues(data->job_options_text,
178 XmNvalue, data->job_options,
183 XtSetSensitive(data->job_options_text, False);
184 XtSetSensitive(XtNameToWidget(me->widget, "*OptionsLabel"), False);
187 * initialize the send mail toggle
189 if(data->notification_profile_supported)
192 set = PDMOID_NOTIFY_EMAIL == data->notification_profile ? True : False;
193 XmToggleButtonGadgetSetState(data->notify_toggle, set, False);
197 XtSetSensitive(data->notify_toggle, False);
203 * ------------------------------------------------------------------------
204 * Name: PdmJobBoxVerifyAttr
212 * PDM_SUCCESS if all of the Printer options selected are OK.
214 * PDM_FAILURE if any of the Printer options are invalid.
218 PdmJobBoxVerifyAttr(PdmSetupBox* me, PdmXp* pdm_xp)
224 * ------------------------------------------------------------------------
225 * Name: PdmJobBoxGetAttr
235 PdmJobBoxGetAttr(PdmSetupBox* me, PdmXp* pdm_xp)
237 PdmJobBoxData* data = (PdmJobBoxData*)me->subclass_data;
238 PdmOidList* job_attrs_supported;
242 * job attributes supported
244 strval = PdmXpGetStringValue(pdm_xp, XPPrinterAttr,
245 pdmoid_att_job_attributes_supported);
246 job_attrs_supported = PdmOidListNew(strval);
250 if(PdmOidListHasOid(job_attrs_supported,
251 pdmoid_att_xp_spooler_command_options))
253 data->job_options_supported = True;
255 PdmXpGetStringValue(pdm_xp, XPJobAttr,
256 pdmoid_att_xp_spooler_command_options);
261 if(PdmOidListHasOid(job_attrs_supported, pdmoid_att_job_name))
263 data->job_name_supported = True;
265 PdmXpGetStringValue(pdm_xp, XPJobAttr, pdmoid_att_job_name);
268 * notification profile (send mail)
270 if(PdmOidListHasOid(job_attrs_supported, pdmoid_att_notification_profile))
272 strval = PdmXpGetStringValue(pdm_xp, XPJobAttr,
273 pdmoid_att_notification_profile);
274 data->notification_profile = PdmOidNotifyParse(strval);
275 if(data->notification_profile != PDMOID_NOTIFY_UNSUPPORTED)
276 data->notification_profile_supported = True;
281 PdmOidListDelete(job_attrs_supported);
285 * ------------------------------------------------------------------------
286 * Name: PdmJobBoxSetAttr
296 PdmJobBoxSetAttr(PdmSetupBox* me, PdmXp* pdm_xp)
298 PdmJobBoxData* data = (PdmJobBoxData*)me->subclass_data;
300 if(data->job_options_supported)
303 XtVaGetValues(data->job_options_text, XmNvalue, &value, NULL);
304 PdmXpSetStringValue(pdm_xp, XPJobAttr,
305 pdmoid_att_xp_spooler_command_options, value);
308 if(data->job_name_supported)
311 XtVaGetValues(data->job_name_text, XmNvalue, &value, NULL);
312 PdmXpSetStringValue(pdm_xp, XPJobAttr, pdmoid_att_job_name, value);
315 if(data->notification_profile_supported)
319 set = XmToggleButtonGadgetGetState(data->notify_toggle);
320 PdmXpSetStringValue(pdm_xp, XPJobAttr,
321 pdmoid_att_notification_profile,
322 PdmOidNotifyString(set
323 ? PDMOID_NOTIFY_EMAIL
324 : PDMOID_NOTIFY_NONE));