|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 7385 (0x1cd9)
Types: TextFile
Names: »filePanel.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/Toolkit/Xr/usr/contrib/RB/filePanel.c«
/*
* $Source: /u1/Xr/usr/contrib/RB/RCS/filePanel.c,v $
* $Header: filePanel.c,v 1.1 86/12/17 08:53:23 swick Exp $
*/
#ifndef lint
static char *rcsid_filePanel_c = "$Header: filePanel.c,v 1.1 86/12/17 08:53:23 swick Exp $";
#endif lint
static char rcsid[] = "$Header: filePanel.c,v 1.1 86/12/17 08:53:23 swick Exp $";
/*************************************<+>*************************************
*****************************************************************************
**
** File: filePanel.c
**
** Project: X-ray Toolbox
**
** Description: The file the initialization and handling code for
** read and write panels.
**
** *******************************************************************
** * (c) Copyright Hewlett-Packard Company, 1986. All rights are *
** * reserved. Copying or other reproduction of this program except *
** * for archival purposes is prohibited without the prior written *
** * consent of Hewlett-Packard Company. *
** *******************************************************************
**
**
** ------------------------ MODIFICATION RECORD ------------------------
*
* $Log: filePanel.c,v $
* Revision 1.1 86/12/17 08:53:23 swick
* Initial revision
*
*
*****************************************************************************
*************************************<+>*************************************/
#include <X/Xlib.h>
#include <Xr/defs.h>
#include <Xr/types.h>
#include <Xr/keycode.h>
#include "filePanel.h"
FilePanel (rasterData, message, data)
xrPixmap * rasterData;
INT32 message;
INT8 data;
{
/*
* Set up a switch to handle the two messages FilePanel understand.
*/
switch (message)
{
case MSG_NEW: /* Create the two panels */
{
/*
* Size all of the editors.
*/
XrTitleBar (NULL, MSG_SIZE, &readTBInfo);
XrPushButton (NULL, MSG_SIZE, &readPBInfo);
XrTextEdit (NULL, MSG_SIZE, &panelTEInfo);
XrTitleBar (NULL, MSG_SIZE, &writeTBInfo);
XrPushButton (NULL, MSG_SIZE, &writePBInfo);
/*
* Offset the editors to the correct locations.
*/
panelTEInfo.editorRect.x = 10;
panelTEInfo.editorRect.y = readTBInfo.editorRect.height + 30;
readPBInfo.editorRect.x =
panelTEInfo.editorRect.x + panelTEInfo.editorRect.width + 30;
readPBInfo.editorRect.y = readTBInfo.editorRect.height + 10;
writePBInfo.editorRect.x =
panelTEInfo.editorRect.x + panelTEInfo.editorRect.width + 30;
writePBInfo.editorRect.y = readTBInfo.editorRect.height + 10;
/*
* Get and set a panel context so that the panels will
* be created hidden. Get the size of the panels, and
* set the title bar widths to the sizes.
*/
XrPanel (NULL, MSG_GETPANELCONTEXT, &panelContext);
panelContext.showFlag = FALSE;
XrPanel (NULL, MSG_SIZE, &readInfo);
XrPanel (NULL, MSG_SIZE, &writeInfo);
readTBInfo.editorRect.width = readInfo.panelSize.width;
writeTBInfo.editorRect.width = writeInfo.panelSize.width;
/*
* Set the panel structure so that the panels will be created
* relative to the root window and create the panels.
*/
readInfo.relativeTo = RootWindow;
writeInfo.relativeTo = RootWindow;
readPanel = XrPanel (NULL, MSG_NEW, &readInfo);
writePanel = XrPanel (NULL, MSG_NEW, &writeInfo);
}
break;
case MSG_EDIT:
{
POINT movePt;
xrPanel * panel;
xrPanelField * panelFields;
xrEvent panelInput;
XEvent xInput;
xrEvent * xrInput;
xrPixmap rData;
int i;
/*
* Set up the panel to be used.
*/
if (data == (INT8) XrWRITE)
{
panel = writePanel;
panelFields = &writeFields[0];
}
else
{
panel = readPanel;
panelFields = &readFields[0];
}
/*
* Position and show the panel.
*/
CenterWindow (&panel -> panelZeroRect, &movePt);
XrPanel (panel, MSG_MOVE, &movePt);
XrPanel (panel, MSG_SHOW, NULL);
/*
* Make the text edit field the current editor and
* set up the loop to call the panel manager.
*/
XrPanel (panel, MSG_CURRENTEDITOR, panelFields[1].editorInstance);
while (1)
{
XrPanel (panel, MSG_EDIT, &panelInput);
XrInput (0, MSG_NONBLKHOTREAD, &xInput);
xrInput = (xrEvent *) &xInput;
if (panelInput.inputCode == XrPANELEDITOR)
{
/*
* Check for a select out of the Text Editor.
*/
if (panelInput.value3 == 1 && xrInput -> value2 == XrSELECT)
XrPanel (panel, MSG_CURRENTEDITOR, NULL);
/*
* Check for a return key in the Text Editor or
* either of the button presses.
*/
else if ((panelInput.value3 == 1 &&
xrInput -> value1 == XrTEDIT_BREAK &&
xrInput -> value3 == (RETURN_KEY | K_s)) ||
panelInput.value3 == 2)
{
if (panelInput.value3 == 1)
xrInput -> value2 = 0;
if (xrInput -> value2 == 0)
{
/*
* Strip spaces off the end of the line.
*/
for (i = strlen (fileName); i > 0; i--)
if (fileName [i - 1] != ' ')
{
fileName[i] = NULL;
break;
}
if (data == (INT8) XrWRITE)
{
WriteFile (fileName, rasterData);
XrPanel (panel, MSG_HIDE, NULL);
return (TRUE);
}
else
{
if (GetFileInfo (fileName, &rData))
{
RasterInit(rData.width, rData.height, rData.depth);
ReadFile (fileName, rasterData);
XrPanel (panel, MSG_HIDE, NULL);
MainWindowInit();
return (TRUE);
}
XrPanel (panel, MSG_CURRENTEDITOR,
panelFields[1].editorInstance);
}
}
else
{
XrPanel (panel, MSG_HIDE, NULL);
return (FALSE);
}
}
}
else if (panelInput.inputCode == XrPANELINPUT)
XrPanel (panel, MSG_CURRENTEDITOR,
panelFields[1].editorInstance);
}
}
break;
}
}