New 1.17 API: elm.Ctxpopup "geometry,update" smart cb

This commit is contained in:
Davide Andreoli 2016-01-23 14:33:01 +01:00
parent 9809eb2739
commit 86aa8c5138
5 changed files with 34 additions and 3 deletions

View File

@ -28,6 +28,8 @@ Emitted signals
4. the parent object is resized due to the window rotation. Then ctxpopup is 4. the parent object is resized due to the window rotation. Then ctxpopup is
dismissed. dismissed.
- ``geometry,update`` - The geometry has changed (since 1.17)
Layout content parts Layout content parts
==================== ====================

View File

@ -21,7 +21,7 @@ from libc.string cimport memcpy, strdup
from libc.stdlib cimport malloc, free from libc.stdlib cimport malloc, free
from libc.stdint cimport uintptr_t from libc.stdint cimport uintptr_t
from efl.evas cimport Object as evasObject from efl.evas cimport Object as evasObject, Evas_Coord_Rectangle, Rect
from efl.utils.conversions cimport _touni, _ctouni, \ from efl.utils.conversions cimport _touni, _ctouni, \
python_list_strings_to_eina_list, eina_list_strings_to_python_list python_list_strings_to_eina_list, eina_list_strings_to_python_list
@ -599,6 +599,10 @@ cdef object _cb_string_conv(void *addr):
cdef object _cb_object_item_conv(void *addr): cdef object _cb_object_item_conv(void *addr):
return _object_item_to_python(<Elm_Object_Item *>addr) return _object_item_to_python(<Elm_Object_Item *>addr)
cdef object _cb_rectangle_conv(void *addr):
cdef Evas_Coord_Rectangle *geom = <Evas_Coord_Rectangle *>addr
return Rect(geom.x, geom.y, geom.w, geom.h)
#include "access.pxi" #include "access.pxi"
include "actionslider.pxi" include "actionslider.pxi"

View File

@ -395,5 +395,16 @@ cdef class Ctxpopup(LayoutClass):
def callback_dismissed_del(self, func): def callback_dismissed_del(self, func):
self._callback_del("dismissed", func) self._callback_del("dismissed", func)
def callback_geometry_update_add(self, func, *args, **kwargs):
"""the ctxpopup geometry has changed
.. versionadded:: 1.17
"""
self._callback_add_full("geometry,update", _cb_rectangle_conv, func, args, kwargs)
def callback_geometry_update_del(self, func):
self._callback_del_full("geometry,update", _cb_rectangle_conv, func)
_object_mapping_register("Elm_Ctxpopup", Ctxpopup) _object_mapping_register("Elm_Ctxpopup", Ctxpopup)

View File

@ -47,8 +47,12 @@ def cb_dismissed(cp):
if "img" in cp.data: if "img" in cp.data:
cp.data["img"].delete() cp.data["img"].delete()
def cb_geometry_update(cp, geom):
print("geometry,update", geom)
def cb_item1(li, item): def cb_item1(li, item):
cp = Ctxpopup(li) cp = Ctxpopup(li)
cp.callback_geometry_update_add(cb_geometry_update)
it = item_new(cp, "Go to home folder", "home") it = item_new(cp, "Go to home folder", "home")
it = item_new(cp, "Save file", "file") it = item_new(cp, "Save file", "file")
it = item_new(cp, "Delete file", "delete") it = item_new(cp, "Delete file", "delete")

View File

@ -347,11 +347,21 @@ cdef extern from "Evas.h":
int x int x
int y int y
ctypedef struct Evas_Coord_Point: # Evas_Coord is int now ctypedef struct Evas_Coord_Point:
Evas_Coord x Evas_Coord x
Evas_Coord y Evas_Coord y
ctypedef struct Evas_Coord_Precision_Point: # Evas_Coord is int now ctypedef struct Evas_Coord_Size:
Evas_Coord w
Evas_Coord h
ctypedef struct Evas_Coord_Rectangle:
Evas_Coord x
Evas_Coord y
Evas_Coord w
Evas_Coord h
ctypedef struct Evas_Coord_Precision_Point:
Evas_Coord x Evas_Coord x
Evas_Coord y Evas_Coord y
double xsub double xsub