Jump to content

WxWidgets: Difference between revisions

From LinuxMCE
No edit summary
Coley (talk | contribs)
Undo revision 28685 by AHagerty93 (talk) spam
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<table width="100%"> <tr><td bgcolor="#FFCFCF">This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE. However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.</td></tr> </table>== wxWidgets integration with Pluto ==
{| align="right"
  | __TOC__
  |}
[[Category: Programmer's Guide]]
 
== What is wxWidgets? ==
From their website:
An open source C++ GUI framework to make cross-platform programming child's play. Well, almost.
 
 
== wxWidgets integration with LinuxMCE ==


wxWidgets must be compiled with:
wxWidgets must be compiled with:
Line 9: Line 19:
sdl: needed by Orbiter
sdl: needed by Orbiter
opengl: needed by Orbiter
opengl: needed by Orbiter
==Required debian-pluto packages==
Release executables: libwxgtk2.6-0
Debug executables, linked with debug version of the wx library: libwxgtk2.6-dbg




Line 24: Line 28:
All *.cpp and *.h files added in this directory are automatically used by the Makefile in Orbiter
All *.cpp and *.h files added in this directory are automatically used by the Makefile in Orbiter


Read the following link "Integrating custom controls in Orbiter"
Read the following wiki link "[[Integrating custom controls in Orbiter]]",
http://10.0.0.175/wiki/index.php/Integrating_custom_controls_in_Orbiter
which will explain how to use the wx dialogs, and how to control them.
, which will explain how to use the wx dialogs, and how to control them.


== Creating a new wxWidgets dialog to be used in Orbiter ==
== Creating a new wxWidgets dialog to be used in Orbiter ==
Line 34: Line 37:
It should be derived from class wxDialog_Base.
It should be derived from class wxDialog_Base.


class wxSecurityWizard : public wxDialog_Base
    class wxSecurityWizard : public wxDialog_Base
{
    {
.......
    .......
}
    }


wxDialog_Base and other classes already implemented will handle the wx-actions and the Orbiter-tasks.
wxDialog_Base and other classes already implemented will handle the wx-actions and the Orbiter-tasks.


In "dialog_types.h", E_Dialog_SecurityWizard constant should be added
    In "dialog_types.h", E_Dialog_SecurityWizard constant should be added


In "CallBackData.h", a new class should be created, with the data that will be used by the new dialog
    In "CallBackData.h", a new class should be created, with the data that will be used by the new dialog


if wxSecurityWizard will be used as a popup:
if wxSecurityWizard will be used as a popup:
  class SecurityWizardCallBackData : public PopupCallBackData
    class SecurityWizardCallBackData : public PopupCallBackData
  {...}
    {...}


if wxSecurityWizard will be used as a normal dialog:
if wxSecurityWizard will be used as a normal dialog:
  class SecurityWizardCallBackData : public PositionCallBackData
    class SecurityWizardCallBackData : public PositionCallBackData
  {...}
    {...}


-- Generic methods from wxDialog_Base that can/should be overrided --
-- Generic methods from wxDialog_Base that can/should be overrided --
Line 58: Line 61:
     // by default calls Gui_Refresh
     // by default calls Gui_Refresh
     virtual bool Gui_DataLoad(CallBackData *pCallBackData);
     virtual bool Gui_DataLoad(CallBackData *pCallBackData);
 
   
     // save data to external object
     // save data to external object
     // not called by default
     // not called by default
Line 64: Line 67:
     // this should be used when the data from the dialog
     // this should be used when the data from the dialog
     // needs to be transfered to Orbiter
     // needs to be transfered to Orbiter
 
   
     // GUI refresh related code should be implemented here
     // GUI refresh related code should be implemented here
     // by default set full-screen or update position
     // by default set full-screen or update position
Line 74: Line 77:
from a PositionCallBackData derived class.
from a PositionCallBackData derived class.


void Update_Position_FullScreen(const int x, const int y, const int width, const int height, bool bShowFullScreen);
    void Update_Position_FullScreen(const int x, const int y, const int width, const int height, bool bShowFullScreen);
// if bShowFullScreen is true, the dialog is created full-screen
    // if bShowFullScreen is true, the dialog is created full-screen
// otherwise, his position is changed
    // otherwise, his position is changed
// if the dialog is already in the desired state, then wx functions for full-screen, or SetSize will not be called
    // if the dialog is already in the desired state, then wx functions for full-screen, or SetSize will not be called


== Original Document ==
== Original Document ==
http://svn.plutohome.com/pluto/trunk/src/Orbiter/wxAppMain/WX_PLUTO.txt
http://svn.plutohome.com/pluto/trunk/src/Orbiter/wxAppMain/WX_PLUTO.txt

Latest revision as of 13:53, 27 September 2011

What is wxWidgets?

From their website: An open source C++ GUI framework to make cross-platform programming child's play. Well, almost.


wxWidgets integration with LinuxMCE

wxWidgets must be compiled with: --with-gtk=2 --enable-monolithic --with-sdl --with-opengl

For debug builds, add --enable-debug

sdl: needed by Orbiter opengl: needed by Orbiter


wxWidgets integration with Orbiter

Now, only Linux port of Orbiter uses wxWidgets

A new directory, Orbiter/wxAppMain, was created, which contains only wx-related files All *.cpp and *.h files added in this directory are automatically used by the Makefile in Orbiter

Read the following wiki link "Integrating custom controls in Orbiter", which will explain how to use the wx dialogs, and how to control them.

Creating a new wxWidgets dialog to be used in Orbiter

example: wxSecurityWizard will be the class name

It should be derived from class wxDialog_Base.

   class wxSecurityWizard : public wxDialog_Base
   {
   .......
   }

wxDialog_Base and other classes already implemented will handle the wx-actions and the Orbiter-tasks.

   In "dialog_types.h", E_Dialog_SecurityWizard constant should be added
   In "CallBackData.h", a new class should be created, with the data that will be used by the new dialog

if wxSecurityWizard will be used as a popup:

   class SecurityWizardCallBackData : public PopupCallBackData
   {...}

if wxSecurityWizard will be used as a normal dialog:

   class SecurityWizardCallBackData : public PositionCallBackData
   {...}

-- Generic methods from wxDialog_Base that can/should be overrided --

   // load data from external object, called after create
   // by default calls Gui_Refresh
   virtual bool Gui_DataLoad(CallBackData *pCallBackData);
   
   // save data to external object
   // not called by default
   virtual bool Gui_DataSave(CallBackData *pCallBackData);
   // this should be used when the data from the dialog
   // needs to be transfered to Orbiter
   
   // GUI refresh related code should be implemented here
   // by default set full-screen or update position
   virtual bool Gui_Refresh(CallBackData *pCallBackData);

-- Other methods from wxDialog_Base --

This function should always be called if the position comes from Orbiter, from a PositionCallBackData derived class.

   void Update_Position_FullScreen(const int x, const int y, const int width, const int height, bool bShowFullScreen);
   // if bShowFullScreen is true, the dialog is created full-screen
   // otherwise, his position is changed
   // if the dialog is already in the desired state, then wx functions for full-screen, or SetSize will not be called

Original Document

http://svn.plutohome.com/pluto/trunk/src/Orbiter/wxAppMain/WX_PLUTO.txt