efl

Форк
0
197 строк · 5.7 Кб
1
#include "private.h"
2
#include <assert.h>
3

4
typedef struct _Elm_Params_Panes Elm_Params_Panes;
5

6
struct _Elm_Params_Panes {
7
   Elm_Params base;
8
   Evas_Object *content_left;
9
   Evas_Object *content_right;
10
   Eina_Bool is_horizontal;
11
   Eina_Bool horizontal;
12
   Eina_Bool is_left_size;
13
   double left_size;
14
   Eina_Bool is_fixed;
15
   Eina_Bool fixed;
16
};
17

18
static void external_panes_state_set(void *data EINA_UNUSED,
19
      Evas_Object *obj, const void *from_params,
20
      const void *to_params, float pos EINA_UNUSED)
21
{
22
   const Elm_Params_Panes *p;
23

24
   if (to_params) p = to_params;
25
   else if (from_params) p = from_params;
26
   else return;
27

28
   if (p->content_left)
29
     elm_object_part_content_set(obj, "left", p->content_left);
30

31
   if (p->content_right)
32
     elm_object_part_content_set(obj, "right", p->content_right);
33

34
   if (p->is_left_size)
35
     elm_panes_content_left_size_set(obj, p->left_size);
36

37
   if (p->is_horizontal)
38
     elm_panes_horizontal_set(obj, p->horizontal);
39

40
   if (p->is_fixed)
41
     elm_panes_fixed_set(obj, p->fixed);
42
}
43

44
static Eina_Bool external_panes_param_set(void *data EINA_UNUSED,
45
      Evas_Object *obj, const Edje_External_Param *param)
46
{
47
   if ((!strcmp(param->name, "content left"))
48
       && (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING))
49
   {
50
      Evas_Object *content = external_common_param_elm_layout_get(obj, param);
51
      if ((strcmp(param->s, "")) && (!content))
52
         return EINA_FALSE;
53
      elm_object_part_content_set(obj, "left", content);
54
      return EINA_TRUE;
55
   }
56
   else if ((!strcmp(param->name, "content right"))
57
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING))
58
   {
59
      Evas_Object *content = external_common_param_elm_layout_get(obj, param);
60
      if ((strcmp(param->s, "")) && (!content))
61
        return EINA_FALSE;
62
      elm_object_part_content_set(obj, "right", content);
63
      return EINA_TRUE;
64
   }
65
   else if ((!strcmp(param->name, "horizontal"))
66
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
67
   {
68
      elm_panes_horizontal_set(obj, param->i);
69
      return EINA_TRUE;
70
   }
71
   else if ((!strcmp(param->name, "left size"))
72
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE))
73
   {
74
      elm_panes_content_left_size_set(obj, param->d);
75
      return EINA_TRUE;
76
   }
77
   else if ((!strcmp(param->name, "fixed"))
78
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
79
   {
80
      elm_panes_fixed_set(obj, param->i);
81
      return EINA_TRUE;
82
   }
83

84
   ERR("unknown parameter '%s' of type '%s'",
85
         param->name, edje_external_param_type_str(param->type));
86

87
   return EINA_FALSE;
88
}
89

90
static Eina_Bool
91
external_panes_param_get(void *data EINA_UNUSED, const Evas_Object *obj,
92
                         Edje_External_Param *param)
93
{
94
   if (!strcmp(param->name, "content left"))
95
     {
96
        /* not easy to get content name back from live object */
97
        return EINA_FALSE;
98
     }
99
   else if (!strcmp(param->name, "content right"))
100
     {
101
        /* not easy to get content name back from live object */
102
        return EINA_FALSE;
103
     }
104
   else if ((!strcmp(param->name, "horizontal"))
105
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
106
     {
107
        param->i = elm_panes_horizontal_get(obj);
108
        return EINA_TRUE;
109
     }
110
   else if ((!strcmp(param->name, "left size"))
111
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE))
112
     {
113
        param->d = elm_panes_content_left_size_get(obj);
114
        return EINA_TRUE;
115
     }
116
   else if ((!strcmp(param->name, "fixed"))
117
            && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
118
     {
119
        param->i = elm_panes_fixed_get(obj);
120
        return EINA_TRUE;
121
     }
122

123
   ERR("unknown parameter '%s' of type '%s'",
124
       param->name, edje_external_param_type_str(param->type));
125

126
   return EINA_FALSE;
127
}
128

129
static void *
130
external_panes_params_parse(void *data EINA_UNUSED, Evas_Object *obj,
131
                            const Eina_List *params)
132
{
133
   Elm_Params_Panes *mem;
134
   Edje_External_Param *param;
135
   const Eina_List *l;
136

137
   mem = calloc(1, sizeof(Elm_Params_Panes));
138
   if (!mem)
139
     return NULL;
140

141
   EINA_LIST_FOREACH(params, l, param)
142
     {
143
        if (!strcmp(param->name, "content left"))
144
          mem->content_left = external_common_param_elm_layout_get(obj, param);
145
        else if (!strcmp(param->name, "content right"))
146
          mem->content_right = external_common_param_elm_layout_get(obj, param);
147
        else if (!strcmp(param->name, "horizontal"))
148
          {
149
             mem->is_horizontal = EINA_TRUE;
150
             mem->horizontal = param->i;
151
          }
152
        else if (!strcmp(param->name, "left size"))
153
          {
154
             mem->is_left_size = EINA_TRUE;
155
             mem->left_size = param->d;
156
          }
157
        else if (!strcmp(param->name, "fixed"))
158
          {
159
             mem->is_fixed = EINA_TRUE;
160
             mem->fixed = param->i;
161
          }
162
     }
163

164
   return mem;
165
}
166

167
static Evas_Object *
168
external_panes_content_get(void *data EINA_UNUSED, const Evas_Object *obj,
169
                           const char *content)
170
{
171
   if (!strcmp(content, "left"))
172
     return elm_object_part_content_get(obj, "left");
173
   else if (!strcmp(content, "right"))
174
     return elm_object_part_content_get(obj, "right");
175

176
   ERR("unknown content '%s'", content);
177

178
   return NULL;
179
}
180

181
static void external_panes_params_free(void *params)
182
{
183
   free(params);
184
}
185

186
static Edje_External_Param_Info external_panes_params[] = {
187
   DEFINE_EXTERNAL_COMMON_PARAMS,
188
   EDJE_EXTERNAL_PARAM_INFO_STRING("content left"),
189
   EDJE_EXTERNAL_PARAM_INFO_STRING("content right"),
190
   EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal"),
191
   EDJE_EXTERNAL_PARAM_INFO_DOUBLE("left size"),
192
   EDJE_EXTERNAL_PARAM_INFO_BOOL("fixed"),
193
   EDJE_EXTERNAL_PARAM_INFO_SENTINEL
194
};
195

196
DEFINE_EXTERNAL_ICON_ADD(panes, "panes");
197
DEFINE_EXTERNAL_TYPE_SIMPLE(panes, "Panes");
198

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.