1. RE: wxEuphoria

> Downloaded latest lib from your site - works like a charm now.
> 
> Good job.

Thanks.

> Can you post on your web site to do's - I would like to get involved
> (in my meagre capacity) if that's ok with you.
> 
> Just looking at the code to see if I can make the libs cross
> platform without change.
> 
> ex25.exw causes machine level exception - investigating.

I'll see what I can do about the todos.  For now, take a look in the 
docs under TODO:
Controls 	

    * wxWizard 

Database 	

    * wxDB
    * wxDBConnectInf
    * wxDBTable 

Dialogs 	

Files 	

    * wxDir
    * Various functions not inside classes (copy, delete, etc) 

Networking 	

    * wxFTP
    * wxHTTP
    * wxIPV4Address
    * wxSocket
    * wxSocketClient
    * wxSocketInputStream
    * wxSocketModule
    * wxSocketOutputStream
    * wxSocketServer
    * wxSocketState
    * wxSocketStream
    * wxURL 

Printing 	

    * wxPrinter
    * wxPrinterDC 


> wxIDE.ew won't load the database (have installed required libs)
> - investigating.

OK, let me know.  It's not a big deal, since it's stuff for the GUI
editor, which really doesn't work yet.

Matt Lewis

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com

new topic     » topic index » view message » categorize

2. RE: wxEuphoria

Kenneth Rhodes wrote:
> 
> 
> Congratulations Matt!  :) :) :)
> 
> I can't help but feel that the release of a truly
> cross platform GUI library is a momentous event.
> 
> If only Derek, Judith, et al would drop win32 for wxEu
> - would you?
> 
> Once again, Matt, thanks for pulling it off!
> 

Thanks.  All feedback is welcome and encouraged.  And especially please 
let me know which classes you'd like me to focus on next (or wrap them 
yourself and send it to me :), otherwise you're stuck waiting until *I* 
find the class interesting. :)

Matt

PS  I still use win32lib a lot...

new topic     » goto parent     » topic index » view message » categorize

3. RE: wxEuphoria

It should have been in the first dll file.  I'll put it up there.

Matt Lewis


> -----Original Message-----
> From: pampeano at rocketmail.com [mailto:pampeano at rocketmail.com]
> Subject: Re: wxEuphoria
> 
> 
> 
> Hi Matt,
>    Your demo works fine on Win XP. Nice job.
>    When u use Pat's splitter you have to include "split.dat" file
> generated by the splitter, because it contains info to unsplit the
> file.
> 
> Best Regards,
>    Guillermo Bonvehi
>    AKA: KNiXEUR - Caballero Rojo
> 
> --- Matthew Lewis <matthewwalkerlewis at YAHOO.COM> wrote:
> > 
> > 
> > I finally got wxWindows (v2.29)--as a DLL--working with Euphoria. 
> > I've
> > ported the fractal demo that comes with the wxWindows source.  It's
> > up on my
> > page:
> > 
> > http://www14.brinkster.com/matthewlewis/projects.html
> > 
> > There are 3 files:
> > wxEuphoria.zip  -- My source code
> > wx22_9d1.zip    -- DLL file 1
> > wx22_9d2.zip    -- DLL file 2
> > 
> > Unfortunately, Brinkster doesn't allow files greater than 1Mb (at
> > least for
> > us cheapskates with the free accounts).  Also, my bandwidth is
> > limited to
> > 16Mb per day, so if you experience trouble, it may be that the limit
> > has
> > been reached.  I split the DLL using PatRat's splitter utility.  In
> > order to
> > get the DLL assembled, you'll need to unzip everything into a
> > directory, and
> > then run install.ex.
> > 
> > I've included a copy of fptr.e with the code.  This new copy is
> > required in
> > case others have the version that's been with EuCOM.  I've 
> cleaned it
> > up a
> > bit and added some things, made it easier to use.  I'll probably be
> > releasing it on its own here, soon.
> > 
> > But now I need to make some decisions, and ask for some 
> help. :)  Jim
> > Brown,
> > I think you volunteered for helping on the port to Linux, right. :) 
> > Beyond
> > that, there are a lot of things to think about before the library
> > gets
> > coded.  
> > 
> > I'm currently leaning towards doing things in a win32lib'ish manner,
> > rather
> > than a wxWindows/C++ manner (which is how the demo is written), by
> > which I
> > mean:
> > 
> > win32lib:
> > include win32lib.ew
> > -- create stuff
> > -- event handlers, etc
> > WinMain()
> > 
> > wxWindows:
> > include wxEuphoria.e
> > -- event handlers, etc
> > procedure init()
> > 	-- create stuff
> > end procedure
> > WxMain() -- your init routine is called from here
> > 
> > David C, you probably have some thoughts about this.  In this
> > respect, I
> > think wxBasic works sorta like win32lib (big surprise :).  
> Of course,
> > there
> > will be lots of other details, like how to manage event handling,
> > and,
> > obviously, making it all really cross platform.
> > 
> > Matt Lewis
> 
> 

TOPICA - Start your own email discussion group. FREE!

new topic     » goto parent     » topic index » view message » categorize

4. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]



> Linux does C calls the cdecl way, not sure about C++ calls (I 
> didnt finish
> compling wxWindows yet (its been 16 hours so far) so I didn't 
> get to test it
> yet).

I suspect that all calls will be done using cdecl, passing 'this' as the
first parameter.  The thiscall thing seems to be MSVC specific.


> Just Some Notes:
> 
> for cplusplus.e,
> 
> dlopen(x, or_bits(#001, #100)) is the same as LoadLibrary(x)
> dlclose(x) is the same as FreeLibrary(x)
> dlsym(x, y) is the same as GetProcAddress(x, y)
> 
> in wxEuphoria.e,
> 
> user32, xPeekMessage, etc. seem not to be needed. Why were 
> they there in the
> first place?

At some point, I was attempting to make my own message loop.  They never got
deleted.  There's really a lot that needs to be done to make it cross
platform.  First, I think we're going to have to figure out how to import
stuff under linux.  In windows, I can do it by ordinal (and can get a list
of undecorated names using Dependency Walker), but I don't think you can do
this using linux.  And, of course, there's the issue of calling conventions.
 
> those are the only 2 files i've looked at, besides fptr.e
> 
> and, afai can tell, fptr.e's thiscall routines should work just fine
> ... I think.
> However, I have not had the chance to test it yet, as I've ready said.

I suspect that you'll crash and burn using thiscall. :)

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

5. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]

> I just translated some C++ code into asm. I don't understand 
> it however. :[
> As far as I can tell, it appears to be cdecl ... not entirely sure
> however.
> 
> Maybe I'll have g++ translate the code into preprocessed C. 
> That should
> be easier to read.

Yes, from everything I've seen (not a whole lot), everything in linux should
be cdecl, so that should be pretty simple.  I've started separating out code
that's windows specific, so that a user would simply include wxWin.e or
wxLinux.e.  There may also be certain classes that will be OS specific, but
we'll just have to wait and see.  Rather than using call_thiscall directly,
I've put call_member() in wxWin.e which calls call_thiscall().  In
wxLinux.e, it would be call_cdecl().

> > At some point, I was attempting to make my own message 
> loop.  They never got
> > deleted. 
> 
> Oh. What was the point of that? jw.

It seemed like wxWindows might have been crashing when it's internal message
loop was called, so I tried to do it myself.
 

> In linux, the command 'nm' gets the list of symbols exported 
> by a shared library.
> Not sure about ordinal however.

I don't think Linux uses the concept of ordinals.  We'll just have to figure
out what the undecorated names are.  I also created a file, wxDefsMsw.e,
where I've wrapped the ordinals into constants, so they'll be easier to
import as needed.  I expect we'd take the output of 'nm' and do the same.
 
Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

6. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]

> Well, nm gets the list of names from an executable and prints 
> the names out,
> along with the symbol's type and value. It has a demangle 
> option, so the asm
> names are converted back to readable C++ names.
> 
> We'd probably have to compare outputs of nm on the wxWindows 
> .so file, once
> with demangling and once without, and then import the 
> functions in wxEuphoria
> via the mangled names, as you have already guessed. If I can, 
> I'll try to
> write a function that can automaticly demangle the names 
> directly, thus
> avoiding the need to compare such a huge list of names for 
> wxEuphoria with nm
> .. twice.

That's exactly what we'll need.  What I did will the dll was to copy the
unmangled names into Excel, and assigned them each the proper ordinal, and
used that for reference.  Then I put that into a text file, and wrote a
little program to wrap the ordinals for me.  I've now got a file that's
slightly over 1Mb of constant declarations.  At some point, I'll need to
break them up somehow, but I'm not sure how to do that when we'll have a
similar list for the Linux version.

I've been working on making it into a real library.  Hopefully I'll have
something worth looking at in a few days.

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

7. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]

> You are right. I taken another look (or to be more accurate, 
> many many many
> many many many many many many more looks ... i really need to 
> brush up on my
> asm) at the code produced by g++ (the asm code, as the preprocess
> option just creates code w/o the #include's and #define's and such).
> 
> The asm code for the C class, uses cdecl all the way, and the 
> first parameter,
> would appear to be the 'this' pointer. (I see the first 
> parameter as "-8(%ebp)"
> however ... not sure what that is, its AT&T syntax of course....)

I forgot to mention that you'll want to turn threading off.  Look in
setup.h.  I got errors when I compiled with threads.
Change:
#define wxUSE_THREADS 1
to
#define wxUSE_THREADS 0
(or just comment out, I can't remember exactly how I did it)

Here's how I'm planning to separate Windows and Linux code.  First, I plan
to group related classes together in their own include files, and to make
them modular.  For instance, wxFrame and wxWindow will be in wxWindow.e.
But there will be two additional include files for each .e file: a .ew and
.eu.  The user will actually include the .ew/.ew files, so only the platform
independant code can be put into the .e files.  All the import data is
stored in the .ew file, so we won't have to worry about a 1meg include file
for Hello World.  I've also put a _Platform constant in each .ew file so
that it's possible to automatically identify when someone accidentally mixes
windows and linux include files.

I've only done this conversion for wxWindow and wxFrame so far, but here's
what the beginning of wxFractal.exw now looks like:

-- wxFractal.exw
-- Matt Lewis

without warning
include wxEuphoria.ew
include wxWindow.ew
include wxMenu.e
include wxGraphics.e

object void

constant
frame = create( wxFrame, {0, -1, "Fractal Mountains for wxWindows", -1, -1,
640, 480} ),
canvas = create( wxWindow, {frame}),

menu = new_wxMenu( ),
menu_bar = new_wxMenuBar(),

-- end sample

It's a lot clearer, and the program flow is just like that of a win32lib
app.

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

8. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]

> Oh. Well, if I get errors I'll do it that way as well ... I'm 
> using wxX11 with
> wxUniversal. (I'm thinking I might have wanted the wxGTK one 
> instead tho.)
> For now, I'm gonna wait for the compile to actually FINISH. 
> (Been going on for
> a few day now. :[ )

Whew!  And I got impatient after a half hour.  What are the specs on the box
where you're compiling?
 
> Yes. Sounds like a good idea to me.
> 
> As for the possibility of classes being dependant on 
> platform, I'd doubt it,
> in any case I'm using wxX11 (which provides only the most 
> low-level primitives
> needed, such as windows and graphics drawing) with 
> wxUniversal (which emulates
> all controls with the low-level drawing primitives from 
> another wxWindows
> library). Hence, if classes are platform-dependant, then I'll 
> have the lowest
> common denominator lib.
> (Obviously, wxX11 needs wxUniversal, since raw Xlib provides 
> no widgets at all,
> however wxGTK and wxMSW can be compiled with wxUniversal iirc.)

Most of the platform dependent things are the constants used to import the
functions.  I wasn't aware that you could compile without using GTK--not
that I looked into it very much.  I just opened the MSVC workspace file and
let her rip.

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

9. RE: wxEuphoria

> From: jbrown1050 at hotpop.com [mailto:jbrown1050 at hotpop.com]

> Oh. Jw, are you using wxGTK under Windows, or the native 
> wxWindows port (which
> uses the Windows GUI directly via the WinAPI) ?

Native wxWindows.  Adding wxGTK seemed like adding too much overhead.

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

10. RE: wxEuphoria

Well, I'll go ahead and reply.  I put the bleeding edge up at

http://wxeuphoria.sourceforge.net (follow the bleeding edge link)


Matt Lewis wrote:
> 
> 
> I'm still a week or two from release of v0.2.0, but I've been 
> considering releasing a bleeding edge version, and wanted to see if 
> others would find it useful.  Basically, I plan to post source only, so 
> you'll have to download the wxWidgets source (and apply my patch) and 
> build the library yourself.
> 
> For those who don't know what I'm talking about:
> 
> http://wxeuphoria.sourceforge.net
> 
> Matt Lewis
> 
> PS I've progressed beyond the last news item that I posted, after 
> successfully battling gcc most of this weekend.
>

new topic     » goto parent     » topic index » view message » categorize

11. RE: wxEuphoria

> From: David Cuny [mailto:dcuny at LANSET.COM]

> Matt Lewis wrote:
> 
> > I've put my latest work on wxEuphoria up on my web page:
> 
> Great! Any chance I might be able to get the source? I've 
> been wanting to make 
> a wxWindows DLL for my wrappers, but I'm an idiot when it 
> comes to creating 
> DLLs - especialy for wxWindows, where the init stuff is 
> buried in macros.
> 
> I'm not really worried about name mangling, since the 
> wrappers take care of 
> that. I just want to know how to set up the DLL.
> 
> Thanks, and congratulations.!

Frankly, creating the DLL was the easiest part, you just have to have MSVC.
:)  They've got a dll workspace file that compiles straight away.  I think
the only thing I changed was to turn threading off in setup.h.  Then I've
used Dependency Viewer to work out the mangled vs unmangled names.  I've
actually been importing by ordinal, although I'm in the process of changing
to straight names, and making that whole process more automated.

The Euphoria source is all there on my page.  I basically followed what
happens in wxEntry, and got rid of all the calls that caused crashes. :)
Here is the initialization code from wxEuphoria.e (it's somewhat scattered
in the code):

global atom myApp_this

void = call_cdecl( wxEntryStart, {0,0})
myApp_this = new_instance( wxApp, 0, {})
poke4( wxTheApp, myApp_this )

global procedure wxMain( atom topWindow )

    set_event_handler( topWindow, get_id(topWindow), wxEVT_CLOSE_WINDOW, 
        routine_id("OnCloseWindow") )

    void = call_thiscall( wxFrame_Show, topWindow, {1})
    void = call_member( wxApp_MainLoop, myApp_this, {} )

    topWindow = call_member( wxApp_GetTopWindow, myApp_this, {} )
    if topWindow then
        if call_member( wxObject_IsKindOf, topWindow, { sm_classwxFrame })
or
           call_member( wxObject_IsKindOf, topWindow, { sm_classwxWindow })
then
            void = call_member( wxWindow_Close, topWindow, {1} )
            void = call_member( wxApp_DeletePendingObjects, myApp_this, {} )

        else
            wx_free( topWindow )
            void = call_member( wxApp_SetTopWindow, myApp_this, {0})
        end if
    end if

end procedure

Matt Lewis

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu