RE: Single Instance Dialog Issue

2016-10-18 Thread Chip Orange via Scripting
Hi David,

I believe the issue involves whether this is a "modal" or "modeless" dialog.
I don't think I ever covered this in one of my classes (sorry about that
chief!).

I believe the default is "modal", which means your app stops all processing
when it hits the use of the Dialog() function, and picks back up when the
dialog is closed.  This isn't quite true, but the sub/function which uses
the Dialog() command does indeed stop processing at this line until the
dialog is closed for modal dialogs.

More important to you, when using a modal dialog, no value is returned by
the Dialog() function to go into your variable "MyDialog" because processing
has stopped; so it's always set to "nothing", and when you test on it later,
even when the dialog is open, this is what it will contain.


To make this work the way you want, I think you just need to go into the XML
properties for the dialog and set "modal" to "no" (making it a modeless
dialog), and remove the line at the end of the sub which sets MyDialog back
to nothing (actually move it into your dialog handler, when the dialog is
closing, so the global variable doesn't get set back to nothing until the
dialog is closed).



Below is the documentation for the modal property, but I believe it may be
incorrect when it says that "no" is the default value.

Chip




modal
 Specifies whether the dialog must be closed before interacting with the
calling application (i.e. a modal dialog) or whether the application can
receive user input even when the dialog is open (i.e. a modeless dialog).
Available options: Yes, No (default).


-Original Message-
From: Scripting
[mailto:scripting-bounces+lists3717=comcast@lists.window-eyes.com] On
Behalf Of David via Scripting
Sent: Friday, October 07, 2016 9:12 PM
To: GWScripting
Subject: Single Instance Dialog Issue

Got a challenge here. I want to make sure only ONE instance of my dialog 
will be open, at any given time. The user will open the dialog with the 
Hotkey Win-c. But even if he tabs away from the dialog, and then once 
again hit Win-C, he should land in the already open dialog; not in a 
brand new window. Just like, when you hit the Ctrl-Backslash, you always 
land in one and same instance of the Window-Eyes Controlpanel.

Below you will find the cut-out of my code, that has to do with the 
opening of the dialog. In my Opening sub, I do the  lines:
 MyDialog.window.Activate
 MyDialog.window.Focus
But even this does not seem to fix my issue.

I am all learning ears, to any feedback you may have, or any good 
practice that you may want to share on this part.

Thanks to all,


---Snip-it:
Sub HK1(myKeyId)
 'This routine is called when the hotkey Alt-Windows-C is pressed.
 If Keyboard.KeyDescriberActive Then
 Speak myStrings(myKeyId & "_Description")
 Else
 'Main routine functionality goes here
 Queue "OpenMyAppWin"
 End IfKeyboard.KeyDescriberActive.
End Sub 'HK1.

Sub OpenMyAppWin()
 Dim MyDialog: Set MyDialog = Nothing
' Bring up the dialog:
 If MyDialog Is Nothing Then
 Set MyDialog = Dialog( myXMLFile, "MyAppMainDialog", 
"EHMainDialog")
 Else
 MyDialog.window.Activate
 MyDialog.window.Focus
 End If 'MyDialog Is Nothing.
' Room Cleaning:
 Set MyDialog = Nothing
End Sub 'OpenMyAppWin.

Function EHMainDialog( dObj, dEvent, dId, dControl)
Blah-blah-blah...
End Function 'EHMainDialog.
---End Of Snip.


-- 
David

___
Any views or opinions presented in this email are solely those of the author
and do not necessarily represent those of Ai Squared.

For membership options, visit
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/lists3717
%40comcast.net.
For subscription options, visit
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com

___
Any views or opinions presented in this email are solely those of the author 
and do not necessarily represent those of Ai Squared.

For membership options, visit 
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/archive%40mail-archive.com.
For subscription options, visit 
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at 
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com


Re: Single Instance Dialog Issue

2016-10-08 Thread LB via Scripting


David,
Make your variables global so the assignment is not local then,
When opening up the dialog and it still exists, keep it and place focus 
where you want focus inside that window, or object inside...
Then in the original setting up the dialog and when closing that window, 
have it set it to Nothing!
Example:
'Global:
 Dim MyDialog: Set MyDialog = Nothing
Sub HK1(myKeyId)
 'This routine is called when the hotkey Alt-Windows-C is pressed.
 If Keyboard.KeyDescriberActive Then
 Speak myStrings(myKeyId & "_Description")
 Else
 'Main routine functionality goes here
 If MyDialog Is Nothing Then
 Queue "OpenMyAppWin"
 Else
 MyDialog.window.Focus
 End IfKeyboard.KeyDescriberActive.
End Sub 'HK1.

Sent: Friday, October 07, 2016 9:11 PM
Subject: Single Instance Dialog Issue


Got a challenge here. I want to make sure only ONE instance of my dialog 
will be open, at any given time. The user will open the dialog with the 
Hotkey Win-c. But even if he tabs away from the dialog, and then once 
again hit Win-C, he should land in the already open dialog; not in a 
brand new window. Just like, when you hit the Ctrl-Backslash, you always 
land in one and same instance of the Window-Eyes Controlpanel.

Below you will find the cut-out of my code, that has to do with the 
opening of the dialog. In my Opening sub, I do the  lines:
 MyDialog.window.Activate
 MyDialog.window.Focus
But even this does not seem to fix my issue.

I am all learning ears, to any feedback you may have, or any good 
practice that you may want to share on this part.

Thanks to all,


---Snip-it:
Sub HK1(myKeyId)
 'This routine is called when the hotkey Alt-Windows-C is pressed.
 If Keyboard.KeyDescriberActive Then
 Speak myStrings(myKeyId & "_Description")
 Else
 'Main routine functionality goes here
 Queue "OpenMyAppWin"
 End IfKeyboard.KeyDescriberActive.
End Sub 'HK1.

Sub OpenMyAppWin()
 Dim MyDialog: Set MyDialog = Nothing
' Bring up the dialog:
 If MyDialog Is Nothing Then
 Set MyDialog = Dialog( myXMLFile, "MyAppMainDialog", 
"EHMainDialog")
 Else
 MyDialog.window.Activate
 MyDialog.window.Focus
 End If 'MyDialog Is Nothing.
' Room Cleaning:
 Set MyDialog = Nothing
End Sub 'OpenMyAppWin.

Function EHMainDialog( dObj, dEvent, dId, dControl)
Blah-blah-blah...
End Function 'EHMainDialog.
---End Of Snip.


-- 
David

___
Any views or opinions presented in this email are solely those of the author 
and do not necessarily represent those of Ai Squared.

For membership options, visit 
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/lab4me%40fltg.net.
For subscription options, visit 
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at 
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

___
Any views or opinions presented in this email are solely those of the author 
and do not necessarily represent those of Ai Squared.

For membership options, visit 
http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/archive%40mail-archive.com.
For subscription options, visit 
http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com
List archives can be found at 
http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com