My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
Ego  
Enlightenment Graphic objects
Updated Mar 28, 2008 by samuel.r...@gmail.com

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 :
      • select
      • unselect
    • 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
Powered by Google Project Hosting