At Wed, 11 Sep 2013 03:25:57 +0200 Enlightenment developer list <enlightenment-devel@lists.sourceforge.net> wrote:
> > On Tue, Sep 10, 2013 at 7:45 PM, Robert Heller <hel...@deepsoft.com> wrote: > > At Tue, 10 Sep 2013 17:51:38 +0100 Michael Blumenkrantz > > <michael.blumenkra...@gmail.com> wrote: > >> On Tue, 10 Sep 2013 12:34:21 -0400 > >> Robert Heller <hel...@deepsoft.com> wrote: > >> > >> > I am in the process of modifying E17 (I want to add so additional > >> > functionality to the file manager). One of the things I need to be able > >> > to do > >> > is have a 'modal' dialog, that is a dislog box that grabs the focus and > >> > causes > >> > the program (the file manager) to wait. I want events to be processed, > >> > but I > >> > want psuedo code like this: > >> > > >> > dialog = make_dialog(...); > >> > show(dialog); > >> > wait_for(dialog); > >> > > >> > The 'wait_for()' call would not return until the OK button or Cancel > >> > (close) > >> > button on the dialog has been clicked. It is not clear how to do this > >> > -- the > >> > documentation does not seem to cover this case (or I can't it in the > >> > documentation). > >> > > >> > Any pointers would be helpful. Thanks in advance. > >> > >> yeahhh you can't do that. > >> > >> what you CAN do is something like the > >> uhh...modules/conf_theme/e_int_config_wallpaper.c dialog does. you set the > >> parent dialog (though make sure you do this AFTER you show both dialogs or > >> it won't work) to set up your modal: the first param is your intended > >> modal, > >> the second is the parent window which is getting blocked. then you can > >> basically just wait for the modal to die and you'll know that there will be > >> no events on the parent. > >> > >> I'll say this, however: we STRONGLY discourage the use of modal dialogs in > >> e. unless you have a really good reason for it, I'm unlikely to accept any > >> patches which introduce modal dialogs. > > > > Yes, I fully understand the 'evils' of modal dialogs, but there are times > > when > > it is the only option. In this case I am interfacing to a library that has a > > callback that wants some input (a passphrase) and I cannot just return > > without > > the passphrase and I don't know (in advance) if the passphrase is even > > needed > > or what the hint for the passphrase is (this info gets passed into the > > callback). And the callback might be called again if the passphrase is > > wrong. > > I may implement this with a subprocess, but then the subprocess itself will > > need to have a modal dialog. I am only interested a *local* type modal > > dialog. > > I did have exactly the same problem with all the stupid ssh library > out there that where never designed to be integrated into a GUI. At > the end, solution where tested in that order : > - Use the library from a thread. > - Implementation of ecore_coroutine, to be able to put a function in > standby and go back to the main loop. > - Use ssh binary and ecore_exe. > - Implement a ssh library that does it right. > > I am now working on the fourth solution, all previous attemps resulted > in failure. Take it as an hint on what you are trying to do and maybe > jump directly to that solution. I have no idea what your library is > doing, but I can tell you, it will be painful ! It was *easy* when I interfaced this library with Tcl/Tk. (Tcl/Tk handles events and event loops differently -- one of the big advanges of a scripting language.) The library is actually libgpgme. I *guess* I could fork a Tcl/Tk script, except the dialog box that will pop up for the passphrase will look totally out-of-place (won't be visually compatible with E). -- Robert Heller -- 978-544-6933 / hel...@deepsoft.com Deepwoods Software -- http://www.deepsoft.com/ () ascii ribbon campaign -- against html e-mail /\ www.asciiribbon.org -- against proprietary attachments ------------------------------------------------------------------------------ How ServiceNow helps IT people transform IT departments: 1. Consolidate legacy IT systems to a single system of record for IT 2. Standardize and globalize service processes across IT 3. Implement zero-touch automation to replace manual, redundant tasks http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel