#!../mofe --f

set pix {
/* XPM */
static char * ghostview_xpm[] = {
"48 48 6 1",
" 	s None	c None	g None		m None",
".	c black		g black		m black",
"X	c #FEFEFEFEEFEF	g #FEFEFEFEEFEF m white",
"o	c white		g white		m white",
"O	c red		g gray60	m black",
"+	c blue		g gray70	m black",
"                                                ",
"                                                ",
"                     .........................  ",
"                     .XXXXXXXXXXXXXXXXXXXXXXX.  ",
"                     .XX..XXX.XXXX.X...XX.XXX.  ",
"                   .........................X.  ",
"                  .......XXXXXXXXXXXXXXXXXXXX.  ",
"                 ..ooooo..X.X........X..XXXXX.  ",
"                ..ooooooo..XXXXXXXXXXXXXXXXXX.  ",
"               ..ooooooooo...X.XX.XXX.......X.  ",
"               ..ooOoooOoo..XXXXXXXXXXXXXXXXX.  ",
"              ..ooOOOoOOOo..XXXXXXXXXXXXXXXXX.  ",
"              ..ooOOOoOOOo..X...XX.X.X..XXXXX.  ",
"              ..oooOoooOoo..XXXXXXXXXXXXXXXXX.  ",
"              .ooooooooooo...XXXXXXXXXXXXXXXX.  ",
"             ..oooooooooooo.....X.XX.XX.X.XXX.  ",
"             ..oooooooooooo..XXXXXXXXXXXXXXXX.  ",
"             ..ooo++ooo++oo.......XXX..X.X.XX.  ",
"            ...ooooo+++oooo..XXXXXXXXXXXXXXXX.  ",
"            ..ooooooooooooo..X...........XXXX.  ",
"            ..ooooooooooooo..XXXXXXXXXXXXXXXX.  ",
"            ..ooooooooooooo..XXXXXXXXXXXXXXXX.  ",
"            ..ooooooooooooo.....XX.XX.X...XXX.  ",
"           ...oooooooooooooo..XXXXXXXXXXXXXXX.  ",
"           ..ooooooooooooooo..XXXXXXXXXXXXXXX.  ",
"           ..ooooooooooooooo..X...X.X.X.X..XX.  ",
"           ..ooooooooooooooo...XXXXXXXXXXXXXX.  ",
"           ..oooooooooooooooo..XXXXXXX.XXXXXX.  ",
"           ..oooooooooooooooo..XXXXXXXXXXXXXX.  ",
"           ..oooooooooooooooo...XX..X.XX.XX.X.  ",
"          ..oooooooooooooooooo..XXXXXXXXXXXXX.  ",
"         ...oooooooooooooooooo...XXXXXXXXXXXX.  ",
"       ....oooo.oooo.oooo.ooooo...XX..XX.XX.X.  ",
"      ...oooooo.oooo.ooooo.ooooo...XXXXXXXXXX.  ",
"     ...ooooooo.oooo.ooooo..ooooo.....XXXXXXX.  ",
"     ...ooooooo.oooo..ooooo..ooooo.......XX.X.  ",
"      ...ooooo.oooooo.oooooo..ooooooo....XXXX.  ",
"       ...ooo..ooooooo.oooooo.ooooooooo...XXX.  ",
"        ....o.oooooooo..oooooo..oooooooo..XXX.  ",
"          ....ooooooooo.ooooooo..ooooooo...XX.  ",
"            ....ooooooo.ooooooooo....oooo..XX.  ",
"             .....ooooo..ooooooooooo..oo...XX.  ",
"                ......oo.oooooooooooo..o..XXX.  ",
"                  ........ooooooooooo.....XXX.  ",
"                    ..................XXXXXXX.  ",
"                     .........................  ",
"                                                ",
"                                                "};
}

set xpmFile unknown1.xpm
set xbmFile xlogo64

mergeResources topLevel \
    *XmPushButton.labelType PIXMAP \
    *XmPushButton.activateCallback {puts stderr "i am %w"} \
    *b01.labelPixmap test1 \
    *b02.labelPixmap test2 \
    *b03.labelPixmap test3 \
    *b10.alignment ALIGNMENT_BEGINNING \
    *b11.alignment ALIGNMENT_BEGINNING \
    *b12*alignment ALIGNMENT_CENTER    \
    *b13*alignment ALIGNMENT_CENTER    \
    *b14.alignment ALIGNMENT_END       \
    *b15.alignment ALIGNMENT_END       

XmRowColumn rc topLevel numColumns 3 orientation vertical packing pack_column

XmInstallImage topLevel $pix test1
XmInstallImage topLevel $xpmFile test2
XmInstallImage topLevel $xbmFile test3

set "case(01 immediate pixmap, imagecache, resource)"     {}
set "case(02 pixmap file, imagecache, resource)"          {}
set "case(03 bitmap file, imagecache, resource)"          {}
set "case(04 immediate pixmap, imagecache)"               test1
set "case(05 pixmap file, imagecache)"                    test2
set "case(06 bitmap file, imagecache)"                    test3
set "case(07 immediate pixmap)"                           $pix
set "case(08 pixmap file)"                                $xpmFile
set "case(09 bitmap file)"                                $xbmFile
set "case(10 changePixmap, immediate pixmap, BEGINNING)"  \\$pix
set "case(11 changePixmap, pixmap file, BEGINNING)"       \\$xpmFile
set "case(12 changePixmap, immediate pixmap, CENTER)"     \\$pix
set "case(13 changePixmap, pixmap file, CENTER)"          \\$xpmFile
set "case(14 changePixmap, immediate pixmap, END)"        \\$pix
set "case(15 changePixmap, pixmap file, END)"             \\$xpmFile
### the following cases are not implemented
#set "case(16 changePixmap, immediate pixmap, imagecache)" \\test1
#set "case(17 changePixmap, pixmap, imagecache)"           \\test2
#set "case(18 changePixmap, bitmap, imagecache)"           \\test3

#missing changePixmap over pixmap cache

set delayed ""
foreach i [lsort [array names case]] {
  set res $case($i)
  set c [string range $i 0 1]
  XmFrame f$c rc
  XmRowColumn rc$c f$c 
  XmLabel l$c rc$c labelString $i
  if [string compare "" $res] {
    if [string compare "\\" [string range $res 0 0]] {
      XmPushButton b$c rc$c  labelPixmap $res
    } else {
      XmPushButton b$c rc$c
      set alignment [getApplicationResource b$c alignment String]
      if [string compare "" $alignment] {
	append delayed "sV b$c alignment $alignment\n"
      }
      append delayed "changePixmap b$c labelPixmap \
	  {[string range $res 1 end]}\n"
    }
  } else {
    XmPushButton b$c rc$c
  }
}
realize
if [string compare "" $delayed] {
  eval $delayed
} else {
  puts stderr "NOTHING delayed"
}
#changePixmap l2 labelPixmap $pix
