tasn pushed a commit to branch master. http://git.enlightenment.org/bindings/cxx/eflxx.git/commit/?id=c55c98b2f7919ffaf983b7a504ca78c871638941
commit c55c98b2f7919ffaf983b7a504ca78c871638941 Author: Andreas Volz <[email protected]> Date: Fri Dec 19 23:42:35 2008 +0000 - more wrapper functions for EtkButton - corrected --enable-examples option SVN revision: 38237 --- TODO | 4 +- configure.ac | 8 +--- examples/etk/simple/main.cpp | 2 + src/edje/eflpp_edje.cpp | 3 +- src/etk/eflpp_etk.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++- src/etk/eflpp_etk.h | 93 ++++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 188 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 1d07c31..1413b91 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,5 @@ * memory handling, it leaks like hell -* parent/child chaining +** more CountedPtr usage * wrap evas_color_* functions (e.g. evas_color_argb_premul) * move all #include <config.h> from *.h to *.cpp -* write signal example for evas +* split eflpp into seperate libs (e.g. eflpp-edje, eflpp-evas, ...) diff --git a/configure.ac b/configure.ac index 7d3b19f..1d33b98 100644 --- a/configure.ac +++ b/configure.ac @@ -85,17 +85,13 @@ fi AM_CONDITIONAL(EFLPP_ENABLE_FB, test "x$have_fbcon" = xyes) - - dnl Check for option to enable examples -AC_MSG_CHECKING(whether to enable debugging) +AC_MSG_CHECKING(whether to enable examples) AC_ARG_ENABLE(examples, [ --enable-examples=[no/yes] enables to build examples (default=yes)],, enable_examples=yes) -AM_CONDITIONAL(ENABLE_EXAMPLES, test "x$enable_examples" != "xyes") - - +AM_CONDITIONAL(ENABLE_EXAMPLES, test "x$enable_examples" = "xyes") dnl Check for pkg-config stuff pkg_modules="$esmart_modules $emotion_modules evas ecore ecore-config ecore-evas ecore-ipc ecore-txt ecore-con ecore-job sigc++-2.0 etk ewl" diff --git a/examples/etk/simple/main.cpp b/examples/etk/simple/main.cpp index 0d9722d..ff67150 100644 --- a/examples/etk/simple/main.cpp +++ b/examples/etk/simple/main.cpp @@ -16,6 +16,8 @@ int main( int argc, const char **argv ) mainWindow->resize( Size( 200, 100 ) ); EtkButton* button = new EtkButton( "Hello World" ); + button->setFromStock( ETK_STOCK_BOOKMARK_NEW ); + button->setStockSize( ETK_STOCK_BIG ); mainWindow->appendChild( button ); mainWindow->showAll(); diff --git a/src/edje/eflpp_edje.cpp b/src/edje/eflpp_edje.cpp index 25492fe..0465280 100644 --- a/src/edje/eflpp_edje.cpp +++ b/src/edje/eflpp_edje.cpp @@ -195,10 +195,11 @@ CountedPtr <EvasObject> EdjePart::swallow() const char *t = evas_object_type_get( eo ); EvasObject *ret_o = NULL; - if (t == string ("edje")) + if( !strcmp( t,"edje" ) ) { ret_o = EvasEdje::wrap (eo); } + // TODO: support other types return CountedPtr <EvasObject> (ret_o); } diff --git a/src/etk/eflpp_etk.cpp b/src/etk/eflpp_etk.cpp index 02f4620..8c1e5b8 100644 --- a/src/etk/eflpp_etk.cpp +++ b/src/etk/eflpp_etk.cpp @@ -59,6 +59,11 @@ void EtkObject::setAlignment( ) { } +void EtkObject::init( ) +{ + _managed = true; +} + //==========================================================================// // EtkWidget //==========================================================================// @@ -66,6 +71,7 @@ void EtkObject::setAlignment( ) EtkWidget::EtkWidget( EtkObject* parent, const char* type, const char* name ) :EtkObject( parent, type, name ) { + init( ); } EtkWidget::~EtkWidget() @@ -117,6 +123,7 @@ bool EtkWidget::visibilityLock() const EtkContainer::EtkContainer( EtkObject* parent, const char* type, const char* name ) :EtkWidget( parent, type, name ) { + init( ); } EtkContainer::~EtkContainer() @@ -140,6 +147,7 @@ void EtkContainer::setBorderWidth( int width ) EtkTopLevelWidget::EtkTopLevelWidget( EtkObject* parent, const char* type, const char* name ) :EtkContainer( parent, type, name ) { + init( ); } EtkTopLevelWidget::~EtkTopLevelWidget() @@ -153,7 +161,8 @@ EtkTopLevelWidget::~EtkTopLevelWidget() EtkEmbed::EtkEmbed( EvasCanvas* canvas, EtkObject* parent, const char* type, const char* name ) :EtkTopLevelWidget( parent, type, name ) { - _o = ETK_OBJECT( etk_embed_new( canvas->obj()) ); + init( ); + _o = ETK_OBJECT( etk_embed_new( canvas->obj()) ); } EtkEmbed::~EtkEmbed() @@ -218,6 +227,7 @@ EtkBox::~EtkBox() EtkHBox::EtkHBox( EtkObject* parent, const char* type, const char* name ) :EtkBox( parent, type, name ) { + init( ); //ewl_box_orientation_set( EWL_BOX(_o), EWL_ORIENTATION_HORIZONTAL ); } @@ -232,6 +242,7 @@ EtkHBox::~EtkHBox() EtkVBox::EtkVBox( EtkObject* parent, const char* type, const char* name ) :EtkBox( parent, type, name ) { + init( ); //ewl_box_orientation_set( EWL_BOX(_o), EWL_ORIENTATION_VERTICAL ); } @@ -240,12 +251,28 @@ EtkVBox::~EtkVBox() } //==========================================================================// +// EtkImage +//==========================================================================// + +EtkImage::EtkImage( Etk_Object *o ) +{ + _o = o; + _managed = false; +} + +EtkImage *EtkImage::wrap( Etk_Object* o ) +{ + return new EtkImage( o ); +} + +//==========================================================================// // EtkButton //==========================================================================// EtkButton::EtkButton( EtkObject* parent, const char* type, const char* name ) :EtkBox( parent, type, name ) { + init( ); setText( name ? name : "unnamed" ); } @@ -255,6 +282,12 @@ EtkButton::EtkButton( const char* text, EtkObject* parent, const char* type, con setText( text ); } +EtkButton::EtkButton( Etk_Object *o ) +{ + _o = o; + _managed = false; +} + EtkButton::~EtkButton() { } @@ -264,6 +297,62 @@ void EtkButton::setText( const char* text ) etk_button_label_set( ETK_BUTTON(_o), const_cast<char*>( text ) ); } +const char *EtkButton::getText( ) +{ + return etk_button_label_get (ETK_BUTTON(_o)); +} + +void EtkButton::setImage( EtkImage *image ) +{ + etk_button_image_set( ETK_BUTTON( _o ), ETK_IMAGE( image->obj( ) )); +} + +EtkImage *EtkButton::getImage( ) +{ + return EtkImage::wrap ( ETK_OBJECT( etk_button_image_get( ETK_BUTTON (_o ) ))); +} + +EtkButton *EtkButton::wrap( Etk_Object* o ) +{ + return new EtkButton( o ); +} + +void EtkButton::setFromStock( Etk_Stock_Id stock_id ) +{ + etk_button_set_from_stock( ETK_BUTTON( _o ), stock_id ); +} + +void EtkButton::setStyle( Etk_Button_Style style ) +{ + etk_button_style_set( ETK_BUTTON( _o ), style ); +} + +Etk_Button_Style EtkButton::getStyle( ) +{ + return etk_button_style_get( ETK_BUTTON( _o )); +} + +void EtkButton::setStockSize( Etk_Stock_Size size ) +{ + etk_button_stock_size_set( ETK_BUTTON( _o ), size ); +} + +Etk_Stock_Size EtkButton::getStockSize( ) +{ + return etk_button_stock_size_get( ETK_BUTTON( _o ) ); +} + +void EtkButton::setAlignment( float xalign, float yalign ) +{ + etk_button_alignment_set( ETK_BUTTON( _o ), xalign, yalign ); +} + +void EtkButton::getAlignment( float &xalign, float &yalign ) +{ + etk_button_alignment_get( ETK_BUTTON( _o ), &xalign, &yalign); +} + + //=============================================================================================== // EtkApplication //=============================================================================================== diff --git a/src/etk/eflpp_etk.h b/src/etk/eflpp_etk.h index 49a26e4..8cf2bc7 100644 --- a/src/etk/eflpp_etk.h +++ b/src/etk/eflpp_etk.h @@ -21,7 +21,7 @@ class EtkWidget; class EtkObject { - public: + public: EtkObject( EtkObject* parent = 0, const char* type = "<unknown>", const char* name = 0 ); virtual ~EtkObject(); @@ -30,12 +30,15 @@ class EtkObject void resize( const Size& size ); - public: + public: Etk_Object* obj() const { return _o; }; - protected: + protected: + void init( ); + Etk_Object* _o; const char* _type; + bool _managed; }; class EtkWidget : public EtkObject @@ -92,6 +95,16 @@ class EtkVBox : public EtkBox virtual ~EtkVBox(); }; +class EtkImage : public EtkWidget +{ + public: + static EtkImage *wrap( Etk_Object* o ); + + private: + EtkImage( Etk_Object *o ); +}; + +/// \todo wrap C enum types to C++ class EtkButton : public EtkBox { public: @@ -99,7 +112,81 @@ class EtkButton : public EtkBox EtkButton( const char* text, EtkObject* parent = 0, const char* type = "Button", const char* name = 0 ); virtual ~EtkButton(); + /* + TODO: +Etk_Widget * etk_button_new (void) + Creates a new button. +Etk_Widget * etk_button_new_with_label (const char *label) + Creates a new button with a label. +Etk_Widget * etk_button_new_from_stock (Etk_Stock_Id stock_id) + Creates a new button with a label and an icon defined by a stock-id. +void etk_button_press (Etk_Button *button) + Presses the button if it wasn't already pressed. +void etk_button_release (Etk_Button *button) + Releases the button if it was pressed. +void etk_button_click (Etk_Button *button) + Clicks on the button. + */ + + /*! + * Sets the text of the button's label. + */ void setText( const char* text ); + + /*! + * Gets the text of the button's label. + */ + const char *getText( ); + + /*! + * Sets the image of the button. + */ + void setImage( EtkImage *image ); + + /*! + * Gets the image of the button. + */ + EtkImage *getImage( ); + + /*! + * Sets the label and the image of the button from a stock-id. + */ + void setFromStock( Etk_Stock_Id stock_id ); + + /*! + * Sets the style of the button (icon, text, both vertically, both horizontally). + */ + void setStyle( Etk_Button_Style style ); + + /*! + * Gets the style of the button. + */ + Etk_Button_Style getStyle( ); + + /*! + * Sets the stock-size of the button's image. + */ + void setStockSize( Etk_Stock_Size size ); + + /*! + * Gets the stock-size of the button's image. + */ + Etk_Stock_Size getStockSize( ); + + /*! + * Sets the alignment of the child of the button. + */ + void setAlignment( float xalign, float yalign ); + + /*! + * Gets the alignment of the button's child. + */ + void getAlignment( float &xalign, float &yalign ); + + static EtkButton *wrap( Etk_Object* o ); + + private: + EtkButton( Etk_Object *o ); }; class EtkEmbed : public EtkTopLevelWidget --
