On Mon, May 20, 2013 at 10:45 PM, Tom Hacohen - Enlightenment Git
<no-re...@enlightenment.org> wrote:
> tasn pushed a commit to branch master.
>
> commit f4d5732ff90e9b7952165af870804261b6f3e8b0
> Author: Tom Hacohen <t...@stosb.com>
> Date:   Mon May 20 13:03:43 2013 +0100
>
>     Made clouseau_enable an elm_config option.
>
>     You can now just use elementary_config to enable and disable clouseau on
>     run-time.
> ---
>  src/bin/config.c     | 51 ++++++++++++++++++++++++++++++++++++++++++
>  src/lib/elm_config.c | 21 ++++++++++++++++++
>  src/lib/elm_config.h | 16 ++++++++++++++
>  src/lib/elm_main.c   | 62 
> +++++++++++++++++++++++++++++++++-------------------
>  src/lib/elm_priv.h   |  2 ++
>  5 files changed, 129 insertions(+), 23 deletions(-)
>
> diff --git a/src/bin/config.c b/src/bin/config.c
> index a4d4177..7586012 100644
> --- a/src/bin/config.c
> +++ b/src/bin/config.c
> @@ -763,6 +763,20 @@ sel_change(void *data       __UNUSED__,
>  }
>
>  static void
> +dbg_change(void *data       __UNUSED__,
> +          Evas_Object     *obj,
> +          void *event_info __UNUSED__)
> +{
> +   Eina_Bool val = elm_check_state_get(obj);
> +   Eina_Bool sel = elm_config_clouseau_enable_get();
> +
> +   if (val == sel) return;
> +   elm_config_clouseau_enable_set(val);
> +   elm_config_all_flush();
> +   elm_config_save();
> +}
> +
> +static void
>  _status_basic(Evas_Object *win,
>                Evas_Object *bx0)
>  {
> @@ -928,6 +942,14 @@ _cf_selection(void            *data,
>     _flip_to(data, "selection");
>  }
>
> +static void
> +_cf_debug(void            *data,
> +           Evas_Object *obj __UNUSED__,
> +           void *event_info __UNUSED__)
> +{
> +   _flip_to(data, "debug");
> +}
> +
>  const char *
>  _elm_theme_current_get(const char *theme_search_order)
>  {
> @@ -1492,6 +1514,33 @@ _status_config_selection(Evas_Object *win,
>     elm_naviframe_item_simple_push(naviframe, bx);
>  }
>
> +static void
> +_status_config_debug(Evas_Object *win,
> +                      Evas_Object *naviframe)
> +{
> +   Evas_Object *bx, *ck;
> +
> +   bx = elm_box_add(win);
> +   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
> +   evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
> +
> +   ck = elm_check_add(win);
> +   elm_object_tooltip_text_set(ck, "Set clouseau mode");
> +   elm_object_text_set(ck, "Enable clouseau");
> +   evas_object_data_set(win, "clouseau_check", ck);
> +   evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
> +   evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
> +   elm_check_state_set(ck, elm_config_clouseau_enable_get());
> +   elm_box_pack_end(bx, ck);
> +   evas_object_show(ck);
> +
> +   evas_object_smart_callback_add(ck, "changed", dbg_change, NULL);
> +
> +   evas_object_data_set(win, "debug", bx);
> +
> +   elm_naviframe_item_simple_push(naviframe, bx);
> +}
> +
>  static Evas_Object *
>  _sample_theme_new(Evas_Object *win)
>  {
> @@ -3391,6 +3440,7 @@ _status_config_full(Evas_Object *win,
>     elm_toolbar_item_append(tb, "appointment-new", "Caches", _cf_caches, win);
>     elm_toolbar_item_append(tb, "stock_spellcheck", "Access", _cf_access, 
> win);
>     elm_toolbar_item_append(tb, "clear-selection-check", "Selection", 
> _cf_selection, win);
> +   elm_toolbar_item_append(tb, "preferences-other", "Debug", _cf_debug, win);
>
>     elm_box_pack_end(bx0, tb);
>     evas_object_show(tb);
> @@ -3408,6 +3458,7 @@ _status_config_full(Evas_Object *win,
>     _status_config_caches(win, naviframe);
>     _status_config_access(win, naviframe);
>     _status_config_selection(win, naviframe);
> +   _status_config_debug(win, naviframe);
>     _status_config_sizing(win, naviframe); // Note: call this at the end.
>
>     // FIXME uncomment after flip style fix, please
> diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c
> index 6f16915..aee702e 100644
> --- a/src/lib/elm_config.c
> +++ b/src/lib/elm_config.c
> @@ -187,6 +187,7 @@ _prop_config_get(void)
>     _elm_config_font_overlay_apply();
>     _elm_rescale();
>     _elm_recache();
> +   _elm_clouseau_reload();
>     _elm_win_access(_elm_config->access_mode);
>     ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
>     return EINA_TRUE;
> @@ -434,6 +435,7 @@ _desc_init(void)
>     ELM_CONFIG_VAL(D, T, indicator_service_180, T_STRING);
>     ELM_CONFIG_VAL(D, T, indicator_service_270, T_STRING);
>     ELM_CONFIG_VAL(D, T, disable_external_menu, T_UCHAR);
> +   ELM_CONFIG_VAL(D, T, clouseau_enable, T_UCHAR);
>  #undef T
>  #undef D
>  #undef T_INT
> @@ -1700,6 +1702,9 @@ _env_get(void)
>     if (s) eina_stringshare_replace(&_elm_config->indicator_service_270, s);
>     s = getenv("ELM_DISABLE_EXTERNAL_MENU");
>     if (s) _elm_config->disable_external_menu = !!atoi(s);
> +
> +   s = getenv("ELM_CLOUSEAU");
> +   if (s) _elm_config->clouseau_enable = atoi(s);
>  }
>
>  EAPI Eina_Bool
> @@ -2297,6 +2302,19 @@ elm_config_disable_external_menu_set(Eina_Bool disable)
>     _elm_config->disable_external_menu = !!disable;
>  }
>
> +EAPI Eina_Bool
> +elm_config_clouseau_enable_get(void)
> +{
> +   return _elm_config->clouseau_enable;
> +}
> +
> +EAPI void
> +elm_config_clouseau_enable_set(Eina_Bool enable)
> +{
> +   _elm_config->clouseau_enable = !!enable;
> +   _elm_clouseau_reload();
> +}
> +
>  EAPI void
>  elm_config_all_flush(void)
>  {
> @@ -2348,6 +2366,7 @@ _elm_config_init(void)
>     _config_apply();
>     _elm_config_font_overlay_apply();
>     _elm_recache();
> +   _elm_clouseau_reload();
>  }
>
>  void
> @@ -2439,6 +2458,7 @@ _elm_config_reload(void)
>     _elm_config_font_overlay_apply();
>     _elm_rescale();
>     _elm_recache();
> +   _elm_clouseau_reload();
>     ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL);
>  }
>
> @@ -2510,6 +2530,7 @@ _elm_config_profile_set(const char *profile)
>          _elm_config_font_overlay_apply();
>          _elm_rescale();
>          _elm_recache();
> +        _elm_clouseau_reload();
>       }
>  }
>
> diff --git a/src/lib/elm_config.h b/src/lib/elm_config.h
> index 71efd19..ec33f79 100644
> --- a/src/lib/elm_config.h
> +++ b/src/lib/elm_config.h
> @@ -1165,6 +1165,22 @@ EAPI Eina_Bool elm_config_mirrored_get(void);
>  EAPI void      elm_config_mirrored_set(Eina_Bool mirrored);
>
>  /**
> + * Get the clouseau state. EINA_TRUE if clouseau was tried to be run.
> + *
> + * @since 1.8
> + * @return EINA_TRUE if clouseau was tried to run, EINA_FALSE otherwise
> + */
> +EAPI Eina_Bool elm_config_clouseau_enable_get(void);

Great patch tom!
Btw, how about elm_config_clouseau_enabled_set/get() for consistency?
All other elm apis look like elm_xxx_enabled_set/get().

Thanks.

Daniel Juyung Seo (SeoZ)

> +
> +/**
> + * Get the clouseau state. EINA_TRUE if clouseau should be attempted to be 
> run.
> + *
> + * @since 1.8
> + * @param enabled EINA_TRUE to try and run clouseau, EINA_FALSE otherwise.
> + */
> +EAPI void      elm_config_clouseau_enable_set(Eina_Bool enabled);
> +
> +/**
>   * Get the indicator service name according to the rotation degree.
>   *
>   * @param rotation The rotation which related with the indicator service 
> name, in degrees (0-360),
> diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c
> index 1ee5e22..2ed2115 100644
> --- a/src/lib/elm_main.c
> +++ b/src/lib/elm_main.c
> @@ -209,6 +209,7 @@ static struct {
>       void (*init)(void);
>       void (*shutdown)(void);
>       Eina_Bool (*app_connect)(const char *appname);
> +     Eina_Bool is_init;
>  } _clouseau_info;
>
>  #define _CLOUSEAU_LOAD_SYMBOL(cls_struct, sym) \
> @@ -225,16 +226,37 @@ static struct {
>       } \
>     while (0)
>
> -static Eina_Bool
> -_clouseau_module_load()
> +static void
> +_elm_clouseau_unload()
> +{
> +   if (!_clouseau_info.is_init)
> +      return;
> +
> +   if (_clouseau_info.shutdown)
> +     {
> +        _clouseau_info.shutdown();
> +     }
> +
> +   if (_clouseau_info.handle)
> +     {
> +        eina_module_free(_clouseau_info.handle);
> +        _clouseau_info.handle = NULL;
> +     }
> +
> +   _clouseau_info.is_init = EINA_FALSE;
> +}
> +
> +Eina_Bool
> +_elm_clouseau_reload()
>  {
> -   const char *elm_clouseau_env = getenv("ELM_CLOUSEAU");
> -   Eina_Bool want_cls = EINA_FALSE;
> -   if (elm_clouseau_env)
> -      want_cls = atoi(elm_clouseau_env);
> +   if (!_elm_config->clouseau_enable)
> +     {
> +        _elm_clouseau_unload();
> +        return EINA_TRUE;
> +     }
>
> -   if (!want_cls)
> -      return EINA_FALSE;
> +   if (_clouseau_info.is_init)
> +      return EINA_TRUE;
>
>     _clouseau_info.handle = eina_module_new(
>           PACKAGE_LIB_DIR "/libclouseau" LIBEXT);
> @@ -250,6 +272,14 @@ _clouseau_module_load()
>     _CLOUSEAU_LOAD_SYMBOL(_clouseau_info, shutdown);
>     _CLOUSEAU_LOAD_SYMBOL(_clouseau_info, app_connect);
>
> +   _clouseau_info.init();
> +   if(!_clouseau_info.app_connect(elm_app_name_get()))
> +     {
> +        ERR("Failed connecting to the clouseau server.");
> +     }
> +
> +   _clouseau_info.is_init = EINA_TRUE;
> +
>     return EINA_TRUE;
>  }
>
> @@ -263,15 +293,6 @@ elm_init(int    argc,
>     elm_quicklaunch_sub_init(argc, argv);
>     _prefix_shutdown();
>
> -   if (_clouseau_module_load())
> -     {
> -        _clouseau_info.init();
> -        if(!_clouseau_info.app_connect(elm_app_name_get()))
> -          {
> -             ERR("Failed connecting to the clouseau server.");
> -          }
> -     }
> -
>     return _elm_init_count;
>  }
>
> @@ -288,12 +309,7 @@ elm_shutdown(void)
>     _elm_win_shutdown();
>     while (_elm_win_deferred_free) ecore_main_loop_iterate();
>
> -   if (_clouseau_info.shutdown)
> -     {
> -        _clouseau_info.shutdown();
> -        eina_module_free(_clouseau_info.handle);
> -        _clouseau_info.handle = NULL;
> -     }
> +   _elm_clouseau_unload();
>  // wrningz :(
>  //   _prefix_shutdown();
>     if (app_name)
> diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h
> index 969b67d..5d5b5fc 100644
> --- a/src/lib/elm_priv.h
> +++ b/src/lib/elm_priv.h
> @@ -239,6 +239,7 @@ struct _Elm_Config
>     const char   *indicator_service_270;
>     unsigned char selection_clear_enable;
>     unsigned char disable_external_menu;
> +   unsigned char clouseau_enable;
>
>     /* Not part of the EET file */
>     Eina_Bool     is_mirrored : 1;
> @@ -338,6 +339,7 @@ void                 _elm_unneed_ethumb(void);
>  void                 _elm_unneed_web(void);
>
>  void                 _elm_rescale(void);
> +Eina_Bool            _elm_clouseau_reload(void);
>
>  void                 _elm_config_init(void);
>  void                 _elm_config_sub_init(void);
>
> --
>
> ------------------------------------------------------------------------------
> AlienVault Unified Security Management (USM) platform delivers complete
> security visibility with the essential security capabilities. Easily and
> efficiently configure, manage, and operate all of your security controls
> from a single console and one unified framework. Download a free trial.
> http://p.sf.net/sfu/alienvault_d2d

------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to