Main Page | Data Structures | Directories | File List | Data Fields | Globals

e_mod_devian.c File Reference

#include "dEvian.h"

Go to the source code of this file.

Functions

int devian_devian_main_init (E_Module *m)
void devian_devian_main_shutdown (void)
dEvian * devian_devian_add (Config_dEvian *cfg_devian)
void devian_devian_del (dEvian *devian, int now)
void devian_devian_del_all (void)
void devian_devian_set_name (dEvian *devian, int source, char *extra)
char * devian_display_init (void)
void devian_display_shutdown (void)
int devian_devian_edje_load (Evas_Object *edje_obj, char *part)


Function Documentation

dEvian* devian_devian_add Config_dEvian *  cfg_devian  ) 
 

Definition at line 88 of file e_mod_devian.c.

References devian_config_devian_new(), devian_container_change(), devian_devian_del(), devian_devian_set_name(), devian_menu_init(), devian_source_change(), dEvianM, DMAIN, and SOURCE_NO.

Referenced by _devian_main_menu_cb_add_devian(), _main_advanced_apply_data(), _main_basic_apply_data(), devian_container_theme_set(), and devian_devian_main_init().

00089 {
00090   dEvian *devian;
00091 
00092   devian = E_NEW(dEvian, 1);
00093   devian->menu = NULL;
00094   devian->name = NULL;
00095   devian->source = NULL;
00096   devian->container = NULL;
00097   devian->dying = 0;
00098   devian->dialog_conf = NULL;
00099   devian->conf = NULL;
00100   devian->menu = NULL;
00101 
00102   /* Append new devian to the list of devians */
00103   dEvianM->devians = evas_list_append (dEvianM->devians,
00104                devian);
00105 
00106   /* Name */
00107   devian_devian_set_name(devian, SOURCE_NO, NULL);
00108 
00109   /* Config */
00110   if (cfg_devian)
00111     {
00112       /* Use existing config */
00113       devian->conf = cfg_devian;
00114     }
00115   else
00116     {
00117       /* New config */
00118       devian->conf = devian_config_devian_new(NULL);
00119       if (!devian->conf)
00120   {
00121     devian_devian_del(devian, 1);
00122     return NULL;
00123   }
00124     }
00125   
00126   /* Menu */
00127   devian->menu = devian_menu_init(devian);
00128   if (!devian->menu)
00129     {
00130       devian_devian_del(devian, 1);
00131       return NULL;
00132     }
00133 
00134   /* Source */
00135   if ( devian_source_change(devian, devian->conf->source_type) )
00136     {
00137       devian_devian_del(devian, 1);
00138       return NULL;
00139     }
00140 
00141   /* Container */
00142   if ( devian_container_change(devian, devian->conf->container_type) )
00143     {
00144       devian_devian_del(devian, 1);
00145       return NULL;
00146     }
00147 
00148   DMAIN(("dEvian: New devian OK"));
00149 
00150   return devian;
00151 }

void devian_devian_del dEvian *  devian,
int  now
 

Definition at line 153 of file e_mod_devian.c.

References CONTAINER_NO, devian_config_devian_free(), devian_config_dialog_devian_shutdown(), devian_container_change(), devian_container_devian_dying(), devian_devian_set_name(), devian_menu_main_menu_refresh(), devian_menu_shutdown(), devian_source_change(), dEvianM, DMAIN, and SOURCE_NO.

Referenced by _cb_ecore_animator(), _devian_menu_cb_devian_delete(), _main_advanced_apply_data(), _main_basic_apply_data(), devian_container_box_resize_auto(), devian_container_theme_set(), devian_devian_add(), and devian_devian_del_all().

00154 {
00155   if (!now)
00156     {
00157       devian->dying = 1;
00158       if (devian_container_devian_dying(devian))
00159   return;
00160     }
00161   
00162   DMAIN(("dEvian: del devian container"));
00163   devian_container_change(devian, CONTAINER_NO);
00164   DMAIN(("dEvian: del devian source"));
00165   devian_source_change(devian, SOURCE_NO);
00166   DMAIN(("dEvian: Free devian menu"));
00167   devian_menu_shutdown(devian);
00168   DMAIN(("dEvian: Free devian config dialog"));
00169   devian_config_dialog_devian_shutdown(devian);
00170   DMAIN(("dEvian: Free devian config"));
00171   devian_config_devian_free(devian);
00172   DMAIN(("dEvian: Free devian remove"));
00173   dEvianM->devians = evas_list_remove (dEvianM->devians,
00174              devian);
00175   DMAIN(("Rename dEvians"));
00176   devian_devian_set_name(NULL, 0, NULL);
00177   DMAIN(("dEvian: Free devian refresh main menu"));
00178   devian_menu_main_menu_refresh();
00179   DMAIN(("dEvian: Free devian free"));
00180 
00181   if (devian->name)
00182     E_FREE(devian->name);
00183   E_FREE(devian);
00184 
00185   DMAIN(("dEvian: Free devian OK"));
00186 }

void devian_devian_del_all void   ) 
 

Definition at line 188 of file e_mod_devian.c.

References devian_devian_del(), dEvianM, and DMAIN.

Referenced by _devian_main_menu_cb_delete_all_devians(), and devian_devian_main_shutdown().

00189 {
00190   while (dEvianM->devians)
00191     {
00192       DMAIN(("dEvian: devian_del"));
00193       devian_devian_del(evas_list_data(dEvianM->devians), 1);
00194     }
00195 }

int devian_devian_edje_load Evas_Object *  edje_obj,
char *  part
 

Definition at line 336 of file e_mod_devian.c.

References DEVIAN_MAX_PATH, and dEvianM.

Referenced by _picture_list_local_popup_load_start(), and devian_container_edje_load().

00337 {
00338   char path[DEVIAN_MAX_PATH];
00339 
00340   snprintf(path, DEVIAN_MAX_PATH, "%s/%s/%s%s",
00341            e_module_dir_get(dEvianM->module), "themes",
00342            dEvianM->conf->theme,
00343            ".edj");
00344   if ( !edje_object_file_set(edje_obj, path, part) )
00345     {
00346       char buf[4096];
00347       snprintf(buf, sizeof(buf),
00348                _(
00349                  "<hilight>Error !</hilight><br>"
00350                  "Did not find <hilight>theme</hilight> %s group %s"),
00351                path, part);
00352       e_module_dialog_show(_("dEvian Module Error"), buf);
00353       return 0;
00354     }
00355 #ifdef DEBUG_MAIN
00356   else
00357     {
00358       fprintf(stderr, "Edje loaded %s group %s\n" , path, part);
00359     }
00360 #endif
00361   
00362   return 1;
00363 }

int devian_devian_main_init E_Module *  m  ) 
 

Definition at line 4 of file e_mod_devian.c.

References devian_config_init(), devian_data_picture_cache_init(), devian_data_picture_list_local_init(), devian_devian_add(), devian_display_init(), devian_menu_main_menu_init(), dEvianM, and DMAIN.

Referenced by e_modapi_init().

00005 {
00006   Config_dEvian *cfg_devian;
00007   int i;
00008 
00009   dEvianM = E_NEW(dEvian_Main, 1);
00010 
00011   dEvianM->container = e_container_current_get(e_manager_current_get());
00012   evas_output_viewport_get(dEvianM->container->bg_evas, NULL, NULL, &dEvianM->canvas_w, &dEvianM->canvas_h);
00013   DMAIN(("dEvian : Canvas %d x %d",dEvianM->canvas_w,dEvianM->canvas_h));
00014 
00015   dEvianM->module = m;
00016 
00017   dEvianM->devians = NULL;
00018   dEvianM->themes_menu = NULL;
00019   dEvianM->container_box_count = 0;
00020 
00021   dEvianM->display = devian_display_init();
00022 
00023   dEvianM->conf = devian_config_init();
00024   if (!dEvianM->conf)
00025       return 0;
00026 
00027   devian_menu_main_menu_init();
00028   if (!dEvianM->main_menu)
00029     return 0;
00030 
00031   if ( devian_data_picture_list_local_init() )
00032     {
00033       fprintf(stderr, "dEvian: can't init picture list (local) !\n");
00034       return 0;
00035     }
00036 
00037   if ( !devian_data_picture_cache_init() )
00038     {
00039       fprintf(stderr, "dEvian: can't init picture cache !\n");
00040       return 0;
00041     }  
00042 
00043   /* Init devians like it is in the config file */
00044   DMAIN(("%d devians to create", dEvianM->conf->nb_devian));
00045   for (i=0; i<dEvianM->conf->nb_devian; i++)
00046     {
00047       cfg_devian = evas_list_nth(dEvianM->conf->devians_conf, i);
00048       if (!devian_devian_add(cfg_devian))
00049   {
00050     fprintf(stderr, "dEvian: Not good, a devian couldnt be created\n");
00051     evas_list_remove (dEvianM->conf->devians_conf,
00052           cfg_devian);
00053   }
00054     }
00055   
00056   DMAIN(("dEvian : init_devian OK\n"));
00057 
00058   return 1;
00059 }

void devian_devian_main_shutdown void   ) 
 

Definition at line 62 of file e_mod_devian.c.

References devian_config_dialog_main_shutdown(), devian_config_free(), devian_data_picture_cache_shutdown(), devian_data_picture_list_local_shutdown(), devian_devian_del_all(), devian_display_shutdown(), devian_menu_main_menu_shutdown(), dEvianM, and DMAIN.

Referenced by e_modapi_shutdown().

00063 {
00064   DMAIN(("Main shutdown begins"));
00065 
00066   devian_devian_del_all();
00067 
00068   devian_data_picture_cache_shutdown();
00069   devian_data_picture_list_local_shutdown();
00070 
00071   devian_menu_main_menu_shutdown();
00072   devian_config_dialog_main_shutdown();
00073   devian_config_free();
00074   devian_display_shutdown();
00075 
00076   E_FREE(dEvianM);
00077 }

void devian_devian_set_name dEvian *  devian,
int  source,
char *  extra
 

Definition at line 205 of file e_mod_devian.c.

References devian_container_update_name_devian(), devian_menu_main_menu_refresh(), DEVIAN_NAME_LEN, dEvianM, SOURCE_NO, and SOURCE_PICTURE.

Referenced by devian_devian_add(), devian_devian_del(), and devian_source_picture_add().

00206 {
00207   char *name;
00208   int n;
00209 
00210   if (!devian)
00211     {
00212       Evas_List *l;
00213       dEvian *d;
00214 
00215       n=1;
00216       for (l=dEvianM->devians; l; l=evas_list_next(l))
00217   {
00218     name = E_NEW(char, DEVIAN_NAME_LEN);
00219     d = evas_list_data(l);
00220     if (d->name && d->conf)
00221       {
00222         E_FREE(d->name);
00223         switch (d->conf->source_type)
00224     {
00225     case SOURCE_PICTURE:
00226       snprintf(name, DEVIAN_NAME_LEN, "Picture %d", n);
00227       break;
00228     case SOURCE_NO:
00229       snprintf(name, DEVIAN_NAME_LEN, "No source %d", n);
00230       break;
00231     }
00232       }
00233     else
00234       {
00235         if (d->name)
00236     E_FREE(d->name);
00237         snprintf(name, DEVIAN_NAME_LEN, "Invalid devian %d", n);
00238       }
00239     d->name = name;
00240     devian_container_update_name_devian(d);
00241     n++;
00242   }
00243       devian_menu_main_menu_refresh();
00244     }
00245   else
00246     {
00247       name = E_NEW(char, DEVIAN_NAME_LEN);
00248       n = evas_list_count(dEvianM->devians);
00249       switch (source)
00250   {
00251   case SOURCE_PICTURE:
00252     if (extra)
00253       snprintf(name, DEVIAN_NAME_LEN, "Picture %d %s", n, extra);
00254     else
00255     snprintf(name, DEVIAN_NAME_LEN, "Picture %d", n);
00256     break;
00257   case SOURCE_NO:
00258     if (extra)
00259       snprintf(name, DEVIAN_NAME_LEN, "No source %d %s", n, extra);
00260     else
00261       snprintf(name, DEVIAN_NAME_LEN, "No source %d", n);
00262     break;
00263   default: 
00264     if (extra)
00265       snprintf(name, DEVIAN_NAME_LEN, "Invalid dEvian %d %s", n, extra);
00266     else
00267       snprintf(name, DEVIAN_NAME_LEN, "Invalid dEvian %d", n);
00268     break;
00269   }
00270       if (devian->name)
00271   E_FREE(devian->name);
00272       devian->name = name;
00273       if (devian->container)
00274   devian_container_update_name_devian(devian);
00275       if (devian->menu)
00276   devian_menu_main_menu_refresh();
00277     }
00278 
00279   return;
00280 }

char* devian_display_init void   ) 
 

Definition at line 282 of file e_mod_devian.c.

Referenced by devian_devian_main_init().

00283 {
00284   char *display = NULL;
00285   char *tmp;
00286 
00287   tmp = getenv("DISPLAY");
00288   if (tmp) display = strdup(tmp);
00289 
00290   /* make sure the display var is of the form name:0.0 or :0.0 */
00291   if (display)
00292     {
00293       char *p;
00294       char buf[1024];
00295 
00296       p = strrchr(display, ':');
00297       if (!p)
00298   {
00299     snprintf(buf, sizeof(buf), "%s:0.0", display);
00300     free(display);
00301     display = strdup(buf);
00302   }
00303       else
00304   {
00305     p = strrchr(p, '.');
00306     if (!p)
00307       {
00308         snprintf(buf, sizeof(buf), "%s.0", display);
00309         free(display);
00310         display = strdup(buf);
00311       }
00312   }
00313     }
00314   else
00315     display = strdup(":0.0");
00316 
00317   /* Init E Lib */
00318   if (display)
00319     e_lib_init(display);
00320   else
00321     {
00322       display = strdup(":0.0");
00323       e_lib_init(display);
00324     }
00325 
00326   return display;
00327 }

void devian_display_shutdown void   ) 
 

Definition at line 329 of file e_mod_devian.c.

References dEvianM.

Referenced by devian_devian_main_shutdown().

00330 {
00331   free(dEvianM->display);
00332   dEvianM->display = NULL;
00333   e_lib_shutdown();
00334 }


Generated on Fri Jan 6 02:26:26 2006 for dEvian by  doxygen 1.4.4