Introduction
C'est une bibliothèque dont le but est de reprendre les différents objets graphiques
disponibles dans un thème Enlightenment version 0.17 (actuellement DR17).
Le type de ces objets est Evas_Object ce qui leur permet d'etre utilisé directement
avec Edge (type swallow).
On trouvera également d'autres fonctions pour :
- gérer les evenements (clavier, souris, joystick, télécommande, ...)
Details
/*
* initialise le moteur de rendu
* initialise le theme
* ...
* ou int ego_init (int argc, const char ** argv);
* avantages :
* - définire le display, le moteur, le thème, ...
* - utiliser le nom du programme dans ecore_evas_name_class_set (...)
* - ...
*/
int ego_init (void);
/*
* libère les ressources allouées
*/
int ego_shutdown (void);
Fenetre
Dans un premier temps, seul le moteur X11 sera supporté, ensuite on prendra celui définit dans la config d'e17. Si e17 n'est pas installer, on prendra dans l'ordre x11, xrender, opengl, framebuffer.
/*
* - vérifie que le type est supporté
* - créé une fenetre avec une taille par défaut
* - ajoute un background de type window
* - rensigne le nom et la classe avec argv[0] si dispo avec ecore_app_args_get
* - Utilise la fenetre "parent" si renseigné
* - si argv renseigné et qu'il existe un paramétre "-display" => valeur = disp x11
*/
Ecore_Evas * ego_window_new (Ecore_Evas_Engine_Type * type, Ecore_Evas * parent);
/*
* si x11, utilisé Ecore_X_Window_Type ECORE_X_WINDOW_TYPE_DIALOG avec la fonction
* ecore_x_netwm_window_type_set (Ecore_X_Window win, Ecore_X_Window_Type type);
*/
int ego_window_dialog_set (Ecore_Evas * window, int dialog);
/* si x11, retourné vrai si ecore_x_netwm_window_type_get(Ecore_X_Window win,
* Ecore_X_Window_Type *type); retourne ECORE_X_WINDOW_TYPE_DIALOG
*/
int ego_window_dialog_get (Ecore_Evas * window);
/*
* retourne l'object Ecore_Evas dans lequel se trouve lobject Evas o
*/
Ecore_Evas * ego_window_evas_object_window_get (Evas_Object * o);
Themes
- Utilise les themes e17 ainsi que les catégories
-
Evas_List * ego_theme_path_list_get ( void );
int ego_theme_path_add (const char * path);
int ego_theme_path_del (const char * path);
int ego_theme_set ( const char * theme );
const char * ego_theme_get ( void );
Evas_List * ego_theme_list_get ( void );
Evas_Object * ego_theme_edje_object_set (Evas_Object * o, const char * c, const char * p);
Objets
- ego_background
- part "e/fileman/default/window/main pour les fenetres
- part "e/widgets/dialog/main" pour les boites de dialogue
Evas_Object * ego_background_add (Evas * e);
Evas_Object * ego_background_window_add (Evas * e);
Evas_Object * ego_background_dialog_add (Evas * e);
int ego_background_window_set (Evas_Object * bg, int set);
int ego_background_dialog_set (Evas_Object * bg, int set);
int ego_background_window_get (Evas_Object * bg);
int ego_background_dialog_get (Evas_Object * bg);
int ego_background_object_set (Evas_Object * bg, Evas_Object * o);
Evas_Object * ego_background_object_get (Evas_Object * bg);
ego_icon - parties edje obligatoires dans le theme :
- icon => image (swallow : evas object image)
- label => label associé (text : renseigné avec edje_object_part_text_set)
- selected => aspect quand il est selectioné
- programme obligatoires dans le theme :
- chemins de recherche des icones (l'utilisateur pourra changé l'ordre):
- themes ego
- themes d'icones freedesktop
- chemins définis par l'utilsateur
ego_menu - basé sur ego_box
- 2 modes de sélection dese items (défini dans le thème):
- tous les objets sont déplacés lors d'1 changement (ego_box normal)
- les objets ne sont déplacés que lorsque la séelection est en début ou en fin de la liste des objets visibles
- l'orientation est définit dans le thème
ego_box - reprise de box.c de eem (car gère la sélection)
ego_toolbar - à la manière de shelf + ibox dans e17
ego_thumbs - liste d'aperçus utilisant ego_box
- orientation définie par le thème
- utilise un autre thread/process pour créer les thumbs inexistants
- utilisable pour :
- les images
- les vidéos
- les roms
Astuces
Pour rendre un objet edje transparent, il faut peut-être :
evas_object_color_set (edje_obj, r, g, b, 0); // l'objet de clippin est transparent
evas_object_color_set (edje_part_image, r, g, b, 128); // l'image est semi-transparente
ou
evas_object_color_get (edje_part_image, &r, &g, &b, &a);
evas_object_color_set (edje_clip, r, g, b, 128);
Erreurs
Liste des erreurs connues par Ego
EGO_INVALID_TYPE
EGO_INVALID_OBJECT
EGO_NOT_ENOUGH_MEMORY
EGO_FILE_NOT_FOUND