I contacted David Harris, author of Pegasus Mail, and here's what he had to say. I am totally lost when it comes to the windowing stuff, I'm not sure what's X and what's Windows. Hopefully that can help a little.. I know the patches thread was really self-explanatory, but was centered on the app being iconified. I don't know that this is really any different, but it just seems more of a 'hiding the taskbar' and not iconifying the app. Or am I just stubborn/thick-headed? (well, I am :) The "Setup Wizard" was something I thought would be good to have, but at this point, I think David would have to remove the actual file open code from Pegasus for it to work.
HTH.
Rick
-----Forwarded Message-----
From: David Harris David.Harris@pmail.gen.nz To: Rick Romero rick@valeoinc.com Subject: Re: Wine developers want Pegasus Mail as a 'Gold' app Date: 22 Nov 2002 10:52:12 +1300
On 21 Nov 2002 at 11:59, Rick Romero wrote:
I apologize for the direct email, I had hoped that a Win-PM list posting would be sufficient, but it unfortunately hasn't been.
Alas, I don't read any of the public lists any more - with more than 300 messages a day to deal with just on the local accounts, I simply don't have time.
But let me get right down the the issues. I was hoping you could give me some insight into the workings of Pegasus Mail so that the Wine guys could easily implement any Windows API's that you might be using, that are missing from Wine.
Please consider my mailbox open at any time of the day for this - both yourself and any Wine developer who would like to contact me directly. Given that I simply don't have the resources to produce my own Linux version of Pegasus Mail at this stage, Wine assumes considerable importance for me, so any collaboration offers clear mutual benefits.
The first, critical issue, has to do with hiding the taskbar entry. The option: "Hide the Pegasus Mail taskbar entry when minimized" which is on by default, causes Wine to not refresh the window after minimizing, or changing virtual desktops. A one-line fix for Wine DOES exist, (Essentially, the flag WS_VISIBLE is not checked within Wine) but I was hoping you could give us a little more info on what flag you may set on that checkbox, or if it's just a flag at all, or a quick couple lines of code..
It's not as clean or tidy as a couple of lines of code - there are some messages involved, but overall it's pretty simple. When Pegasus Mail gets a WM_SIZE message with wParam set to SIZE_MINIMIZED, it simply calls
ShowWindow (hWndFrame, SW_HIDE);
where "hWndFrame" is the main WinPMail frame window. There's a little other cruft in there as well, but nothing that would affect this. Under Windows, the effect of this is to remove the application from the taskbar. That's really all there is to it.
The preferences checkbox merely sets a preference field which is queried later when the application is actually minimized - it has no other immediate function when it is checked.
The second issue is just for user convienance. We've found that Pmail checks for a physical winsock.dll (wsock32.dll for Wine), and if that exists, it enables TCP/IP. What still doesn't occur though, is the Internet Setup Wizard. A fresh install, with wsock32.dll existing, (We assume) should start the Wizard upon startup. That doesn't happen, Pegasus works just fine, but doesn't start the wizard for the new user. Are there any other checks you make to start that wizard up?
Looking through the code, it appears to me that the following conditions need to be true before the Internet Setup Wizard will run:
1: It must be the first time the program has ever run for this user (i.e, there needs to have been no PMAIL.INI file present in the mailbox when the program started).
2: The commandline -Z (flags) switch must not have bit 0 set (i.e, it cannot have "1" as one of its bit members) - this disables TCP/IP altogether.
3: The User's POP3 server, POP3 username and POP3 password must all be zero-length (i.e, not yet defined) internally.
4: The bit member 0x20000 must not be set in the -Z (flags) commandline switch (this bit simply disables the setup wizard).
5: The program must be able to locate WSOCK32.DLL in any of the usual places where LoadLibrary would look (the Windows System directory, the Windows directory, the path, the current directory).
Note that the check in step 5 is unintentionally quite extensive - the file not only has to be present, but Pegasus Mail actually has to be able to open it for reading (this is because I have a general-purpose file existence checking routine that attempts to make sure that the file not only exists, but can be opened, and I use that as part of the process of searching for a DLL).
Aside from (all) that, I can't see anything else in there that might cause the setup wizard not to run.
--
If there were some reliable way that I could determine that I was running under Wine, I would be *happy* to add code to the program that gave it specific behaviours in that environment - all you need to do is tell me what behaviours you need modified, and how I can detect Wine.
Cheers!
-- David --
------------------ David Harris -+- Pegasus Mail ---------------------- Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz Phone: +64 3 453-6880 | Fax: +64 3 453-6612
Real newspaper headlines from U.S. papers: MAN HELD OVER GIANT L.A. BRUSH FIRE