Setting the Size of Graph Windows Associated with Graph Layout Objects for More WYSIWYG Behavior
hrodstein
// To get WYSIWYG behavior in a page layout, the size of each graph object in the layout
// must match, or at least be close to, the size of the associated graph window.
//
// The SetLayoutGraphsWidthAndHeight procedure allows you to set the size of the graph
// window associated with each layout graph object in a particular layout window.
//
// For example, assume you have a layout containing some number of graph objects
// and you want to set the associated graph windows to be 6.5 inches by 6.5 inches
// without changing the top/left position of the graph windows on the screen.
// You can execute:
// SetLayoutGraphsWidthAndHeight("Layout0", 72*6.5, 72*6.5) // Convert from inches to points
// The factor of 72 converts from inches to points. To convert from centimeters
// to points, use 182.88.
// SetWindowWidthAndHeight(windowName, width, height)
// Sets a windows width and height without moving its top/left corner.
// Width and height are in points.
// Example:
// SetWindowWidthAndHeight("Graph0_PCM", 72*6.54, 72*6.39) // Convert from inches to points
Function SetWindowWidthAndHeight(windowName, width, height)
String windowName // e.g., "Graph0_PCM"
Variable width, height // In points
GetWindow $windowName, wsize
MoveWindow /W=$windowName V_left, V_top, V_left+width, V_top+height
End
// SetLayoutGraphsWidthAndHeight(layoutName, width, height)
// Sets the width and height of the graph windows associated with each
// graph object in a layout.
// Width and height are in points.
// Example:
// SetLayoutGraphsWidthAndHeight("Layout0", 72*6.54, 72*6.39) // Convert from inches to points
Function SetLayoutGraphsWidthAndHeight(layoutName, width, height)
String layoutName // e.g., "Layout0"
Variable width, height // In points
if (WinType(layoutName) != 3)
Abort "Expected name of a layout window"
endif
Variable debug = 1
if (debug)
DoWindow /F $layoutName
endif
Variable numGraphs = 0
String info
Variable objectNumber = 0
do
// Get information about the next object in the layout
String objectIdentifier
sprintf objectIdentifier, "%d", objectNumber
info = LayoutInfo(layoutName, objectIdentifier)
if (strlen(info) == 0)
break
endif
// Get the object's type
String typeStr = StringByKey("TYPE", info)
if (CmpStr(typeStr,"GRAPH") != 0)
objectNumber += 1
continue // We want graphs only
endif
// Get the object's name which will be the graph name
String name = StringByKey("NAME", info)
if (debug)
DoWindow /F $name
endif
// Set the graph window's width and height
SetWindowWidthAndHeight("Graph0_PCM", width, height)
numGraphs += 1
objectNumber += 1
while(1)
Printf "Set the size of %d graphs\r", numGraphs
return 0
End
// must match, or at least be close to, the size of the associated graph window.
//
// The SetLayoutGraphsWidthAndHeight procedure allows you to set the size of the graph
// window associated with each layout graph object in a particular layout window.
//
// For example, assume you have a layout containing some number of graph objects
// and you want to set the associated graph windows to be 6.5 inches by 6.5 inches
// without changing the top/left position of the graph windows on the screen.
// You can execute:
// SetLayoutGraphsWidthAndHeight("Layout0", 72*6.5, 72*6.5) // Convert from inches to points
// The factor of 72 converts from inches to points. To convert from centimeters
// to points, use 182.88.
// SetWindowWidthAndHeight(windowName, width, height)
// Sets a windows width and height without moving its top/left corner.
// Width and height are in points.
// Example:
// SetWindowWidthAndHeight("Graph0_PCM", 72*6.54, 72*6.39) // Convert from inches to points
Function SetWindowWidthAndHeight(windowName, width, height)
String windowName // e.g., "Graph0_PCM"
Variable width, height // In points
GetWindow $windowName, wsize
MoveWindow /W=$windowName V_left, V_top, V_left+width, V_top+height
End
// SetLayoutGraphsWidthAndHeight(layoutName, width, height)
// Sets the width and height of the graph windows associated with each
// graph object in a layout.
// Width and height are in points.
// Example:
// SetLayoutGraphsWidthAndHeight("Layout0", 72*6.54, 72*6.39) // Convert from inches to points
Function SetLayoutGraphsWidthAndHeight(layoutName, width, height)
String layoutName // e.g., "Layout0"
Variable width, height // In points
if (WinType(layoutName) != 3)
Abort "Expected name of a layout window"
endif
Variable debug = 1
if (debug)
DoWindow /F $layoutName
endif
Variable numGraphs = 0
String info
Variable objectNumber = 0
do
// Get information about the next object in the layout
String objectIdentifier
sprintf objectIdentifier, "%d", objectNumber
info = LayoutInfo(layoutName, objectIdentifier)
if (strlen(info) == 0)
break
endif
// Get the object's type
String typeStr = StringByKey("TYPE", info)
if (CmpStr(typeStr,"GRAPH") != 0)
objectNumber += 1
continue // We want graphs only
endif
// Get the object's name which will be the graph name
String name = StringByKey("NAME", info)
if (debug)
DoWindow /F $name
endif
// Set the graph window's width and height
SetWindowWidthAndHeight("Graph0_PCM", width, height)
numGraphs += 1
objectNumber += 1
while(1)
Printf "Set the size of %d graphs\r", numGraphs
return 0
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More