cdesktopenv/cde/programs/dtwm/Print.c

264 lines
7.2 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/*****************************************************************************
*
* File: Print.c
*
* Project: DT
*
* Description: This file contains the function which prints out the
* front panel contents. It is used as a client for this
* purpose.
*
* (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 Unix System Labs, Inc., a subsidiary of Novell, Inc.
*
****************************************************************************/
#include <Dt/DtP.h> /* required for DtDirPaths type */
#include <Dt/DbReader.h> /* required for DtDbPathId type */
#include <Dt/WsmM.h>
#include <Dt/IconFile.h>
#include <Dt/Dt.h>
#include "DataBaseLoad.h"
#include "Parse.h"
#include <stdint.h>
#ifdef __STDC__
const char *szWM_TOOL_CLASS = DtWM_TOOL_CLASS;
#else
char *szWM_TOOL_CLASS = DtWM_TOOL_CLASS;
#endif /* __STDC__ */
String unpost_arrow_image;
String unpost_monitor_arrow_image;
/************************************************************************
*
* CheckOtherMonitorsOn
* Due to a dependancy, CheckOtherMonitorsOn must be defined. This
* is a stubbed procedure that ensures that the procedure is defined.
*
************************************************************************/
Boolean
CheckOtherMonitorsOn(SubpanelData * subpanel_data)
{
return False;
}
/************************************************************************
*
* ToggleDefaultControl
* Due to a dependancy, ToggleDefaultControl must be defined. This
* is a stubbed procedure that ensures that the procedure is defined.
*
************************************************************************/
void
ToggleDefaultControl (ControlData * main_control_data,
SubpanelData * subpanel_data,
ControlData * control_data)
{
}
/************************************************************************
*
* GetIconName
* Get the file name for an icon by extracting the panel resolution
* and then looking up the image name.
*
************************************************************************/
String
GetIconName (String image_name,
unsigned int icon_size)
{
String return_name;
Screen * screen = XtScreen (panel.shell);
/* Get name. */
return_name = _DtGetIconFileName (screen, image_name, NULL, NULL, icon_size);
if (return_name == NULL)
return_name = _DtGetIconFileName (screen, image_name, NULL, NULL,
DtUNSPECIFIED);
if (return_name == NULL)
return_name = XtNewString (image_name);
/* Return value to be freed by caller. */
return (return_name);
}
/************************************************************************
*
* PrintFrontPanelContents
* Using the information from the loading of the database
* print out the contents of the database.
*
************************************************************************/
void
PrintFrontPanelContents(void)
{
BoxData * box_data;
SwitchData * switch_data;
ControlData * control_data, * switch_control_data;
SubpanelData * subpanel_data;
int switch_position = POSITION_FIRST;
int i,j, k;
/* print out the component tree */
printf ("PANEL %s\n", (char *) panel.element_values[0].parsed_value);
for (i = 0; i < panel.box_data_count; i++)
{
box_data = panel.box_data[i];
if (box_data->switch_data != NULL)
{
switch_data = box_data->switch_data;
switch_position = (int) (intptr_t) box_data->switch_data->element_values[SWITCH_POSITION_HINTS].parsed_value;
}
else
switch_data = NULL;
printf (" BOX %s\n",
(char *) box_data->element_values[0].parsed_value);
for (j = 0; j < box_data->control_data_count; j++)
{
control_data = box_data->control_data[j];
if (switch_data != NULL &&
switch_position < (int) (intptr_t) (control_data->element_values[CONTROL_POSITION_HINTS].parsed_value))
{
printf (" SWITCH %s\n",
(char *) switch_data->element_values[0].parsed_value);
switch_position = POSITION_LAST;
for (k = 0; k < switch_data->control_data_count; k++)
{
switch_control_data = switch_data->control_data[k];
printf (" CONTROL %s\n", (char *)
switch_control_data->element_values[0].parsed_value);
}
}
printf (" CONTROL %s\n",
(char *) control_data->element_values[0].parsed_value);
if (control_data->subpanel_data != NULL)
{
subpanel_data = control_data->subpanel_data;
printf(" SUBPANEL %s\n", (char *)
subpanel_data->element_values[0].parsed_value);
for (k = 0; k < subpanel_data->control_data_count; k++)
{
control_data = subpanel_data->control_data[k];
printf (" CONTROL %s\n", (char *)
control_data->element_values[0].parsed_value);
}
}
}
}
}
/************************************************************************
*
* The main program for the fron panel print function.
*
************************************************************************/
int
main (int argc,
char **argv)
{
XtAppContext appContext;
Widget widget;
/* This call is required to have values to pass to DtAppInitialize */
widget = XtAppInitialize( &appContext, "Dtfplist",
NULL, 0, &argc, argv, NULL, NULL, 0);
/* This is required initialization so that FrontPanelReadDatabases()
* procedure complete successfully.
*/
DtAppInitialize( appContext, XtDisplay(widget), widget,
argv[0], (char *)szWM_TOOL_CLASS);
/* Load the database for use in printing. If it is able to load print
* contents of front panel.
*/
DtDbLoad();
panel.app_name = strdup(argv[0]);
if (FrontPanelReadDatabases ())
{
/* Print out the contents of the .fp database */
PrintFrontPanelContents ();
}
else
{
/* NEEDS TO BE LOCALIZED */
printf ("PANEL not found. Error in reading database.\n");
}
}