From: Konstantin C. <kch...@gm...> - 2010-04-05 14:47:44
|
Hello, wxHaskell community! I need to embed web control into my application under Windows 7. I am trying to use wxWebconnect ( http://www.kirix.com/labs/wxwebconnect/documentation/getting-started.html ) library with Gecko engine for this. Haskell code: foreign import stdcall unsafe "_browserFrame" c_browserFrame :: Ptr a -> IO(Ptr ()) main :: IO () main = start gui gui :: IO () gui = do f <- frame [text := "Hello world!", size := (sz 600 600) ] withObjectPtr f c_browserFrame return () where browser frame looks like C++ code: void* __stdcall browserFrame (wxFrame* ptrWxWindow) { wxString xulrunner_path = FindXulRunner(wxT("xr")); wxString dir(wxT("\\plugins")); wxWebControl::InitEngine(xulrunner_path); wxWebControl::AddPluginPath(dir); wxWebControl* ptrBrowser = new wxWebControl(ptrWxWindow, wxID_WEB, wxPoint(0,0), wxSize(600,600)); //Here error comes from return ptrWxWindow; } it is compiled as dll by MS Visual 2008 and linked to Haskell program. Also it looks like CreateControl execution fails. It should be mentioned that ptrWxWindow can be operated with no errors (I mean hiding, resizing etc) and no any other kind of control can be created (wxButton, wxLabel). If first parameter to c_browserFrame (parent window) is objectNull then everything is ok with no changes to gui. I can't understand what is wrong with ptrWxWindow param when passed from Haskell. typeid(ptrWxWindow).name() shows expected type of ptrWxWindow - wxFrame. What am I doing wrong? Please help me. Or maybe can you help me using your wxdirect subsystem to add this control to wxHaskell? with best regards, Chugalinskiy Konstantin kch...@gm... Jabber: kos...@ja... |
From: carlos g. <car...@gm...> - 2010-04-05 18:08:22
|
Interesting, but I don't know how to fix. Maybe you can use the wxHtmlWindow of WxCore, it is an html engine too. You can see http://hsbrowser.wordpress.com/2010/04/05/using-wxhtmlwindow-with-wxhaskell/ I hope this help. -- carlos On 5 April 2010 10:17, Konstantin Chugalinskiy <kch...@gm...>wrote: > Hello, wxHaskell community! > > I need to embed web control into my application under Windows 7. I am > trying to use wxWebconnect ( > http://www.kirix.com/labs/wxwebconnect/documentation/getting-started.html ) > library with Gecko engine for this. > Haskell code: > foreign import stdcall unsafe "_browserFrame" > c_browserFrame :: Ptr a -> IO(Ptr ()) > > main :: IO () > main > = start gui > > gui :: IO () > gui = do > f <- frame [text := "Hello world!", size := (sz 600 600) ] > withObjectPtr f c_browserFrame > return () > > where browser frame looks like > C++ code: > void* __stdcall browserFrame (wxFrame* ptrWxWindow) > { > wxString xulrunner_path = FindXulRunner(wxT("xr")); > wxString dir(wxT("\\plugins")); > wxWebControl::InitEngine(xulrunner_path); > wxWebControl::AddPluginPath(dir); > wxWebControl* ptrBrowser = new wxWebControl(ptrWxWindow, wxID_WEB, > wxPoint(0,0), wxSize(600,600)); //Here error comes from > return ptrWxWindow; > } > it is compiled as dll by MS Visual 2008 and linked to Haskell program. > > Also it looks like CreateControl execution fails. > It should be mentioned that ptrWxWindow can be operated with no errors (I > mean hiding, resizing etc) and no any other kind of control can be created > (wxButton, wxLabel). > If first parameter to c_browserFrame (parent window) is objectNull then > everything is ok with no changes to gui. I can't understand what is wrong > with ptrWxWindow param when passed from Haskell. > typeid(ptrWxWindow).name() shows expected type of ptrWxWindow - wxFrame. > > What am I doing wrong? Please help me. Or maybe can you help me using your > wxdirect subsystem to add this control to wxHaskell? > > with best regards, > Chugalinskiy Konstantin > kch...@gm... > Jabber: kos...@ja... > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > wxhaskell-users mailing list > wxh...@li... > https://lists.sourceforge.net/lists/listinfo/wxhaskell-users > > |
From: Jeremy O'D. <jer...@gm...> - 2010-04-07 09:47:39
|
Hi Konstantin, To answer your first question, frame returns a Frame (), which, under the hood is an Object - that's another way of saying that I think your code is at least correctly typed. I think you would need to use wxDirect to integrate properly with wxHaskell. It's a bit tedious, but not especially hard. I'll probably write a blog posting about this soon, but the basics of what you need to do are as follows: Create an Eiffel(!) file containing all of the constant definitions exported by wxWebConnect (or at least the ones you want...). The reason for the Eiffel is historical: wxHaskell was originally built on top of a (long-obsolete) binding of wxWidgets to Eiffel. This requires no real knowledge of Eiffel: it's simply a file containing lines such as: wxMY_CONTROL_SOME_VALUE : INTEGER is 23 Create a C header file describing the API you want to wrap - this is somewhat stylized, using macros to describe inheritance. Run wxDirect over the newly created files - this autogenerates C wrappers over the C++ classes/functions with appropriate Haskell to use them. I realize that this is a bit 'handwaving', but a full description really requires quite a lot more than I can manage in a single e-mail. As a little more help, if you download wxCore source code (cabal fetch wxcore), you can look at the following files for inspiration: wxcore/src/include/wxc_glue.h and wxc.h - these show the 'wrapping' style needed. wxcore/src/eiffel/stc.e - this shows how to define constants in the Eiffel format WxDirect accepts the following options: -d : create constant definitions from .e files -c : create class definitions from .h files -t : create class type definitions from .h files -i : create class info definitions -o : set the output directory I suspect that you will have a bit of trouble with getting all of this to work, so if you can wait (it may be a couple of weeks), there may be a blog posting to help you. Regards Jeremy On Mon, 05 Apr 2010 18:47 +0400, "Konstantin Chugalinskiy" <kch...@gm...> wrote: Hello, wxHaskell community! I need to embed web control into my application under Windows 7. I am trying to use wxWebconnect ( [1]http://www.kirix.com/labs/wxwebconnect/documentation/getting -started.html ) library with Gecko engine for this. Haskell code: foreign import stdcall unsafe "_browserFrame" c_browserFrame :: Ptr a -> IO(Ptr ()) main :: IO () main = start gui gui :: IO () gui = do f <- frame [text := "Hello world!", size := (sz 600 600) ] withObjectPtr f c_browserFrame return () where browser frame looks like C++ code: void* __stdcall browserFrame (wxFrame* ptrWxWindow) { wxString xulrunner_path = FindXulRunner(wxT("xr")); wxString dir(wxT("\\plugins")); wxWebControl::InitEngine(xulrunner_path); wxWebControl::AddPluginPath(dir); wxWebControl* ptrBrowser = new wxWebControl(ptrWxWindow, wxID_WEB, wxPoint(0,0), wxSize(600,600)); //Here error comes from return ptrWxWindow; } it is compiled as dll by MS Visual 2008 and linked to Haskell program. Also it looks like CreateControl execution fails. It should be mentioned that ptrWxWindow can be operated with no errors (I mean hiding, resizing etc) and no any other kind of control can be created (wxButton, wxLabel). If first parameter to c_browserFrame (parent window) is objectNull then everything is ok with no changes to gui. I can't understand what is wrong with ptrWxWindow param when passed from Haskell. typeid(ptrWxWindow).name() shows expected type of ptrWxWindow - wxFrame. What am I doing wrong? Please help me. Or maybe can you help me using your wxdirect subsystem to add this control to wxHaskell? with best regards, Chugalinskiy Konstantin [2]kch...@gm... Jabber: [3]kos...@ja... ------------------------------------------------------------------------- ----- Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ wxhaskell-users mailing list wxh...@li... https://lists.sourceforge.net/lists/listinfo/wxhaskell-users References 1. http://www.kirix.com/labs/wxwebconnect/documentation/getting-started.html 2. mailto:kch...@gm... 3. mailto:kos...@ja... -- Jeremy O'Donoghue jer...@gm... |
From: Jeremy O'D. <jer...@gm...> - 2010-04-07 16:44:04
|
Hi Konstantin, I have started looking at using wxDirect to wrap other wxWidgets components. Bottom line is that you can't really do it with the version we have available today. I'm working on the changes needed (they are not extensive), but since I will be on vacation starting tomorrow, please don't expect any reply for at least 2-3 weeks. Regards Jeremy On Wed, 07 Apr 2010 10:47 +0100, "Jeremy O'Donoghue" <jer...@gm...> wrote: Hi Konstantin, To answer your first question, frame returns a Frame (), which, under the hood is an Object - that's another way of saying that I think your code is at least correctly typed. I think you would need to use wxDirect to integrate properly with wxHaskell. It's a bit tedious, but not especially hard. I'll probably write a blog posting about this soon, but the basics of what you need to do are as follows: Create an Eiffel(!) file containing all of the constant definitions exported by wxWebConnect (or at least the ones you want...). The reason for the Eiffel is historical: wxHaskell was originally built on top of a (long-obsolete) binding of wxWidgets to Eiffel. This requires no real knowledge of Eiffel: it's simply a file containing lines such as: wxMY_CONTROL_SOME_VALUE : INTEGER is 23 Create a C header file describing the API you want to wrap - this is somewhat stylized, using macros to describe inheritance. Run wxDirect over the newly created files - this autogenerates C wrappers over the C++ classes/functions with appropriate Haskell to use them. I realize that this is a bit 'handwaving', but a full description really requires quite a lot more than I can manage in a single e-mail. As a little more help, if you download wxCore source code (cabal fetch wxcore), you can look at the following files for inspiration: wxcore/src/include/wxc_glue.h and wxc.h - these show the 'wrapping' style needed. wxcore/src/eiffel/stc.e - this shows how to define constants in the Eiffel format WxDirect accepts the following options: -d : create constant definitions from .e files -c : create class definitions from .h files -t : create class type definitions from .h files -i : create class info definitions -o : set the output directory I suspect that you will have a bit of trouble with getting all of this to work, so if you can wait (it may be a couple of weeks), there may be a blog posting to help you. Regards Jeremy On Mon, 05 Apr 2010 18:47 +0400, "Konstantin Chugalinskiy" <kch...@gm...> wrote: Hello, wxHaskell community! I need to embed web control into my application under Windows 7. I am trying to use wxWebconnect ( [1]http://www.kirix.com/labs/wxwebconnect/documentation/getting -started.html ) library with Gecko engine for this. Haskell code: foreign import stdcall unsafe "_browserFrame" c_browserFrame :: Ptr a -> IO(Ptr ()) main :: IO () main = start gui gui :: IO () gui = do f <- frame [text := "Hello world!", size := (sz 600 600) ] withObjectPtr f c_browserFrame return () where browser frame looks like C++ code: void* __stdcall browserFrame (wxFrame* ptrWxWindow) { wxString xulrunner_path = FindXulRunner(wxT("xr")); wxString dir(wxT("\\plugins")); wxWebControl::InitEngine(xulrunner_path); wxWebControl::AddPluginPath(dir); wxWebControl* ptrBrowser = new wxWebControl(ptrWxWindow, wxID_WEB, wxPoint(0,0), wxSize(600,600)); //Here error comes from return ptrWxWindow; } it is compiled as dll by MS Visual 2008 and linked to Haskell program. Also it looks like CreateControl execution fails. It should be mentioned that ptrWxWindow can be operated with no errors (I mean hiding, resizing etc) and no any other kind of control can be created (wxButton, wxLabel). If first parameter to c_browserFrame (parent window) is objectNull then everything is ok with no changes to gui. I can't understand what is wrong with ptrWxWindow param when passed from Haskell. typeid(ptrWxWindow).name() shows expected type of ptrWxWindow - wxFrame. What am I doing wrong? Please help me. Or maybe can you help me using your wxdirect subsystem to add this control to wxHaskell? with best regards, Chugalinskiy Konstantin [2]kch...@gm... Jabber: [3]kos...@ja... ------------------------------------------------------------------------- ----- Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ wxhaskell-users mailing list wxh...@li... https://lists.sourceforge.net/lists/listinfo/wxhaskell-users -- Jeremy O'Donoghue jer...@gm... ------------------------------------------------------------------------- ----- Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ wxhaskell-users mailing list wxh...@li... https://lists.sourceforge.net/lists/listinfo/wxhaskell-users References 1. http://www.kirix.com/labs/wxwebconnect/documentation/getting-started.html 2. mailto:kch...@gm... 3. mailto:kos...@ja... -- Jeremy O'Donoghue jer...@gm... |
From: Konstantin C. <kch...@gm...> - 2010-04-07 16:48:45
|
Hi, Jeremy! Thank you for reply and help. I will wait as long as it is needed. 2010/4/7 Jeremy O'Donoghue <jer...@gm...> Hi Konstantin, > > I have started looking at using wxDirect to wrap other wxWidgets > components. Bottom line is that you can't really do it with the version we > have available today. I'm working on the changes needed (they are not > extensive), but since I will be on vacation starting tomorrow, please don't > expect any reply for at least 2-3 weeks. > > Regards > Jeremy > > On Wed, 07 Apr 2010 10:47 +0100, "Jeremy O'Donoghue" < > jer...@gm...> wrote: > > Hi Konstantin, > > To answer your first question, frame returns a Frame (), which, under the > hood is an Object - that's another way of saying that I think your code is > at least correctly typed. > > I think you would need to use wxDirect to integrate properly with > wxHaskell. It's a bit tedious, but not especially hard. I'll probably write > a blog posting about this soon, but the basics of what you need to do are as > follows: > > Create an Eiffel(!) file containing all of the constant definitions > exported by wxWebConnect (or at least the ones you want...). The reason for > the Eiffel is historical: wxHaskell was originally built on top of a > (long-obsolete) binding of wxWidgets to Eiffel. This requires no real > knowledge of Eiffel: it's simply a file containing lines such as: > > wxMY_CONTROL_SOME_VALUE : INTEGER is 23 > > Create a C header file describing the API you want to wrap - this is > somewhat stylized, using macros to describe inheritance. > > Run wxDirect over the newly created files - this autogenerates C wrappers > over the C++ classes/functions with appropriate Haskell to use them. > > I realize that this is a bit 'handwaving', but a full description really > requires quite a lot more than I can manage in a single e-mail. > > As a little more help, if you download wxCore source code (cabal fetch > wxcore), you can look at the following files for inspiration: > > wxcore/src/include/wxc_glue.h and wxc.h - these show the 'wrapping' style > needed. > wxcore/src/eiffel/stc.e - this shows how to define constants in the Eiffel > format > > WxDirect accepts the following options: > > -d : create constant definitions from .e files > -c : create class definitions from .h files > -t : create class type definitions from .h files > -i : create class info definitions > -o : set the output directory > > I suspect that you will have a bit of trouble with getting all of this to > work, so if you can wait (it may be a couple of weeks), there may be a blog > posting to help you. > > Regards > Jeremy > > > On Mon, 05 Apr 2010 18:47 +0400, "Konstantin Chugalinskiy" < > kch...@gm...> wrote: > > Hello, wxHaskell community! > > I need to embed web control into my application under Windows 7. I am > trying to use wxWebconnect ( > http://www.kirix.com/labs/wxwebconnect/documentation/getting-started.html ) > library with Gecko engine for this. > Haskell code: > foreign import stdcall unsafe "_browserFrame" > c_browserFrame :: Ptr a -> IO(Ptr ()) > > main :: IO () > main > = start gui > > gui :: IO () > gui = do > f <- frame [text := "Hello world!", size := (sz 600 600) ] > withObjectPtr f c_browserFrame > return () > > where browser frame looks like > C++ code: > void* __stdcall browserFrame (wxFrame* ptrWxWindow) > { > wxString xulrunner_path = FindXulRunner(wxT("xr")); > wxString dir(wxT("\\plugins")); > wxWebControl::InitEngine(xulrunner_path); > wxWebControl::AddPluginPath(dir); > wxWebControl* ptrBrowser = new wxWebControl(ptrWxWindow, wxID_WEB, > wxPoint(0,0), wxSize(600,600)); //Here error comes from > return ptrWxWindow; > } > it is compiled as dll by MS Visual 2008 and linked to Haskell program. > > Also it looks like CreateControl execution fails. > It should be mentioned that ptrWxWindow can be operated with no errors (I > mean hiding, resizing etc) and no any other kind of control can be created > (wxButton, wxLabel). > If first parameter to c_browserFrame (parent window) is objectNull then > everything is ok with no changes to gui. I can't understand what is wrong > with ptrWxWindow param when passed from Haskell. > typeid(ptrWxWindow).name() shows expected type of ptrWxWindow - wxFrame. > > What am I doing wrong? Please help me. Or maybe can you help me using your > wxdirect subsystem to add this control to wxHaskell? > > with best regards, > Chugalinskiy Konstantin > kch...@gm... > Jabber: kos...@ja... > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta.http://p.sf.net/sfu/intel-sw-dev > > _______________________________________________ > wxhaskell-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/wxhaskell-users > > -- > Jeremy O'Donoghue > jer...@gm... > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta.http://p.sf.net/sfu/intel-sw-dev > > _______________________________________________ > wxhaskell-users mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/wxhaskell-users > > -- > Jeremy O'Donoghue > jer...@gm... > > -- with best regards, Chugalinskiy Konstantin kch...@gm... ICQ: 571803742 Jabber: kos...@ja... -- with best regards, Chugalinskiy Konstantin +380 66 2694651 +7 906 0850998 kch...@gm... ICQ: 571803742 Jabber: kos...@ja... |