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 libraries 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 = NULL;
239 const char* strval = NULL;
242 * job attributes supported
244 #if 0 && defined(PRINTING_SUPPORTED)
245 strval = PdmXpGetStringValue(pdm_xp, XPPrinterAttr,
246 pdmoid_att_job_attributes_supported);
247 #endif /* PRINTING_SUPPORTED */
248 job_attrs_supported = PdmOidListNew(strval);
252 if(PdmOidListHasOid(job_attrs_supported,
253 pdmoid_att_xp_spooler_command_options))
255 data->job_options_supported = True;
256 #if 0 && defined(PRINTING_SUPPORTED)
258 PdmXpGetStringValue(pdm_xp, XPJobAttr,
259 pdmoid_att_xp_spooler_command_options);
260 #endif /* PRINTING_SUPPORTED */
265 if(PdmOidListHasOid(job_attrs_supported, pdmoid_att_job_name))
267 data->job_name_supported = True;
268 #if 0 && defined(PRINTING_SUPPORTED)
270 PdmXpGetStringValue(pdm_xp, XPJobAttr, pdmoid_att_job_name);
271 #endif /* PRINTING_SUPPORTED */
274 * notification profile (send mail)
276 if(PdmOidListHasOid(job_attrs_supported, pdmoid_att_notification_profile))
278 #if 0 && defined(PRINTING_SUPPORTED)
279 strval = PdmXpGetStringValue(pdm_xp, XPJobAttr,
280 pdmoid_att_notification_profile);
281 #endif /* PRINTING_SUPPORTED */
282 data->notification_profile = PdmOidNotifyParse(strval);
283 if(data->notification_profile != PDMOID_NOTIFY_UNSUPPORTED)
284 data->notification_profile_supported = True;
289 PdmOidListDelete(job_attrs_supported);
293 * ------------------------------------------------------------------------
294 * Name: PdmJobBoxSetAttr
304 PdmJobBoxSetAttr(PdmSetupBox* me, PdmXp* pdm_xp)
306 PdmJobBoxData* data = (PdmJobBoxData*)me->subclass_data;
308 if(data->job_options_supported)
311 XtVaGetValues(data->job_options_text, XmNvalue, &value, NULL);
312 #if 0 && defined(PRINTING_SUPPORTED)
313 PdmXpSetStringValue(pdm_xp, XPJobAttr,
314 pdmoid_att_xp_spooler_command_options, value);
315 #endif /* PRINTING_SUPPORTED */
318 if(data->job_name_supported)
321 XtVaGetValues(data->job_name_text, XmNvalue, &value, NULL);
322 #if 0 && defined(PRINTING_SUPPORTED)
323 PdmXpSetStringValue(pdm_xp, XPJobAttr, pdmoid_att_job_name, value);
324 #endif /* PRINTING_SUPPORTED */
327 if(data->notification_profile_supported)
331 set = XmToggleButtonGadgetGetState(data->notify_toggle);
332 #if 0 && defined(PRINTING_SUPPORTED)
333 PdmXpSetStringValue(pdm_xp, XPJobAttr,
334 pdmoid_att_notification_profile,
335 PdmOidNotifyString(set
336 ? PDMOID_NOTIFY_EMAIL
337 : PDMOID_NOTIFY_NONE));
338 #endif /* PRINTING_SUPPORTED */