Allow Auto-Apply Settings and Default Mode for Config Dialogues

SVN revision: 20492
This commit is contained in:
Christopher Michael 2006-02-15 20:29:33 +00:00
parent fa5e3f722c
commit d82db82448
2 changed files with 49 additions and 6 deletions

View File

@ -35,11 +35,38 @@ e_config_dialog_new(E_Container *con, char *title, char *icon, int icon_size, E_
cfd->data = data;
cfd->hide_buttons = 1;
cfd->cfg_changed = 0;
if ((cfd->view->basic.apply_cfdata) || (cfd->view->advanced.apply_cfdata))
cfd->hide_buttons = 0;
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
if (cfd->view->override_auto_apply)
{
/* Dialog Requested To Not Auto-Apply */
if ((cfd->view->basic.apply_cfdata) || (cfd->view->advanced.apply_cfdata))
cfd->hide_buttons = 0;
}
else
{
/* Ok To Override, Or Not Specified. Use Config Value */
if (e_config->cfgdlg_auto_apply)
cfd->hide_buttons = 1;
else
{
if ((cfd->view->basic.apply_cfdata) || (cfd->view->advanced.apply_cfdata))
cfd->hide_buttons = 0;
}
}
switch (e_config->cfgdlg_default_mode)
{
case E_CONFIG_DIALOG_CFDATA_TYPE_BASIC:
if (cfd->view->basic.create_widgets)
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
break;
case E_CONFIG_DIALOG_CFDATA_TYPE_ADVANCED:
if (cfd->view->advanced.create_widgets)
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_ADVANCED);
else if (cfd->view->basic.create_widgets)
_e_config_dialog_go(cfd, E_CONFIG_DIALOG_CFDATA_TYPE_BASIC);
break;
}
return cfd;
}
@ -207,7 +234,7 @@ _e_config_dialog_cb_apply(void *data, E_Dialog *dia)
{
if (cfd->view->advanced.apply_cfdata)
ok = cfd->view->advanced.apply_cfdata(cfd, cfd->cfdata);
}
}
if ((ok) && (!cfd->hide_buttons))
{
cfd->cfg_changed = 0;
@ -238,6 +265,7 @@ static void
_e_config_dialog_cb_changed(void *data, Evas_Object *obj)
{
E_Config_Dialog *cfd;
int ok = 0;
cfd = data;
if (!cfd->hide_buttons)
@ -246,6 +274,19 @@ _e_config_dialog_cb_changed(void *data, Evas_Object *obj)
e_dialog_button_disable_num_set(cfd->dia, 0, 0);
e_dialog_button_disable_num_set(cfd->dia, 1, 0);
}
else
{
if (cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC)
{
if (cfd->view->basic.apply_cfdata)
ok = cfd->view->basic.apply_cfdata(cfd, cfd->cfdata);
}
else
{
if (cfd->view->advanced.apply_cfdata)
ok = cfd->view->advanced.apply_cfdata(cfd, cfd->cfdata);
}
}
}
static void

View File

@ -21,13 +21,15 @@ typedef struct _E_Config_Dialog_Data E_Config_Dialog_Data;
struct _E_Config_Dialog_View
{
int override_auto_apply;
void *(*create_cfdata) (E_Config_Dialog *cfd);
void (*free_cfdata) (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
int (*close_cfdata) (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
struct {
int (*apply_cfdata) (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
Evas_Object *(*create_widgets) (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
} basic, advanced;
} basic, advanced;
};
struct _E_Config_Dialog