462 lines
12 KiB
C
462 lines
12 KiB
C
/* This file has been automatically generated by geneet.py */
|
|
/* DO NOT MODIFY */
|
|
|
|
#include <limits.h>
|
|
#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
|
|
#include "prefs.h"
|
|
|
|
struct _Prefs_Opened_Tab {
|
|
const char * address;
|
|
};
|
|
|
|
struct _Prefs {
|
|
char enable_mouse_cursor;
|
|
char enable_touch_interface;
|
|
char enable_plugins;
|
|
char enable_javascript;
|
|
const char * user_agent;
|
|
const char * home_page;
|
|
const char * proxy;
|
|
char enable_private_mode;
|
|
char enable_auto_load_images;
|
|
char enable_auto_shrink_images;
|
|
char allow_popup;
|
|
char restore_state;
|
|
Eina_List * state;
|
|
const char *__eet_filename;
|
|
};
|
|
|
|
static const char PREFS_OPENED_TAB_ENTRY[] = "prefs_opened_tab";
|
|
static const char PREFS_ENTRY[] = "prefs";
|
|
|
|
static Eet_Data_Descriptor *_prefs_opened_tab_descriptor = NULL;
|
|
static Eet_Data_Descriptor *_prefs_descriptor = NULL;
|
|
|
|
static inline void
|
|
_prefs_opened_tab_init(void)
|
|
{
|
|
Eet_Data_Descriptor_Class eddc;
|
|
|
|
if (_prefs_opened_tab_descriptor) return;
|
|
|
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Prefs_Opened_Tab);
|
|
_prefs_opened_tab_descriptor = eet_data_descriptor_stream_new(&eddc);
|
|
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_opened_tab_descriptor, Prefs_Opened_Tab, "address", address, EET_T_STRING);
|
|
}
|
|
|
|
static inline void
|
|
_prefs_opened_tab_shutdown(void)
|
|
{
|
|
if (!_prefs_opened_tab_descriptor) return;
|
|
eet_data_descriptor_free(_prefs_opened_tab_descriptor);
|
|
_prefs_opened_tab_descriptor = NULL;
|
|
}
|
|
|
|
Prefs_Opened_Tab *
|
|
prefs_opened_tab_new(const char * address)
|
|
{
|
|
Prefs_Opened_Tab *prefs_opened_tab = calloc(1, sizeof(Prefs_Opened_Tab));
|
|
|
|
if (!prefs_opened_tab)
|
|
{
|
|
fprintf(stderr, "ERROR: could not calloc Prefs_Opened_Tab\n");
|
|
return NULL;
|
|
}
|
|
|
|
prefs_opened_tab->address = eina_stringshare_add(address);
|
|
|
|
return prefs_opened_tab;
|
|
}
|
|
|
|
void
|
|
prefs_opened_tab_free(Prefs_Opened_Tab *prefs_opened_tab)
|
|
{
|
|
eina_stringshare_del(prefs_opened_tab->address);
|
|
free(prefs_opened_tab);
|
|
}
|
|
|
|
inline const char *
|
|
prefs_opened_tab_address_get(const Prefs_Opened_Tab *prefs_opened_tab)
|
|
{
|
|
return prefs_opened_tab->address;
|
|
}
|
|
|
|
inline void
|
|
prefs_opened_tab_address_set(Prefs_Opened_Tab *prefs_opened_tab, const char *address)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs_opened_tab);
|
|
eina_stringshare_del(prefs_opened_tab->address);
|
|
prefs_opened_tab->address = eina_stringshare_add(address);
|
|
}
|
|
|
|
|
|
static inline void
|
|
_prefs_init(void)
|
|
{
|
|
Eet_Data_Descriptor_Class eddc;
|
|
|
|
if (_prefs_descriptor) return;
|
|
|
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Prefs);
|
|
_prefs_descriptor = eet_data_descriptor_stream_new(&eddc);
|
|
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_mouse_cursor", enable_mouse_cursor, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_touch_interface", enable_touch_interface, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_plugins", enable_plugins, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_javascript", enable_javascript, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "user_agent", user_agent, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "home_page", home_page, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "proxy", proxy, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_private_mode", enable_private_mode, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_auto_load_images", enable_auto_load_images, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "enable_auto_shrink_images", enable_auto_shrink_images, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "allow_popup", allow_popup, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_prefs_descriptor, Prefs, "restore_state", restore_state, EET_T_CHAR);
|
|
EET_DATA_DESCRIPTOR_ADD_LIST(_prefs_descriptor, Prefs, "state", state, _prefs_opened_tab_descriptor);
|
|
}
|
|
|
|
static inline void
|
|
_prefs_shutdown(void)
|
|
{
|
|
if (!_prefs_descriptor) return;
|
|
eet_data_descriptor_free(_prefs_descriptor);
|
|
_prefs_descriptor = NULL;
|
|
}
|
|
|
|
Prefs *
|
|
prefs_new(char enable_mouse_cursor, char enable_touch_interface, char enable_plugins, char enable_javascript, const char * user_agent, const char * home_page, const char * proxy, char enable_private_mode, char enable_auto_load_images, char enable_auto_shrink_images, char allow_popup, char restore_state, Eina_List * state)
|
|
{
|
|
Prefs *prefs = calloc(1, sizeof(Prefs));
|
|
|
|
if (!prefs)
|
|
{
|
|
fprintf(stderr, "ERROR: could not calloc Prefs\n");
|
|
return NULL;
|
|
}
|
|
|
|
prefs->enable_mouse_cursor = enable_mouse_cursor;
|
|
prefs->enable_touch_interface = enable_touch_interface;
|
|
prefs->enable_plugins = enable_plugins;
|
|
prefs->enable_javascript = enable_javascript;
|
|
prefs->user_agent = eina_stringshare_add(user_agent ? user_agent : "eve");
|
|
prefs->home_page = eina_stringshare_add(home_page ? home_page : "http://www.google.com");
|
|
prefs->proxy = eina_stringshare_add(proxy);
|
|
prefs->enable_private_mode = enable_private_mode;
|
|
prefs->enable_auto_load_images = enable_auto_load_images;
|
|
prefs->enable_auto_shrink_images = enable_auto_shrink_images;
|
|
prefs->allow_popup = allow_popup;
|
|
prefs->restore_state = restore_state;
|
|
prefs->state = state;
|
|
|
|
return prefs;
|
|
}
|
|
|
|
void
|
|
prefs_free(Prefs *prefs)
|
|
{
|
|
eina_stringshare_del(prefs->user_agent);
|
|
eina_stringshare_del(prefs->home_page);
|
|
eina_stringshare_del(prefs->proxy);
|
|
if (prefs->state)
|
|
{
|
|
Prefs_Opened_Tab *state_elem;
|
|
EINA_LIST_FREE(prefs->state, state_elem)
|
|
prefs_opened_tab_free(state_elem);
|
|
}
|
|
free(prefs);
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_mouse_cursor_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_mouse_cursor;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_mouse_cursor_set(Prefs *prefs, char enable_mouse_cursor)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_mouse_cursor = enable_mouse_cursor;
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_touch_interface_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_touch_interface;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_touch_interface_set(Prefs *prefs, char enable_touch_interface)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_touch_interface = enable_touch_interface;
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_plugins_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_plugins;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_plugins_set(Prefs *prefs, char enable_plugins)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_plugins = enable_plugins;
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_javascript_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_javascript;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_javascript_set(Prefs *prefs, char enable_javascript)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_javascript = enable_javascript;
|
|
}
|
|
|
|
inline const char *
|
|
prefs_user_agent_get(const Prefs *prefs)
|
|
{
|
|
return prefs->user_agent;
|
|
}
|
|
|
|
inline void
|
|
prefs_user_agent_set(Prefs *prefs, const char *user_agent)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
eina_stringshare_del(prefs->user_agent);
|
|
prefs->user_agent = eina_stringshare_add(user_agent);
|
|
}
|
|
|
|
inline const char *
|
|
prefs_home_page_get(const Prefs *prefs)
|
|
{
|
|
return prefs->home_page;
|
|
}
|
|
|
|
inline void
|
|
prefs_home_page_set(Prefs *prefs, const char *home_page)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
eina_stringshare_del(prefs->home_page);
|
|
prefs->home_page = eina_stringshare_add(home_page);
|
|
}
|
|
|
|
inline const char *
|
|
prefs_proxy_get(const Prefs *prefs)
|
|
{
|
|
return prefs->proxy;
|
|
}
|
|
|
|
inline void
|
|
prefs_proxy_set(Prefs *prefs, const char *proxy)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
eina_stringshare_del(prefs->proxy);
|
|
prefs->proxy = eina_stringshare_add(proxy);
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_private_mode_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_private_mode;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_private_mode_set(Prefs *prefs, char enable_private_mode)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_private_mode = enable_private_mode;
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_auto_load_images_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_auto_load_images;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_auto_load_images_set(Prefs *prefs, char enable_auto_load_images)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_auto_load_images = enable_auto_load_images;
|
|
}
|
|
|
|
inline char
|
|
prefs_enable_auto_shrink_images_get(const Prefs *prefs)
|
|
{
|
|
return prefs->enable_auto_shrink_images;
|
|
}
|
|
|
|
inline void
|
|
prefs_enable_auto_shrink_images_set(Prefs *prefs, char enable_auto_shrink_images)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->enable_auto_shrink_images = enable_auto_shrink_images;
|
|
}
|
|
|
|
inline char
|
|
prefs_allow_popup_get(const Prefs *prefs)
|
|
{
|
|
return prefs->allow_popup;
|
|
}
|
|
|
|
inline void
|
|
prefs_allow_popup_set(Prefs *prefs, char allow_popup)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->allow_popup = allow_popup;
|
|
}
|
|
|
|
inline char
|
|
prefs_restore_state_get(const Prefs *prefs)
|
|
{
|
|
return prefs->restore_state;
|
|
}
|
|
|
|
inline void
|
|
prefs_restore_state_set(Prefs *prefs, char restore_state)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->restore_state = restore_state;
|
|
}
|
|
|
|
inline void
|
|
prefs_state_add(Prefs *prefs, Prefs_Opened_Tab *prefs_opened_tab)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->state = eina_list_append(prefs->state, prefs_opened_tab);
|
|
}
|
|
|
|
inline void
|
|
prefs_state_del(Prefs *prefs, Prefs_Opened_Tab *prefs_opened_tab)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->state = eina_list_remove(prefs->state, prefs_opened_tab);
|
|
}
|
|
|
|
inline Prefs_Opened_Tab *
|
|
prefs_state_get(const Prefs *prefs, unsigned int nth)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(prefs, NULL);
|
|
return eina_list_nth(prefs->state, nth);
|
|
}
|
|
|
|
inline unsigned int
|
|
prefs_state_count(const Prefs *prefs)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(prefs, 0);
|
|
return eina_list_count(prefs->state);
|
|
}
|
|
|
|
void
|
|
prefs_state_list_clear(Prefs *prefs)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
Prefs_Opened_Tab *data;
|
|
EINA_LIST_FREE(prefs->state, data) prefs_opened_tab_free(data);
|
|
}
|
|
|
|
inline Eina_List *
|
|
prefs_state_list_get(const Prefs *prefs)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(prefs, NULL);
|
|
return prefs->state;
|
|
}
|
|
|
|
inline void
|
|
prefs_state_list_set(Prefs *prefs, Eina_List *list)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(prefs);
|
|
prefs->state = list;
|
|
}
|
|
|
|
Prefs *
|
|
prefs_load(const char *filename)
|
|
{
|
|
Prefs *prefs;
|
|
Eet_File *ef = eet_open(filename, EET_FILE_MODE_READ);
|
|
if (!ef)
|
|
{
|
|
fprintf(stderr, "ERROR: could not open '%s' for read\n", filename);
|
|
return NULL;
|
|
}
|
|
|
|
prefs = eet_data_read(ef, _prefs_descriptor, PREFS_ENTRY);
|
|
prefs->__eet_filename = eina_stringshare_add(filename);
|
|
|
|
eet_close(ef);
|
|
return prefs;
|
|
}
|
|
|
|
Eina_Bool
|
|
prefs_save(Prefs *prefs, const char *filename)
|
|
{
|
|
char tmp[PATH_MAX];
|
|
Eet_File *ef;
|
|
Eina_Bool ret;
|
|
unsigned int i, len;
|
|
struct stat st;
|
|
|
|
if (filename) prefs->__eet_filename = eina_stringshare_add(filename);
|
|
else if (prefs->__eet_filename) filename = prefs->__eet_filename;
|
|
else return EINA_FALSE;
|
|
|
|
len = eina_strlcpy(tmp, filename, sizeof(tmp));
|
|
if (len + 12 >= (int)sizeof(tmp))
|
|
{
|
|
fprintf(stderr, "ERROR: filename is too big: %s\n", filename);
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
i = 0;
|
|
do
|
|
{
|
|
snprintf(tmp + len, 12, ".%u", i);
|
|
i++;
|
|
}
|
|
while(stat(tmp, &st) == 0);
|
|
|
|
ef = eet_open(tmp, EET_FILE_MODE_WRITE);
|
|
if (!ef)
|
|
{
|
|
fprintf(stderr, "ERROR: could not open '%s' for write\n", tmp);
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
ret = !!eet_data_write(ef, _prefs_descriptor, PREFS_ENTRY, prefs, EINA_TRUE);
|
|
eet_close(ef);
|
|
|
|
if (ret)
|
|
{
|
|
unlink(filename);
|
|
rename(tmp, filename);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void
|
|
preferences_init(void)
|
|
{
|
|
_prefs_opened_tab_init();
|
|
_prefs_init();
|
|
}
|
|
|
|
void
|
|
preferences_shutdown(void)
|
|
{
|
|
_prefs_opened_tab_shutdown();
|
|
_prefs_shutdown();
|
|
}
|
|
|