2013-04-25 22:13:00 -07:00
# ifdef HAVE_CONFIG_H
# include "elementary_config.h"
# endif
2010-04-08 13:36:37 -07:00
# include <Elementary.h>
# include "elm_priv.h"
2012-08-01 14:04:26 -07:00
# include "elm_widget_fileselector_button.h"
2010-04-08 13:36:37 -07:00
2012-11-25 22:32:53 -08:00
EAPI Eo_Op ELM_OBJ_FILESELECTOR_BUTTON_BASE_ID = EO_NOOP ;
# define MY_CLASS ELM_OBJ_FILESELECTOR_BUTTON_CLASS
# define MY_CLASS_NAME "elm_fileselector_button"
2010-04-08 13:36:37 -07:00
2010-10-11 21:02:47 -07:00
# define DEFAULT_WINDOW_TITLE "Select a file"
2010-04-08 13:36:37 -07:00
2010-10-19 07:17:14 -07:00
static const char SIG_FILE_CHOSEN [ ] = " file,chosen " ;
2013-04-23 05:00:50 -07:00
static const char SIG_LANG_CHANGED [ ] = " language,changed " ;
2012-05-03 15:44:01 -07:00
static const Evas_Smart_Cb_Description _smart_callbacks [ ] = {
{ SIG_FILE_CHOSEN , " s " } ,
2013-04-23 05:00:50 -07:00
{ SIG_LANG_CHANGED , " " } ,
elm: do not declare SIG_FUCSED/SIG_UNFOCUSED if the const char is not used more than once.
ctxpopup, fileselector_button, naviframe, player, popup, bubble, button, calendar, check, clock, colorselector, datetime, diskselector, flipselector, gengrid.
2013-06-09 22:05:33 -07:00
{ " focused " , " " } , /**< handled by elm_widget */
{ " unfocused " , " " } , /**< handled by elm_widget */
2012-05-03 15:44:01 -07:00
{ NULL , NULL }
2010-10-19 07:17:14 -07:00
} ;
2010-09-22 10:45:49 -07:00
2013-04-23 05:00:50 -07:00
static void
2013-04-23 05:39:21 -07:00
_elm_fileselector_button_smart_translate ( Eo * obj , void * _pd EINA_UNUSED , va_list * list )
2013-04-23 05:00:50 -07:00
{
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
evas_object_smart_callback_call ( obj , SIG_LANG_CHANGED , NULL ) ;
if ( ret ) * ret = EINA_TRUE ;
}
2012-11-25 22:32:53 -08:00
static void
_elm_fileselector_button_smart_theme ( Eo * obj , void * _pd EINA_UNUSED , va_list * list )
2010-04-08 13:36:37 -07:00
{
2012-11-25 22:32:53 -08:00
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
if ( ret ) * ret = EINA_FALSE ;
Eina_Bool int_ret ;
2012-05-03 15:44:01 -07:00
char buf [ 4096 ] ;
const char * style ;
2010-04-08 13:36:37 -07:00
2013-04-24 04:41:37 -07:00
Elm_Widget_Smart_Data * wd = eo_data_scope_get ( obj , ELM_OBJ_WIDGET_CLASS ) ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
style = eina_stringshare_add ( elm_widget_style_get ( obj ) ) ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
snprintf ( buf , sizeof ( buf ) , " fileselector_button/%s " , style ) ;
2011-02-08 04:08:28 -08:00
2012-05-03 15:44:01 -07:00
/* file selector button's style has an extra bit */
2012-11-25 22:32:53 -08:00
eina_stringshare_replace ( & ( wd - > style ) , buf ) ;
2010-04-08 13:36:37 -07:00
2013-03-18 09:07:38 -07:00
eo_do_super ( obj , MY_CLASS , elm_wdg_theme ( & int_ret ) ) ;
2012-11-25 22:32:53 -08:00
if ( ! int_ret ) return ;
2010-04-08 13:36:37 -07:00
2012-11-25 22:32:53 -08:00
eina_stringshare_replace ( & ( wd - > style ) , style ) ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
eina_stringshare_del ( style ) ;
2010-04-08 13:36:37 -07:00
2012-11-25 22:32:53 -08:00
if ( ret ) * ret = EINA_TRUE ;
2010-09-22 10:45:43 -07:00
}
static void
2012-05-03 15:44:01 -07:00
_selection_done ( void * data ,
2010-12-07 11:18:14 -08:00
Evas_Object * obj __UNUSED__ ,
2012-05-03 15:44:01 -07:00
void * event_info )
2010-09-22 10:45:43 -07:00
{
2012-05-03 15:44:01 -07:00
Elm_Fileselector_Button_Smart_Data * sd = data ;
const char * file = event_info ;
Evas_Object * del ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
if ( file ) eina_stringshare_replace ( & sd - > fsd . path , file ) ;
2012-05-02 10:01:20 -07:00
2012-05-03 15:44:01 -07:00
del = sd - > fsw ;
sd - > fs = NULL ;
sd - > fsw = NULL ;
evas_object_del ( del ) ;
evas_object_smart_callback_call
2012-11-25 22:32:53 -08:00
( sd - > obj , SIG_FILE_CHOSEN , ( void * ) file ) ;
2010-04-08 13:36:37 -07:00
}
static Evas_Object *
2012-05-03 15:44:01 -07:00
_new_window_add ( Elm_Fileselector_Button_Smart_Data * sd )
2010-04-08 13:36:37 -07:00
{
Evas_Object * win , * bg ;
win = elm_win_add ( NULL , " fileselector_button " , ELM_WIN_DIALOG_BASIC ) ;
2012-05-03 15:44:01 -07:00
elm_win_title_set ( win , sd - > window_title ) ;
2010-04-08 13:36:37 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
2012-05-03 15:44:01 -07:00
evas_object_smart_callback_add ( win , " delete,request " , _selection_done , sd ) ;
2010-04-08 13:36:37 -07:00
bg = elm_bg_add ( win ) ;
elm_win_resize_object_add ( win , bg ) ;
evas_object_size_hint_weight_set ( bg , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_show ( bg ) ;
2012-05-03 15:44:01 -07:00
evas_object_resize ( win , sd - > w , sd - > h ) ;
2010-04-08 13:36:37 -07:00
return win ;
}
2012-05-03 15:44:01 -07:00
static Evas_Object *
_parent_win_get ( Evas_Object * obj )
{
while ( ( obj ) & & ( strcmp ( elm_widget_type_get ( obj ) , " elm_win " ) ) )
obj = elm_object_parent_widget_get ( obj ) ;
return obj ;
}
2010-04-08 13:36:37 -07:00
static void
2012-05-03 15:44:01 -07:00
_activate ( Elm_Fileselector_Button_Smart_Data * sd )
2010-04-08 13:36:37 -07:00
{
2010-10-19 07:17:14 -07:00
Eina_Bool is_inwin = EINA_FALSE ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fs ) return ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > inwin_mode )
2010-04-08 13:36:37 -07:00
{
2012-11-25 22:32:53 -08:00
sd - > fsw = _parent_win_get ( sd - > obj ) ;
2010-04-08 13:36:37 -07:00
2012-05-03 15:44:01 -07:00
if ( ! sd - > fsw )
sd - > fsw = _new_window_add ( sd ) ;
2010-12-07 11:18:14 -08:00
else
2010-10-19 07:17:14 -07:00
{
2012-05-03 15:44:01 -07:00
sd - > fsw = elm_win_inwin_add ( sd - > fsw ) ;
2010-10-19 07:17:14 -07:00
is_inwin = EINA_TRUE ;
}
2010-04-08 13:36:37 -07:00
}
2010-10-19 07:17:14 -07:00
else
2012-05-03 15:44:01 -07:00
sd - > fsw = _new_window_add ( sd ) ;
sd - > fs = elm_fileselector_add ( sd - > fsw ) ;
elm_widget_mirrored_set
2012-11-25 22:32:53 -08:00
( sd - > fs , elm_widget_mirrored_get ( sd - > obj ) ) ;
2012-05-03 15:44:01 -07:00
elm_widget_mirrored_automatic_set ( sd - > fs , EINA_FALSE ) ;
elm_fileselector_expandable_set ( sd - > fs , sd - > fsd . expandable ) ;
elm_fileselector_folder_only_set ( sd - > fs , sd - > fsd . folder_only ) ;
elm_fileselector_is_save_set ( sd - > fs , sd - > fsd . is_save ) ;
elm_fileselector_selected_set ( sd - > fs , sd - > fsd . path ) ;
evas_object_size_hint_weight_set
( sd - > fs , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
evas_object_size_hint_align_set ( sd - > fs , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
evas_object_smart_callback_add ( sd - > fs , " done " , _selection_done , sd ) ;
evas_object_show ( sd - > fs ) ;
2010-04-08 13:36:37 -07:00
2010-10-19 07:17:14 -07:00
if ( is_inwin )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
elm_win_inwin_content_set ( sd - > fsw , sd - > fs ) ;
elm_win_inwin_activate ( sd - > fsw ) ;
2010-04-08 13:36:37 -07:00
}
else
{
2012-05-03 15:44:01 -07:00
elm_win_resize_object_add ( sd - > fsw , sd - > fs ) ;
evas_object_show ( sd - > fsw ) ;
2010-04-08 13:36:37 -07:00
}
}
static void
2012-05-03 15:44:01 -07:00
_button_clicked ( void * data ,
2010-12-07 11:18:14 -08:00
Evas_Object * obj __UNUSED__ ,
2012-05-03 15:44:01 -07:00
void * event_info __UNUSED__ )
2012-05-02 10:01:20 -07:00
{
2012-05-03 15:44:01 -07:00
_activate ( data ) ;
}
static void
2012-11-25 22:32:53 -08:00
_elm_fileselector_button_smart_add ( Eo * obj , void * _pd , va_list * list EINA_UNUSED )
2012-05-03 15:44:01 -07:00
{
2012-11-25 22:32:53 -08:00
Elm_Fileselector_Button_Smart_Data * priv = _pd ;
2012-05-02 10:01:20 -07:00
2013-03-18 09:07:38 -07:00
eo_do_super ( obj , MY_CLASS , evas_obj_smart_add ( ) ) ;
2012-05-02 10:01:20 -07:00
2013-08-26 08:29:45 -07:00
elm_widget_sub_object_add ( eo_parent_get ( obj ) , obj ) ;
2012-05-03 15:44:01 -07:00
priv - > window_title = eina_stringshare_add ( DEFAULT_WINDOW_TITLE ) ;
if ( getenv ( " HOME " ) ) priv - > fsd . path = eina_stringshare_add ( getenv ( " HOME " ) ) ;
else priv - > fsd . path = eina_stringshare_add ( " / " ) ;
2012-05-02 10:01:20 -07:00
2012-05-03 15:44:01 -07:00
priv - > fsd . expandable = _elm_config - > fileselector_expand_enable ;
priv - > inwin_mode = _elm_config - > inwin_dialogs_enable ;
priv - > w = 400 ;
priv - > h = 400 ;
elm_widget_mirrored_automatic_set ( obj , EINA_FALSE ) ;
evas_object_smart_callback_add ( obj , " clicked " , _button_clicked , priv ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_wdg_theme ( NULL ) ) ;
2012-05-03 15:44:01 -07:00
elm_widget_can_focus_set ( obj , EINA_TRUE ) ;
2010-04-08 13:36:37 -07:00
}
2011-07-04 03:13:59 -07:00
static void
2012-11-25 22:32:53 -08:00
_elm_fileselector_button_smart_del ( Eo * obj , void * _pd , va_list * list EINA_UNUSED )
2011-07-04 03:13:59 -07:00
{
2012-05-03 15:44:01 -07:00
Evas_Object * win ;
2012-05-02 10:01:20 -07:00
2012-11-25 22:32:53 -08:00
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2012-05-03 15:44:01 -07:00
if ( sd - > window_title ) eina_stringshare_del ( sd - > window_title ) ;
if ( sd - > fsd . path ) eina_stringshare_del ( sd - > fsd . path ) ;
if ( sd - > fs )
{
win = evas_object_data_del ( obj , " win " ) ;
evas_object_del ( win ) ;
}
2013-03-18 09:07:38 -07:00
eo_do_super ( obj , MY_CLASS , evas_obj_smart_del ( ) ) ;
2011-07-04 03:13:59 -07:00
}
2012-01-09 00:06:43 -08:00
static void
2012-11-25 22:32:53 -08:00
_elm_fileselector_button_smart_admits_autorepeat_get ( Eo * obj EINA_UNUSED , void * _pd EINA_UNUSED , va_list * list )
2012-08-01 14:04:26 -07:00
{
2012-11-25 22:32:53 -08:00
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
* ret = EINA_FALSE ;
2012-01-09 00:06:43 -08:00
}
2010-04-08 13:36:37 -07:00
EAPI Evas_Object *
elm_fileselector_button_add ( Evas_Object * parent )
{
2012-05-03 15:44:01 -07:00
EINA_SAFETY_ON_NULL_RETURN_VAL ( parent , NULL ) ;
2012-11-25 22:32:53 -08:00
Evas_Object * obj = eo_add ( MY_CLASS , parent ) ;
eo_unref ( obj ) ;
return obj ;
}
2012-05-03 15:44:01 -07:00
2012-11-25 22:32:53 -08:00
static void
_constructor ( Eo * obj , void * _pd , va_list * list EINA_UNUSED )
{
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
sd - > obj = obj ;
2013-03-18 09:07:38 -07:00
eo_do_super ( obj , MY_CLASS , eo_constructor ( ) ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj ,
evas_obj_type_set ( MY_CLASS_NAME ) ,
evas_obj_smart_callbacks_descriptions_set ( _smart_callbacks , NULL ) ) ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_window_title_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
const char * title )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_window_title_set ( title ) ) ;
}
static void
_window_title_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
const char * title = va_arg ( * list , const char * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
eina_stringshare_replace ( & sd - > window_title , title ) ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fsw ) elm_win_title_set ( sd - > fsw , sd - > window_title ) ;
2010-04-08 13:36:37 -07:00
}
EAPI const char *
2010-05-21 12:26:57 -07:00
elm_fileselector_button_window_title_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) NULL ;
2012-11-25 22:32:53 -08:00
const char * ret = NULL ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_window_title_get ( & ret ) ) ;
return ret ;
}
2010-10-11 21:02:47 -07:00
2012-11-25 22:32:53 -08:00
static void
_window_title_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
const char * * ret = va_arg ( * list , const char * * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
* ret = sd - > window_title ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_window_size_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Evas_Coord width ,
Evas_Coord height )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_window_size_set ( width , height ) ) ;
}
static void
_window_size_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Evas_Coord width = va_arg ( * list , Evas_Coord ) ;
Evas_Coord height = va_arg ( * list , Evas_Coord ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
sd - > w = width ;
sd - > h = height ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fsw ) evas_object_resize ( sd - > fsw , sd - > w , sd - > h ) ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_window_size_get ( const Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Evas_Coord * width ,
Evas_Coord * height )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_window_size_get ( width , height ) ) ;
}
static void
_window_size_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Evas_Coord * width = va_arg ( * list , Evas_Coord * ) ;
Evas_Coord * height = va_arg ( * list , Evas_Coord * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
if ( width ) * width = sd - > w ;
if ( height ) * height = sd - > h ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_path_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
const char * path )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_path_set ( path ) ) ;
}
static void
_path_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
const char * path = va_arg ( * list , const char * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
eina_stringshare_replace ( & sd - > fsd . path , path ) ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fs ) elm_fileselector_selected_set ( sd - > fs , sd - > fsd . path ) ;
2010-04-08 13:36:37 -07:00
}
EAPI const char *
2010-05-21 12:26:57 -07:00
elm_fileselector_button_path_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) NULL ;
2012-11-25 22:32:53 -08:00
const char * ret = NULL ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_path_get ( & ret ) ) ;
return ret ;
}
static void
_path_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
const char * * ret = va_arg ( * list , const char * * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2012-05-03 15:44:01 -07:00
2012-11-25 22:32:53 -08:00
* ret = sd - > fsd . path ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_expandable_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Eina_Bool value )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_expandable_set ( value ) ) ;
}
static void
_expandable_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool value = va_arg ( * list , int ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
sd - > fsd . expandable = value ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fs ) elm_fileselector_expandable_set ( sd - > fs , sd - > fsd . expandable ) ;
2010-04-08 13:36:37 -07:00
}
EAPI Eina_Bool
2010-05-21 12:26:57 -07:00
elm_fileselector_button_expandable_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) EINA_FALSE ;
2012-11-25 22:32:53 -08:00
Eina_Bool ret = EINA_FALSE ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_expandable_get ( & ret ) ) ;
return ret ;
}
2010-10-11 21:02:47 -07:00
2012-11-25 22:32:53 -08:00
static void
_expandable_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
* ret = sd - > fsd . expandable ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_folder_only_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Eina_Bool value )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_folder_only_set ( value ) ) ;
}
static void
_folder_only_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool value = va_arg ( * list , int ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
sd - > fsd . folder_only = value ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fs ) elm_fileselector_folder_only_set ( sd - > fs , sd - > fsd . folder_only ) ;
2010-04-08 13:36:37 -07:00
}
EAPI Eina_Bool
2010-05-21 12:26:57 -07:00
elm_fileselector_button_folder_only_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) EINA_FALSE ;
2012-11-25 22:32:53 -08:00
Eina_Bool ret = EINA_FALSE ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_folder_only_get ( & ret ) ) ;
return ret ;
}
2010-10-11 21:02:47 -07:00
2012-11-25 22:32:53 -08:00
static void
_folder_only_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
* ret = sd - > fsd . folder_only ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_is_save_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Eina_Bool value )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_is_save_set ( value ) ) ;
}
static void
_is_save_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool value = va_arg ( * list , int ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
sd - > fsd . is_save = value ;
2010-10-19 07:17:14 -07:00
2012-05-03 15:44:01 -07:00
if ( sd - > fs ) elm_fileselector_is_save_set ( sd - > fs , sd - > fsd . is_save ) ;
2010-04-08 13:36:37 -07:00
}
EAPI Eina_Bool
2010-05-21 12:26:57 -07:00
elm_fileselector_button_is_save_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) EINA_FALSE ;
2012-11-25 22:32:53 -08:00
Eina_Bool ret = EINA_FALSE ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_is_save_get ( & ret ) ) ;
return ret ;
}
static void
_is_save_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-11-25 22:32:53 -08:00
* ret = sd - > fsd . is_save ;
2010-04-08 13:36:37 -07:00
}
EAPI void
2010-12-07 11:18:14 -08:00
elm_fileselector_button_inwin_mode_set ( Evas_Object * obj ,
2012-05-03 15:44:01 -07:00
Eina_Bool value )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) ;
2012-11-25 22:32:53 -08:00
eo_do ( obj , elm_obj_fileselector_button_inwin_mode_set ( value ) ) ;
}
static void
_inwin_mode_set ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool value = va_arg ( * list , int ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
2010-10-11 21:02:47 -07:00
2012-05-03 15:44:01 -07:00
sd - > inwin_mode = value ;
2010-04-08 13:36:37 -07:00
}
EAPI Eina_Bool
2010-05-21 12:26:57 -07:00
elm_fileselector_button_inwin_mode_get ( const Evas_Object * obj )
2010-04-08 13:36:37 -07:00
{
2012-05-03 15:44:01 -07:00
ELM_FILESELECTOR_BUTTON_CHECK ( obj ) EINA_FALSE ;
2012-11-25 22:32:53 -08:00
Eina_Bool ret = EINA_FALSE ;
eo_do ( ( Eo * ) obj , elm_obj_fileselector_button_inwin_mode_get ( & ret ) ) ;
return ret ;
}
static void
_inwin_mode_get ( Eo * obj EINA_UNUSED , void * _pd , va_list * list )
{
Eina_Bool * ret = va_arg ( * list , Eina_Bool * ) ;
Elm_Fileselector_Button_Smart_Data * sd = _pd ;
* ret = sd - > inwin_mode ;
}
2010-10-11 21:02:47 -07:00
2012-11-25 22:32:53 -08:00
static void
_class_constructor ( Eo_Class * klass )
{
const Eo_Op_Func_Description func_desc [ ] = {
EO_OP_FUNC ( EO_BASE_ID ( EO_BASE_SUB_ID_CONSTRUCTOR ) , _constructor ) ,
EO_OP_FUNC ( EVAS_OBJ_SMART_ID ( EVAS_OBJ_SMART_SUB_ID_ADD ) , _elm_fileselector_button_smart_add ) ,
EO_OP_FUNC ( EVAS_OBJ_SMART_ID ( EVAS_OBJ_SMART_SUB_ID_DEL ) , _elm_fileselector_button_smart_del ) ,
EO_OP_FUNC ( ELM_WIDGET_ID ( ELM_WIDGET_SUB_ID_THEME ) , _elm_fileselector_button_smart_theme ) ,
2013-04-23 05:39:21 -07:00
EO_OP_FUNC ( ELM_WIDGET_ID ( ELM_WIDGET_SUB_ID_TRANSLATE ) , _elm_fileselector_button_smart_translate ) ,
2012-11-25 22:32:53 -08:00
EO_OP_FUNC ( ELM_OBJ_BUTTON_ID ( ELM_OBJ_BUTTON_SUB_ID_ADMITS_AUTOREPEAT_GET ) , _elm_fileselector_button_smart_admits_autorepeat_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_TITLE_SET ) , _window_title_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_TITLE_GET ) , _window_title_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_SIZE_SET ) , _window_size_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_SIZE_GET ) , _window_size_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_PATH_SET ) , _path_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_PATH_GET ) , _path_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_EXPANDABLE_SET ) , _expandable_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_EXPANDABLE_GET ) , _expandable_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_FOLDER_ONLY_SET ) , _folder_only_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_FOLDER_ONLY_GET ) , _folder_only_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_IS_SAVE_SET ) , _is_save_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_IS_SAVE_GET ) , _is_save_get ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_INWIN_MODE_SET ) , _inwin_mode_set ) ,
EO_OP_FUNC ( ELM_OBJ_FILESELECTOR_BUTTON_ID ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_INWIN_MODE_GET ) , _inwin_mode_get ) ,
EO_OP_FUNC_SENTINEL
} ;
eo_class_funcs_set ( klass , func_desc ) ;
2013-02-09 23:52:31 -08:00
evas_smart_legacy_type_register ( MY_CLASS_NAME , klass ) ;
2010-04-08 13:36:37 -07:00
}
2012-11-25 22:32:53 -08:00
static const Eo_Op_Description op_desc [ ] = {
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_TITLE_SET , " Set the title for a given file selector button widget's window. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_TITLE_GET , " Get the title for a given file selector button widget's window. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_SIZE_SET , " Set the size of a given file selector button widget's window, holding the file selector itself. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_WINDOW_SIZE_GET , " Get the size of a given file selector button widget's window, holding the file selector itself. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_PATH_SET , " Set the initial file system path for a given file selector button widget. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_PATH_GET , " Get the initial file system path set for a given file selector button widget. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_EXPANDABLE_SET , " Enable/disable a tree view in the given file selector button widget's internal file selector. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_EXPANDABLE_GET , " Get whether tree view is enabled for the given file selector button widget's internal file selector. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_FOLDER_ONLY_SET , " Set whether a given file selector button widget's internal file selector is to display folders only or the directory contents, as well. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_FOLDER_ONLY_GET , " Get whether a given file selector button widget's internal file selector is displaying folders only or the directory contents, as well. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_IS_SAVE_SET , " Enable/disable the file name entry box where the user can type in a name for a file, in a given file selector button widget's internal file selector. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_IS_SAVE_GET , " Get whether the given file selector button widget's internal file selector is in 'saving dialog' mode. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_INWIN_MODE_SET , " Set whether a given file selector button widget's internal file selector will raise an Elementary 'inner window', instead of a dedicated Elementary window. " ) ,
EO_OP_DESCRIPTION ( ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_INWIN_MODE_GET , " Get whether a given file selector button widget's internal file selector will raise an Elementary 'inner window', instead of a dedicated Elementary window. " ) ,
EO_OP_DESCRIPTION_SENTINEL
} ;
static const Eo_Class_Description class_desc = {
EO_VERSION ,
MY_CLASS_NAME ,
EO_CLASS_TYPE_REGULAR ,
EO_CLASS_DESCRIPTION_OPS ( & ELM_OBJ_FILESELECTOR_BUTTON_BASE_ID , op_desc , ELM_OBJ_FILESELECTOR_BUTTON_SUB_ID_LAST ) ,
NULL ,
sizeof ( Elm_Fileselector_Button_Smart_Data ) ,
_class_constructor ,
NULL
} ;
EO_DEFINE_CLASS ( elm_obj_fileselector_button_class_get , & class_desc , ELM_OBJ_BUTTON_CLASS , NULL ) ;