Пример #1
0
Evas_Object *
init_panel_camera_light(Evas_Object *win, Eo *camera_node, Eo *light_node, double posX, double posY)
{
   Evas_Object *nnavig = NULL, *bx_navigall = NULL;
   Evas_Object *bx_navigcamup = NULL, *bx_navigcamlow = NULL, *bx_navigligthup = NULL, *bx_navigligthlow = NULL;
   Evas_Object *spX = NULL, *spY = NULL, *spZ = NULL;
   Evas_Object *spangle = NULL, *spaX = NULL, *spaY = NULL, *spaZ = NULL;
   Evas_Object *splX = NULL, *splY = NULL, *splZ = NULL;
   Evas_Object *splangle = NULL, *splaX = NULL, *splaY = NULL, *splaZ = NULL;
   Evas_Object *separator = NULL;
   Axis_Key *camera_xyz = NULL, *light_xyz = NULL;
   Panel_Struct *pobject = NULL;
   Evas_Real px = 0, py = 0, pz = 0;

   if (ELM_WIN_UNKNOWN == elm_win_type_get(win))
     {
        fprintf(stdout, "Not appropriate parent object - at %s line %d\n", __FILE__, __LINE__);
        return NULL;
     }

   if (!_alloc_memory(&camera_xyz, &pobject, &light_xyz)) return NULL;

   /*Navigation panel layout*/
   bx_navigall = elm_box_add(win);
   elm_box_homogeneous_set(bx_navigall, EINA_TRUE);
   evas_object_show(bx_navigall);

   bx_navigcamup = elm_box_add(win);
   elm_box_horizontal_set(bx_navigcamup, EINA_TRUE);
   elm_box_homogeneous_set(bx_navigcamup, EINA_TRUE);
   elm_box_pack_end(bx_navigall, bx_navigcamup);
   evas_object_show(bx_navigcamup);
   bx_navigcamlow = elm_box_add(win);
   elm_box_horizontal_set(bx_navigcamlow, EINA_TRUE);
   elm_box_homogeneous_set(bx_navigcamlow, EINA_TRUE);
   elm_box_pack_end(bx_navigall, bx_navigcamlow);
   evas_object_show(bx_navigcamlow);

   separator = elm_separator_add(win);
   elm_separator_horizontal_set(separator, EINA_TRUE);
   elm_box_pack_end(bx_navigall, separator);
   evas_object_show(separator);

   bx_navigligthup = elm_box_add(win);
   elm_box_horizontal_set(bx_navigligthup, EINA_TRUE);
   elm_box_homogeneous_set(bx_navigligthup, EINA_TRUE);
   elm_box_pack_end(bx_navigall, bx_navigligthup);
   evas_object_show(bx_navigligthup);
   bx_navigligthlow = elm_box_add(win);
   elm_box_horizontal_set(bx_navigligthlow, EINA_TRUE);
   elm_box_homogeneous_set(bx_navigligthlow, EINA_TRUE);
   elm_box_pack_end(bx_navigall, bx_navigligthlow);
   evas_object_show(bx_navigligthlow);

   /*Set UI panel for changing camera and light*/
   /*Init sp camera by default*/
   spX = elm_spinner_add(win);
   elm_spinner_editable_set(spX, EINA_TRUE);
   elm_spinner_min_max_set(spX, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(spX, "camera X: %1.0f");
   elm_spinner_step_set(spX, 1.0);
   pobject->cspX = spX;
   elm_box_pack_end(bx_navigcamup, spX);
   evas_object_show(spX);
   evas_object_smart_callback_add(spX, "changed", _camera_light_changeX_cb, camera_node);

   spY = elm_spinner_add(win);
   elm_spinner_editable_set(spY, EINA_TRUE);
   elm_spinner_min_max_set(spY, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(spY, "camera Y: %1.0f");
   elm_spinner_step_set(spY, 1.0);
   pobject->cspY = spY;
   elm_box_pack_end(bx_navigcamup, spY);
   evas_object_show(spY);
   evas_object_smart_callback_add(spY, "changed", _camera_light_changeY_cb, camera_node);

   spZ = elm_spinner_add(win);
   elm_spinner_editable_set(spZ, EINA_TRUE);
   elm_spinner_min_max_set(spZ, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(spZ, "camera Z: %1.0f");
   elm_spinner_step_set(spY, 1.0);
   pobject->cspZ = spZ;
   elm_box_pack_end(bx_navigcamup, spZ);
   evas_object_show(spZ);
   evas_object_smart_callback_add(spZ, "changed", _camera_light_changeZ_cb, camera_node);

   eo_do(camera_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz));
   elm_spinner_value_set(spX, px);
   elm_spinner_value_set(spY, py);
   elm_spinner_value_set(spZ, pz);

   spangle = elm_spinner_add(win);
   elm_spinner_editable_set(spangle, EINA_TRUE);
   elm_spinner_min_max_set(spangle, 0.0, ANGLERANGE);
   elm_spinner_label_format_set(spangle, "angle: %1.0f");
   elm_spinner_step_set(spangle, 1.0);
   pobject->cspangle = spangle;
   evas_object_data_set(spangle, axiskeys, camera_xyz);
   elm_box_pack_end(bx_navigcamlow, spangle);
   elm_spinner_value_set(spangle, 0.0);
   evas_object_show(spangle);
   evas_object_smart_callback_add(spangle, "changed", _camera_light_angle_change_cb, camera_node);

   spaX = elm_spinner_add(win);
   elm_spinner_min_max_set(spaX, 0.0, 1.0);
   elm_spinner_label_format_set(spaX, "axisX: %1.0f");
   elm_spinner_step_set(spaX, 1.0);
   elm_box_pack_end(bx_navigcamlow, spaX);
   evas_object_show(spaX);
   evas_object_smart_callback_add(spaX, "changed", _camera_light_axisX_change_cb, spangle);

   spaY = elm_spinner_add(win);
   elm_spinner_min_max_set(spaY, 0.0, 1.0);
   elm_spinner_label_format_set(spaY, "axisY: %1.0f");
   elm_spinner_step_set(spaY, 1.0);
   elm_box_pack_end(bx_navigcamlow, spaY);
   evas_object_show(spaY);
   evas_object_smart_callback_add(spaY, "changed", _camera_light_axisY_change_cb, spangle);

   spaZ = elm_spinner_add(win);
   elm_spinner_min_max_set(spaZ, 0.0, 1.0);
   elm_spinner_label_format_set(spaZ, "axisZ: %1.0f");
   elm_spinner_step_set(spaZ, 1.0);
   elm_box_pack_end(bx_navigcamlow, spaZ);
   evas_object_show(spaZ);
   evas_object_smart_callback_add(spaZ, "changed", _camera_light_axisZ_change_cb, spangle);

   /*Init spl light by default*/
   splX = elm_spinner_add(win);
   elm_spinner_editable_set(splX, EINA_TRUE);
   elm_spinner_min_max_set(splX, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(splX, "light X: %1.0f");
   elm_spinner_step_set(splX, 1.0);
   pobject->lspX = splX;
   elm_box_pack_end(bx_navigligthup, splX);
   evas_object_show(splX);
   evas_object_smart_callback_add(splX, "changed", _camera_light_changeX_cb, light_node);

   splY = elm_spinner_add(win);
   elm_spinner_editable_set(splY, EINA_TRUE);
   elm_spinner_min_max_set(splY, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(splY, "light Y: %1.0f");
   elm_spinner_step_set(splY, 1.0);
   pobject->lspY = splY;
   elm_box_pack_end(bx_navigligthup, splY);
   evas_object_show(splY);
   evas_object_smart_callback_add(splY, "changed", _camera_light_changeY_cb, light_node);

   splZ = elm_spinner_add(win);
   elm_spinner_editable_set(splZ, EINA_TRUE);
   elm_spinner_min_max_set(splZ, -COORDRANGE, COORDRANGE);
   elm_spinner_label_format_set(splZ, "light Z: %1.0f");
   elm_spinner_step_set(splY, 1.0);
   pobject->lspZ = splZ;
   elm_box_pack_end(bx_navigligthup, splZ);
   evas_object_show(splZ);
   evas_object_smart_callback_add(splZ, "changed", _camera_light_changeZ_cb, light_node);

   eo_do(light_node, evas_canvas3d_node_position_get(EVAS_CANVAS3D_SPACE_PARENT, &px, &py, &pz));
   elm_spinner_value_set(splX, px);
   elm_spinner_value_set(splY, py);
   elm_spinner_value_set(splZ, pz);

   splangle = elm_spinner_add(win);
   elm_spinner_editable_set(splangle, EINA_TRUE);
   elm_spinner_min_max_set(splangle, 0.0, ANGLERANGE);
   elm_spinner_label_format_set(splangle, "angle: %1.0f");
   elm_spinner_step_set(splangle, 1.0);
   pobject->lspangle = splangle;
   evas_object_data_set(splangle, axiskeys, light_xyz);
   elm_box_pack_end(bx_navigligthlow, splangle);
   elm_spinner_value_set(splangle, 0.0);
   evas_object_show(splangle);
   evas_object_smart_callback_add(splangle, "changed", _camera_light_angle_change_cb, light_node);

   splaX = elm_spinner_add(win);
   elm_spinner_min_max_set(splaX, 0.0, 1.0);
   elm_spinner_label_format_set(splaX, "axisX: %1.0f");
   elm_spinner_step_set(splaX, 1.0);
   elm_box_pack_end(bx_navigligthlow, splaX);
   evas_object_show(splaX);
   evas_object_smart_callback_add(splaX, "changed", _camera_light_axisX_change_cb, splangle);

   splaY = elm_spinner_add(win);
   elm_spinner_min_max_set(splaY, 0.0, 1.0);
   elm_spinner_label_format_set(splaY, "axisY: %1.0f");
   elm_spinner_step_set(splaY, 1.0);
   elm_box_pack_end(bx_navigligthlow, splaY);
   evas_object_show(splaY);
   evas_object_smart_callback_add(splaY, "changed", _camera_light_axisY_change_cb, splangle);

   splaZ = elm_spinner_add(win);
   elm_spinner_min_max_set(splaZ, 0.0, 1.0);
   elm_spinner_label_format_set(splaZ, "axisZ: %1.0f");
   elm_spinner_step_set(splaZ, 1.0);
   elm_box_pack_end(bx_navigligthlow, splaZ);
   evas_object_show(splaZ);
   evas_object_smart_callback_add(spaZ, "changed", _camera_light_axisZ_change_cb, splangle);

   nnavig = elm_notify_add(win);
   elm_object_content_set(nnavig, bx_navigall);
   elm_notify_align_set(nnavig, posX, posY);
   evas_object_data_set(nnavig, pb, pobject);

   return nnavig;
}
Пример #2
0
static Eina_Bool
_e_elm_win_trap_show(void *data, Evas_Object *o)
{
   Elm_Win_Trap_Ctx *ctx = data;
   Evas *e = evas_object_evas_get(o);
   Ecore_Evas *ee = ecore_evas_ecore_evas_get(e);
   Eina_Bool borderless;

   EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_TRUE);
   borderless = elm_win_borderless_get(o);
   if (!ctx->client)
     {
        E_Client *ec;
        Ecore_Window win;
#ifdef HAVE_WAYLAND
        int64_t wl_win_id = -1;
#endif
        E_Pixmap_Type type = E_PIXMAP_TYPE_X;

        win = elm_win_window_id_get(o);
#ifdef HAVE_WAYLAND
        if (!strncmp(ecore_evas_engine_name_get(ee), "wayland", 7))
          {
             Ecore_Wl2_Window *ewin = elm_win_wl_window_get(o);

             type = E_PIXMAP_TYPE_WL;
             ecore_evas_object_cursor_set(ee, NULL, 0, 0, 0);
             ctx->pointer = e_comp->pointer;
             elm_win_borderless_set(o, 1);
             wl_win_id = ecore_wl2_window_surface_id_get(ewin);
          }
        else
#endif
          {
             type = E_PIXMAP_TYPE_X;
             ctx->pointer = e_pointer_window_new(win, EINA_TRUE);
          }

        if (type == E_PIXMAP_TYPE_WL)
          ec = e_pixmap_find_client(type, (int64_t)win);
        else
          ec = e_pixmap_find_client(type, win);

        if (ec)
          ctx->client = ec;
        else
          {
             E_Pixmap *cp;
             const char *title, *name, *clas;

             ecore_evas_name_class_get(ee, &name, &clas);
             if (!name) name = "E";
             if (!clas) clas = "_e_internal_window";
             ecore_evas_name_class_set(ee, name, clas);
             title = elm_win_title_get(o);
             if ((!title) || (!title[0]))
               title = "E";
             ecore_evas_title_set(ee, title);

             if (type == E_PIXMAP_TYPE_WL)
               cp = e_pixmap_new(type, (int64_t)win);
             else
               cp = e_pixmap_new(type, win);

             EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_TRUE);
#ifdef HAVE_WAYLAND
             if (wl_win_id >= 0)
               e_pixmap_alias(cp, type, wl_win_id);
#endif

             current_win = ctx;
             ctx->client = e_client_new(cp, 0, 1);
             current_win = NULL;
             EINA_SAFETY_ON_NULL_RETURN_VAL(ctx->client, EINA_TRUE);
             eina_stringshare_replace(&ctx->client->icccm.name, name);
             eina_stringshare_replace(&ctx->client->icccm.class, clas);
             eina_stringshare_replace(&ctx->client->icccm.title, title);
          }
        ctx->client->placed = ctx->placed | ctx->centered;
        ctx->client->internal_no_remember = ctx->internal_no_remember;
        ctx->client->internal_no_reopen = ctx->internal_no_reopen;
        ctx->client->internal_elm_win = o;
        elm_win_autodel_set(o, 1);
        evas_object_data_set(o, "E_Client", ctx->client);
        ctx->client->dialog = elm_win_type_get(o) == ELM_WIN_DIALOG_BASIC;
        ctx->client->tooltip = elm_win_type_get(o) == ELM_WIN_TOOLTIP;

        evas_object_size_hint_min_get(o, &ctx->client->icccm.min_w, &ctx->client->icccm.min_h);
        ctx->client->icccm.min_w = MAX(ctx->client->icccm.min_w, 0);
        ctx->client->icccm.min_h = MAX(ctx->client->icccm.min_h, 0);
        evas_object_size_hint_max_get(o, &ctx->client->icccm.max_w, &ctx->client->icccm.max_h);
        ctx->client->icccm.max_w = MAX(ctx->client->icccm.max_w, 0);
        ctx->client->icccm.max_h = MAX(ctx->client->icccm.max_h, 0);
     }