Commit 7e4da6b7 authored by Ryan Blair's avatar Ryan Blair
Browse files

Imported Upstream version 3.1.9

parents
.DEPENDS
<head>
<title>MEDM Version 3.1.4 Known Problems</title>
</head>
<body>
<h3 style="text-align: center">MEDM 3.1.4: Known Problems</h1>
<li>
Bug report from:
Dr. Andreas Luedeke, SLS Operations Manager, Tel:+41-56-3104002
Andreas.Luedeke@psi.ch, http://people.web.psi.ch/luedeke
<blockquote>
No way to escape a comma (,) in a "Composite File" string
</blockquote>
<blockquote>
Spaces are ignored entirely in the "Composite File" string; cannot be escaped
</blockquote>
<blockquote>
Double-quotes (") cannot be used in any string, not even in a normal text
</blockquote>
</li>
<HR>
Copyright (c) 2002 University of Chicago. All rights reserved.
medm is distributed subject to the following license conditions:
SOFTWARE LICENSE AGREEMENT
Software: Motif Editor and Display Manager for EPICS (MEDM)
1. The "Software", below, refers to medm (in either source code, or
binary form and accompanying documentation). Each licensee is
addressed as "you" or "Licensee."
2. The copyright holders shown above and their third-party licensors
hereby grant Licensee a royalty-free nonexclusive license, subject to
the limitations stated herein and U.S. Government license rights.
3. You may modify and make a copy or copies of the Software for use
within your organization, if you meet the following conditions:
a. Copies in source code must include the copyright notice and this
Software License Agreement.
b. Copies in binary form must include the copyright notice and this
Software License Agreement in the documentation and/or other
materials provided with the copy.
4. You may modify a copy or copies of the Software or any portion of it,
thus forming a work based on the Software, and distribute copies of
such work outside your organization, if you meet all of the following
conditions:
a. Copies in source code must include the copyright notice and this
Software License Agreement;
b. Copies in binary form must include the copyright notice and this
Software License Agreement in the documentation and/or other
materials provided with the copy;
c. Modified copies and works based on the Software must carry
prominent notices stating that you changed specified portions of
the Software.
5. Portions of the Software resulted from work developed under a U.S.
Government contract and are subject to the following license: the
Government is granted for itself and others acting on its behalf a
paid-up, nonexclusive, irrevocable worldwide license in this computer
software to reproduce, prepare derivative works, and perform publicly
and display publicly.
6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY
OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE
UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR
EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME
ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS,
OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE
SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT
THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE
OR THAT ANY ERRORS WILL BE CORRECTED.
7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR
THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT
OF ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE,
INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY
REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF
CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR
OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
POSSIBILITY OF SUCH LOSS OR DAMAGES.
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# This file is distributed subject to a Software License Agreement found
# in the file LICENSE that is included with this distribution.
#*************************************************************************
# Makefile for medm top level
TOP = ../..
include $(TOP)/configure/CONFIG
DIRS = printUtils xc medm
include $(TOP)/configure/RULES_DIRS
medm_DEPEND_DIRS = printUtils xc
The extension distribution file should be unziped and untared
in the extensions/src directory.
core
*.o
medm
.DEPENDS
==============================================
= Motif-based Display Editor/Manager (MEDM) =
==============================================
INTRODUCTION:
MEDM is a composite display editor and manager tool, which provides users
the ability to edit and execute displays from within a single program
context. This saves system resources such as virtual memory, and
improves system throughput.
MEDM is implemented as a main control panel and several "palettes".
The main control panel groups functions according to large scale or
global actions: such as display file selection (open, close, save, print),
edit/execute mode toggling, palette management, and global (and context
sensitive) help.
Three palettes are available: Object, Resource, and Color.
The Object palette controls the edit functions of the display, including
a set of buttons which define what edit actions take place in a display.
These include select (the canonical upper-right-pointing arrow), and
the full suite of display element types.
The Resource palette displays (and allows setting of) the current resources
for a selected object in a display. This includes status information, such
as display type, along with the full set of parameters which apply to
the current object. This palette is visible whenever an object is
selected in a display; when multiple objects are selected, its contents
are not displayed. Within the resource palette, "bundles" can be created
which are aggregations of resource values. These bundles can be applied
by being dragged/dropped onto a (set of) selected object(s) to change their
resource values.
The Color palette displays the current colormap settings. Color editing
is not supported at this time (at least partly to constrain color
selection in display design, to encourage visual consistency of displays).
Current Functionality Checklist (1 Sept. 1993)
==============================================
DM/EDD Display element types supported:
Static/Dynamic types
--------------------
+ rectangle
+ oval
+ arc
+ text
+ line
+ image (GIF)
+ polyline
+ polygon
Monitor types
-------------
+ meter
+ bar
+ indicator
+ text update
+ strip chart
+ cartesian plot
Controller types
----------------
+ choice button
+ message button
+ menu
+ text entry
+ valuator
+ related display
+ shell command
and -
+ Composite (Group) (from Edit menu)
The following display list objects are being parsed:
(will put the grammar into EBNF form sometime)
General rules: order of things in display list
+ file
+ display
+ attributes and static objects ...
+ dynamic attributes and static objects...
+ monitors
+ controllers
+ plots
TOP LEVEL OBJECTS
=================
Static Objects:
---------------
file
display = {object, cmap, clr, bclr}
<<color map>> = {ncolors, dl_color}
<<basic atribute>> = {attr}
<<dynamic attribute>> = {(dyn)attr} # not fully implemented
rectangle = {object}
oval = {object}
arc = {object, begin, path}
text = {object, textix, align, format}
falling line = {object}
rising line = {object}
related display = {object, clr, bclr}
Monitor Objects:
----------------
bar = {object, monitor, label, clrmod, direction, fillmod, pad}
indicator # not yet implemented
meter = {object, monitor, label, clrmod, pad}
strip chart # not fully implemented
text update = {object, monitor, clrmod, format, align, pad}
Controller Objects:
-------------------
choice button = {object, control, label, clrmod, stacking, pad}
(button == choice button)
message button # not yet implemented
menu # not yet implemented
text entry # not yet implemented
valuator = {object, control, label, clrmod, direction, pad}
NESTED OBJECTS
==============
dl_color = {r, g, b, inten}
object = {x, y, width, height}
attr = {clr, style, fill, width}
(dyn)attr = {mod, chan}
display[i] = {label, name, args}
monitor = {rdbk, clr, bclr}
control = {ctrl, clr, bclr}
plotcom # not yet implemented
pen # not yet implemented
OTHER KEYWORDS
==============
clr
bclr
Current State of Affairs
========================
========================
clrmod = {static, alarm, discrete}
static: color = foreground color
alarm: color = alarm color (based on current channel alarm condition)
discrete: implemented as alarm (so does LANL)
label = {none, outline, limits, channel}
none: no label
outline: no label
limits: include low and high limits in display
channel: include low and high limits and channel name
KNOWN BUGS or PROBLEMS in MEDM:
- text, change color, selected box around the text disappear. (vong 4/26/96)
- try to open a --w-r--r- file, nothing happens. (vong 4/30/96)
#
# to use the libMedm.a library for "embedded MEDM", do equivalent to the
# following template.
#
# then link against:
# -lMedm -lANLwidgets -lGraphX -lPrintUtils -lca -lCom -lxrtm \
# -lXm -lXt -lX11 -lm
#
# noting that -lxrtm above is XRT/Graph from KL Group (used for
# the cartesian plots in MEDM) and that applications which use
# embedded MEDM with cartesian plots need to be xrt_auth-ed after
# linking.
#
...
/*
* Mark Anderson, Argonne National Laboratory,
* (U.S. DOE, University of Chicago)
*/
#include "sbc.h"
#include <Xm/ArrowB.h>
#include <Xm/Frame.h>
static String fallbackResources[] = {
"SBC*foreground: black",
"SBC*background: grey70",
"SBC*shadowThickness: 2",
NULL
};
main(int argc, char *argv[])
{
Widget mainShell;
Widget bb, f1, f2, m1, m2, da1, da2, pb;
XtAppContext appContext;
Display *display;
int n;
Arg args[12];
/*
* to get around ca repeater task not running problem (with resultant
* orphaned windows), do ca_task_initialize() right away
*/
SEVCHK(ca_task_initialize(),"\nmain: error in ca_task_initialize");
/*
* initialize the Intrinsics..., create main shell
*/
n = 0;
mainShell = XtAppInitialize(&appContext, CLASS, NULL, 0, &argc, argv,
fallbackResources, args, n);
display = XtDisplay(mainShell);
if (display == NULL) {
XtWarning("cannot open display");
exit(-1);
}
n = 0;
XtSetArg(args[n],XmNwidth,1000); n++;
XtSetArg(args[n],XmNheight,800); n++;
bb = XmCreateBulletinBoard(mainShell,"bb",args,n);
XtManageChild(bb);
/*
* create 2 BB's for MEDM to use, surround with frame for visuals...
* note that the parent widget is given an explicit position, but
* not given an explicit size but that it resizes based upon the
* display's size
*
* - we don't need the frame here at all, but it adds a nice touch
*/
n = 0;
XtSetArg(args[n],XmNx,750); n++;
XtSetArg(args[n],XmNy,50); n++;
XtSetArg(args[n],XmNshadowType,XmSHADOW_ETCHED_OUT); n++;
f1 = XmCreateFrame(bb,"f1",args,n);
n = 0;
XtSetArg(args[n],XmNshadowThickness,0); n++;
XtSetArg(args[n],XmNmarginWidth,0); n++;
XtSetArg(args[n],XmNmarginHeight,0); n++;
m1 = XmCreateBulletinBoard(f1,"m1",args,n);
XtManageChild(m1);
XtManageChild(f1);
n = 0;
XtSetArg(args[n],XmNx,50); n++;
XtSetArg(args[n],XmNy,300); n++;
XtSetArg(args[n],XmNshadowType,XmSHADOW_ETCHED_OUT); n++;
f2 = XmCreateFrame(bb,"f2",args,n);
n = 0;
XtSetArg(args[n],XmNshadowThickness,0); n++;
XtSetArg(args[n],XmNmarginWidth,0); n++;
XtSetArg(args[n],XmNmarginHeight,0); n++;
m2 = XmCreateBulletinBoard(f2,"m2",args,n);
XtManageChild(m2);
XtManageChild(f2);
/***
*** initialize MEDM under this appContext
***/
/* 3rd argument = {"alias" or "scalable" or <xlfd>}
* (oen of widgetDM.h's FONT_ALIASES_STRING or DEFAULT_SCALABLE_DISPLAY_FONT
*/
libMedmInit(appContext,mainShell,"alias");
XtRealizeWidget(mainShell);
/***
*** import MEDM displays
***/
/* 1st argument = display file
* 2nd argument = macro string (like "a=b,c=d,e=f")
* 3rd argument = parent widget
* 4th argument = returned DrawingArea which MEDM created
*/
libMedmImportDisplay("apsStatus.adl",NULL,m1,&da1);
libMedmImportDisplay("beamlineStatus.adl",NULL,m2,&da2);
/* also note that you can create widgets inside MEDM's top level
* (returned) drawing area
*/
n = 0;
XtSetArg(args[n],XmNx,20); n++;
XtSetArg(args[n],XmNy,20); n++;
XtSetArg(args[n],XmNwidth,30); n++;
XtSetArg(args[n],XmNheight,30); n++;
pb = XmCreateArrowButton(da2,"pb",args,n);
XtManageChild(pb);
...
XtAppMainLoop(appContext);
}
This diff is collapsed.
This diff is collapsed.
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# This file is distributed subject to a Software License Agreement found
# in the file LICENSE that is included with this distribution.
#*************************************************************************
#
# Makefile,v 1.11 2010/07/08 18:28:51 jba Exp
#
TOP = ../../..
include $(TOP)/configure/CONFIG
# Motif
USE_MOTIF12=NO
#USE_MOTIF12=YES
# Optimization
ifdef WIN32
#HOST_OPT = NO
else
#HOST_OPT = NO
endif
# Compiler specific
#GCC_WARN_YES = -Wall -Wtraditional -Wmissing-prototypes -Wstrict-prototypes
GCC_WARN_YES = -Wall
# gprof
#USR_CFLAGS += -pg
#USR_LDFLAGS += -pg
# Source browser options
ifeq ($(HOST_OPT),NO)
ifeq ($(ANSI),ACC)
ifeq ($(OS_CLASS),solaris)
USR_CFLAGS += -xsb
endif
endif
endif
#STATIC_BUILD = YES
CMPLR = STRICT
# Purify
ifeq ($(OS_CLASS),solaris)
#PURIFY=YES
#DEBUGCMD = purify $(PURIFY_FLAGS)
PURIFY_FLAGS = -first-only -chain-length=26
#PURIFY_FLAGS = -first-only -chain-length=26 -max_threads=256
#PURIFY_FLAGS = -first-only -chain-length=26 -always-use-cache-dir -cache-dir=/tmp/purifycache
#PURIFY_FLAGS = -first-only -chain-length=26 -enable-new-cache-scheme
#PURIFY_FLAGS = -first-only -chain-length=26 -enable-new-cache-scheme -always-use-cache-dir -cache-dir=/tmp/purifycache
# Put the cache files in the appropriate bin directory
PURIFY_FLAGS += -always-use-cache-dir -cache-dir=$(shell $(PERL) $(TOP)/config/fullPathName.pl .)
#PURIFY_FLAGS += -force-rebuild=no
# Seems to solve problem with duplicate libc, libdl, libnsl, libsocket
PURIFY_FLAGS += -follow-terminal-symlinks
endif
# Web browser options
#USR_CFLAGS += -DNETSCAPEPATH="\"mozilla\""
# Use to test Xrt/Graph 2.4, Otherwise should come from CONFIG
#XRTGRAPH=/opt/local/xrtgraph2.4.0
#XRTGRAPH_EXTENSIONS =
# Use to test SciPlot or JPT, otherwise should come from CONFIG
# Set the one you want and reset any that come from CONFIG
#XRTGRAPH =
#SCIPLOT = YES
#JPT = YES
# Use to test CDEV, Otherwise should come from CONFIG
#MEDM_CDEV = YES
# Set up for Xrt/Graph
ifdef XRTGRAPH
SCIPLOT = # Don't allow more than one plot package
JPT = # Don't allow more than one plot package
#USR_CFLAGS += -I$(XRTGRAPH)/include/Xm -D __COLOR_RULE_H__
USR_CFLAGS += -DXRTGRAPH
USR_CFLAGS += -I$(XRTGRAPH)/include/Xm
USR_LIBS += xrtm
xrtm_DIR = $(XRTGRAPH)/lib
# The following sets up for the XRT/graph 3.0 extensions
ifdef XRTGRAPH_EXTENSIONS
ifeq ($(XRTGRAPH_EXTENSIONS),YES)
USR_CFLAGS += -DXRT_EXTENSIONS
# USR_LIBS += xrtmprop xrtfield xrttable xrtgear Xpm Xext
# XRT 4.0
USR_LIBS += xrtmprop xrtfield xrttable xrtgear pdsutil Xpm
xrtmprop_DIR = $(XRTGRAPH)/lib
xrtfield_DIR = $(XRTGRAPH)/lib
xrttable_DIR = $(XRTGRAPH)/lib
xrtgear_DIR = $(XRTGRAPH)/lib
pdsutil_DIR = $(XRTGRAPH)/lib
# Xpm_DIR = $(X11_LIB)
Xpm_DIR = $(XRTGRAPH)/lib
endif
endif
SRCS += medmCartesianPlot.c
SRCS += medmXrtGraph.c
endif #ifdef XRTGRAPH
# Set up for SciPLot
ifdef SCIPLOT
JPT = # Don't allow more than one plot package
USR_CFLAGS += -DSCIPLOT -DMOTIF
SRCS += medmCartesianPlot.c
SRCS += medmSciPlot.c
SRCS += SciPlot.c
endif
# Set up for JPT
ifdef JPT
JPT_INC = ../../../jpt
USR_CFLAGS += -DJPT -I$(JPT_INC)
USR_LIBS += Jpt
# USR_LDFLAGS += -L$(JPT_LIB)
SRCS += medmCartesianPlot.c
SRCS += medmJpt.c
endif
USR_CFLAGS += -DEDITRES
PROD_HOST = medm
USR_INCLUDES = -I../../printUtils -I../../xc -I$(MOTIF_INC) -I$(X11_INC)
PROD_LIBS = ANLwidgets PrintUtils
ANLwidgets_DIR = $(INSTALL_LIB)
PrintUtils_DIR = $(INSTALL_LIB)
# Setup for either CA or CDEV
ifdef MEDM_CDEV
cdev_DIR = $(CDEVLIB)
PROD_LIBS += cdev
SRCS += medmCdev.cc
SRCS += medmCdevUtils.c
USR_LDFLAGS += -R$(CDEVLIB) -L$(CDEVLIB)
USR_INCLUDES += -I. -I.. -I$(CDEV)/include
# USR_INCLUDES += -I/usr/user1/chen/local/Xmu/include
USR_CFLAGS += -DMEDM_CDEV
USR_CCFLAGS += $(USR_CFLAGS)
SRCS += medmCdev.cc
SRCS += medmCdevUtils.c
else
ca_DIR = $(EPICS_BASE_LIB)
Com_DIR = $(EPICS_BASE_LIB)
PROD_LIBS += ca Com
SRCS += medmCA.c
endif
USR_LIBS_DEFAULT = Xm Xt Xmu X11 Xext
ifeq ($(USE_MOTIF12),YES)
USR_CFLAGS_solaris += -DMOTIF12_HEADERS
USR_LIBS_solaris = Xm12 Xt Xmu X11 Xext
Xm12_DIR = $(MOTIF_LIB)
endif
USR_LIBS_Linux = Xm Xt Xp Xmu X11 Xext
USR_LIBS_cygwin32 = Xm Xt Xmu X11 Xext SM ICE
WIN32_RUNTIME=MD
USR_CFLAGS_WIN32 += /DWIN32 /D_WINDOWS
USR_LDFLAGS_WIN32 += /SUBSYSTEM:WINDOWS
USR_LIBS_WIN32 += $(EXCEED_XLIBS)
USR_CFLAGS_WIN32 += $(EXCEED_CFLAGS)
Xm_DIR = $(MOTIF_LIB)
Xt_DIR = $(X11_LIB)
X11_DIR = $(X11_LIB)
Xmu_DIR = $(X11_LIB)
Xp_DIR = $(X11_LIB)
Xext_DIR = $(X11_LIB)
SRCS += actions.c
SRCS += bubbleHelp.c
SRCS += callbacks.c