question about Windowmanager.toFront()

Posted by Aryeh Weiss on
URL: http://imagej.273.s1.nabble.com/question-about-Windowmanager-toFront-tp5022379.html

I wish to select a window to be the front window in my display.  to do
this I have function called setFrontWin() that checks if the image is
displayed, shows it if needed, and then moves it to the front. I tested
setFrontWin() using the script below, that loops through all of the open
windows and moves them to the front. This works fine.

################################
def setFrontWin(imp):
     win = WindowManager.getWindow(imp.getTitle())
     if win == None:
         imp.show()
         win = WindowManager.getWindow(imp.getTitle())
     win.toFront()
     return win

for w in WindowManager.getImageTitles():
     imp = WindowManager.getImage(w)
     setFrontWin(imp)
     wd=WaitForUserDialog("wait")
     wd.show()
#################################

Below is a script where this does not work. I open an image, make a
copy, and then want the original image
to be displayed in front. However, this does not happen -- the copy is
left in front.
The test script above moves these same images as expected, and I cannot
figure out where they are different.

######################

import os
from os import sys, sep, path, makedirs

def open_image():
     """
     opens an image, returns an imagePlus object and its name in that order
     """
     # Prompt user for the input image file.
     print "open_image begin"
     op = OpenDialog("Choose input image...", "")
     print op.getFileName()

     if op.getFileName() == None:
         sys.exit('User canceled dialog')
     # open selected image and prepare it for analysis

     inputName = op.getFileName()
     inputDirPath = op.getDirectory()
     inputPath = inputDirPath + inputName

     # Strip the suffix off of the input image name
     if inputName[-4] == ".":
         inputPrefix = inputName[:-4]    # assumes that a suffix exists
     else:
         inputPrefix = inputName

     #opens image and returns it.
     inputImp = ImagePlus(inputPath)

     print "open_image finis"
     return inputImp, inputPrefix, inputDirPath

def setFrontWin(imp):
     win = WindowManager.getWindow(imp.getTitle())
     if win == None:
         imp.show()
         win = WindowManager.getWindow(imp.getTitle())
     print win
     win.toFront()
     return win

fullInputImp, inputPrefix, inputDirPath = open_image()
fullInputImp.show()
print fullInputImp, inputPrefix, inputDirPath

inputImp = fullInputImp.duplicate()
inputImp.show()
inputImp.setTitle(inputPrefix+"_copy")
fullInputImp.setTitle(inputPrefix+"_orig")
setFrontWin(fullInputImp)

#############################

For testing purposes I am using auto-import, and these scripts should be
able to run anywhere.

Where have I gone wrong?

Tnx in advance
--aryeh

--
Aryeh Weiss
Faculty of Engineering
Bar Ilan University
Ramat Gan 52900 Israel

Ph:  972-3-5317638
FAX: 972-3-7384051


--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html