e_randr: Show "ask position" dialog, if ASK policy is used.

SVN revision: 71566
This commit is contained in:
Leif Middelschulte 2012-05-30 19:16:58 +00:00
parent c43f83ef52
commit bdb66274c0
44 changed files with 27979 additions and 19446 deletions

1247
po/ar.po

File diff suppressed because it is too large Load Diff

1260
po/bg.po

File diff suppressed because it is too large Load Diff

1265
po/ca.po

File diff suppressed because it is too large Load Diff

1255
po/cs.po

File diff suppressed because it is too large Load Diff

1251
po/da.po

File diff suppressed because it is too large Load Diff

1261
po/de.po

File diff suppressed because it is too large Load Diff

1246
po/el.po

File diff suppressed because it is too large Load Diff

1246
po/eo.po

File diff suppressed because it is too large Load Diff

1260
po/es.po

File diff suppressed because it is too large Load Diff

1257
po/et.po

File diff suppressed because it is too large Load Diff

1260
po/fi.po

File diff suppressed because it is too large Load Diff

1225
po/fo.po

File diff suppressed because it is too large Load Diff

2051
po/fr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1246
po/he.po

File diff suppressed because it is too large Load Diff

1246
po/hr.po

File diff suppressed because it is too large Load Diff

1246
po/hu.po

File diff suppressed because it is too large Load Diff

112
po/it.po
View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Enlightenment 0.17\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2012-05-13 21:16+0200\n"
"POT-Creation-Date: 2012-05-30 21:07+0200\n"
"PO-Revision-Date: 2012-05-13 21:18+0200\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: none\n"
@ -303,7 +303,7 @@ msgstr "Commuta stato attaccata"
#: src/bin/e_fm_device.c:637 src/bin/e_fm_device.c:664
#: src/bin/e_int_menus.c:144 src/bin/e_int_shelf_config.c:247
#: src/modules/conf_window_manipulation/e_int_config_clientlist.c:101
#: src/modules/fileman/e_mod_main.c:358 src/modules/ibox/e_mod_config.c:162
#: src/modules/fileman/e_mod_main.c:360 src/modules/ibox/e_mod_config.c:162
msgid "Desktop"
msgstr "Desktop"
@ -754,13 +754,13 @@ msgstr "Selettore colore"
#: src/bin/e_utils.c:707 src/modules/conf_dialogs/e_int_config_profiles.c:387
#: src/modules/conf_intl/e_int_config_imc_import.c:120
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:222
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:352
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:357
#: src/modules/conf_theme/e_int_config_theme_import.c:120
#: src/modules/cpufreq/e_mod_main.c:415 src/modules/cpufreq/e_mod_main.c:444
#: src/modules/cpufreq/e_mod_main.c:469
#: src/modules/fileman/e_int_config_mime_edit.c:303
#: src/modules/shot/e_mod_main.c:242 src/modules/shot/e_mod_main.c:482
#: src/modules/xkbswitch/e_mod_config.c:512
#: src/modules/xkbswitch/e_mod_config.c:526
msgid "OK"
msgstr "OK"
@ -770,12 +770,12 @@ msgstr "OK"
#: src/modules/conf_dialogs/e_int_config_profiles.c:388
#: src/modules/conf_intl/e_int_config_imc_import.c:124
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:226
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:356
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:361
#: src/modules/conf_theme/e_int_config_theme_import.c:124
#: src/modules/fileman/e_int_config_mime_edit.c:304
#: src/modules/syscon/e_syscon.c:120 src/modules/connman/e_mod_main.c:300
#: src/modules/shot/e_mod_main.c:244 src/modules/shot/e_mod_main.c:483
#: src/modules/shot/e_mod_main.c:698 src/modules/xkbswitch/e_mod_config.c:513
#: src/modules/shot/e_mod_main.c:698 src/modules/xkbswitch/e_mod_config.c:527
msgid "Cancel"
msgstr "Annulla"
@ -1124,7 +1124,7 @@ msgid "Show in Menus"
msgstr "Mostra in menù"
#: src/bin/e_eap_editor.c:786 src/bin/e_int_border_remember.c:757
#: src/modules/xkbswitch/e_mod_config.c:325
#: src/modules/xkbswitch/e_mod_config.c:335
msgid "Options"
msgstr "Opzioni"
@ -1136,26 +1136,26 @@ msgstr "Seleziona un'icona"
msgid "Select an Executable"
msgstr "Seleziona un'eseguibile"
#: src/bin/e_entry.c:501 src/bin/e_fm.c:8243 src/bin/e_shelf.c:1703
#: src/bin/e_entry.c:506 src/bin/e_fm.c:8243 src/bin/e_shelf.c:1703
#: src/modules/conf_dialogs/e_int_config_profiles.c:135
#: src/modules/conf_shelves/e_int_config_shelf.c:81
#: src/modules/ibar/e_mod_config.c:108
msgid "Delete"
msgstr "Elimina"
#: src/bin/e_entry.c:511 src/bin/e_fm.c:8151
#: src/bin/e_entry.c:516 src/bin/e_fm.c:8151
msgid "Cut"
msgstr "Taglia"
#: src/bin/e_entry.c:519 src/bin/e_fm.c:6198 src/bin/e_fm.c:8165
#: src/bin/e_entry.c:524 src/bin/e_fm.c:6198 src/bin/e_fm.c:8165
msgid "Copy"
msgstr "Copia"
#: src/bin/e_entry.c:527 src/bin/e_fm.c:7989 src/bin/e_fm.c:8178
#: src/bin/e_entry.c:532 src/bin/e_fm.c:7989 src/bin/e_fm.c:8178
msgid "Paste"
msgstr "Incolla"
#: src/bin/e_entry.c:537
#: src/bin/e_entry.c:542
msgid "Select All"
msgstr "Seleziona tutto"
@ -1652,7 +1652,7 @@ msgstr "Aspetto"
#: src/modules/conf_applications/e_int_config_apps.c:260
#: src/modules/conf_applications/e_int_config_apps.c:280
#: src/modules/gadman/e_mod_gadman.c:818 src/modules/ibar/e_mod_main.c:801
#: src/modules/xkbswitch/e_mod_config.c:260
#: src/modules/xkbswitch/e_mod_config.c:268
msgid "Remove"
msgstr "Elimina"
@ -2187,7 +2187,7 @@ msgstr "Utilità"
#: src/bin/e_int_config_modules.c:55
#: src/modules/everything/evry_plug_files.c:1585
#: src/modules/fileman/e_mod_main.c:56 src/modules/fileman/e_mod_main.c:76
#: src/modules/fileman/e_mod_main.c:420
#: src/modules/fileman/e_mod_main.c:421
msgid "Files"
msgstr "File"
@ -2302,7 +2302,7 @@ msgstr "Applicazioni"
#: src/bin/e_int_menus.c:151 src/bin/e_int_menus.c:1126
#: src/modules/conf_window_manipulation/e_mod_main.c:17
#: src/modules/conf_window_remembers/e_mod_main.c:14
#: src/modules/winlist/e_mod_main.c:25 src/modules/tiling/e_mod_tiling.c:3810
#: src/modules/winlist/e_mod_main.c:25 src/modules/tiling/e_mod_tiling.c:3812
msgid "Windows"
msgstr "Finestre"
@ -3459,7 +3459,7 @@ msgstr "%li minuti fa"
#: src/bin/e_utils.c:924 src/modules/conf_dialogs/e_int_config_profiles.c:274
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1179
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1179
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1189
#: src/modules/wizard/page_020.c:19 src/modules/wizard/page_020.c:30
msgid "Unknown"
msgstr "Sconosciuto"
@ -3559,19 +3559,19 @@ msgstr ""
#: src/modules/conf_dialogs/e_int_config_profiles.c:133
#: src/modules/conf_shelves/e_int_config_shelf.c:79
#: src/modules/ibar/e_mod_config.c:106
#: src/modules/xkbswitch/e_mod_config.c:255
#: src/modules/xkbswitch/e_mod_config.c:263
msgid "Add"
msgstr "Aggiungi"
#: src/bin/e_widget_config_list.c:80
#: src/modules/conf_applications/e_int_config_apps.c:272
#: src/modules/xkbswitch/e_mod_config.c:243
#: src/modules/xkbswitch/e_mod_config.c:251
msgid "Up"
msgstr "Su"
#: src/bin/e_widget_config_list.c:86
#: src/modules/conf_applications/e_int_config_apps.c:276
#: src/modules/xkbswitch/e_mod_config.c:249
#: src/modules/xkbswitch/e_mod_config.c:257
msgid "Down"
msgstr "Giù"
@ -4524,29 +4524,29 @@ msgstr ""
"diversa."
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1312
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1334
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1366
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1344
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1376
#: src/modules/gadman/e_mod_gadman.c:842
msgid "CTRL"
msgstr "Ctrl"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1317
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1339
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1371
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1349
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1381
#: src/modules/gadman/e_mod_gadman.c:847
msgid "ALT"
msgstr "Alt"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1323
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1345
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1377
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1355
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1387
#: src/modules/gadman/e_mod_gadman.c:853
msgid "SHIFT"
msgstr "Maiuscole"
#: src/modules/conf_edgebindings/e_int_config_edgebindings.c:1329
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1351
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1383
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1361
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1393
#: src/modules/gadman/e_mod_gadman.c:859
msgid "WIN"
msgstr "Windows"
@ -4766,11 +4766,11 @@ msgstr "Combinazioni della tastiera"
msgid "Key Binding Sequence"
msgstr "Sequenza di tastiera"
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1174
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1184
msgid "Binding Key Error"
msgstr "Errore di associazione"
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1175
#: src/modules/conf_keybindings/e_int_config_keybindings.c:1185
#, c-format
msgid ""
"The binding key sequence, that you choose, is already used by <br><hilight>"
@ -4871,7 +4871,7 @@ msgid "Main Menu"
msgstr "Menù principale"
#: src/modules/conf_menus/e_int_config_menus.c:258
#: src/modules/fileman/e_mod_main.c:364
#: src/modules/fileman/e_mod_main.c:366
msgid "Favorites"
msgstr "Preferiti"
@ -4891,7 +4891,7 @@ msgstr "Commenti"
#: src/modules/gadman/e_mod_config.c:162 src/modules/gadman/e_mod_main.c:27
#: src/modules/gadman/e_mod_main.c:77 src/modules/gadman/e_mod_main.c:84
#: src/modules/gadman/e_mod_main.c:109 src/modules/gadman/e_mod_main.c:139
#: src/modules/xkbswitch/e_mod_config.c:289
#: src/modules/xkbswitch/e_mod_config.c:299
msgid "Gadgets"
msgstr "Gadget"
@ -5177,34 +5177,34 @@ msgstr "Estesa"
msgid "Select a Picture..."
msgstr "Selezionare un'immmagine..."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:696
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:701
msgid "Picture Import Error"
msgstr "Errore importazione immagine"
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:697
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:702
msgid ""
"Enlightenment was unable to import the picture<br>due to conversion errors."
msgstr ""
"Enlightenment non ha potuto importare l'immagine<br>a causa di errori di "
"conversione."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:784
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:794
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:876
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:886
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:789
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:799
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:881
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:891
msgid "Wallpaper Import Error"
msgstr "Errore importazione sfondo"
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:785
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:877
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:790
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:882
msgid ""
"Enlightenment was unable to import the wallpaper<br>due to a copy error."
msgstr ""
"Enlightenment non ha potuto importare lo sfondo<br>a causa di un errore di "
"copia."
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:795
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:887
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:800
#: src/modules/conf_theme/e_int_config_wallpaper_import.c:892
msgid ""
"Enlightenment was unable to import the wallpaper.<br><br>Are you sure this "
"is a valid wallpaper?"
@ -6951,15 +6951,15 @@ msgstr "Seleziona un'immagine"
msgid "File Manager"
msgstr "File manager"
#: src/modules/fileman/e_mod_main.c:352
#: src/modules/fileman/e_mod_main.c:354
msgid "Home"
msgstr "Home"
#: src/modules/fileman/e_mod_main.c:376
#: src/modules/fileman/e_mod_main.c:378
msgid "Root"
msgstr "Directory principale"
#: src/modules/fileman/e_mod_main.c:474
#: src/modules/fileman/e_mod_main.c:475
msgid ""
"Fileman Module Settings data needed upgrading. Your old configuration<br>has "
"been wiped and a new set of defaults initialized. This<br>will happen "
@ -6979,7 +6979,7 @@ msgstr ""
"nuove funzionalità.<br>Adesso è possibile riconfigurare le cose a proprio "
"piacimento.<br>Ci scusiamo per il disagio.<br>"
#: src/modules/fileman/e_mod_main.c:487
#: src/modules/fileman/e_mod_main.c:488
msgid ""
"Your Fileman Module configuration is NEWER than Fileman Module version. This "
"is very<br>strange. This should not happen unless you downgraded<br>the "
@ -6996,7 +6996,7 @@ msgstr ""
"configurazione è<br>stata ripristinata a scopo precauzionale ai valori "
"predefiniti. Ci<br>scusiamo per l'inconveniente.<br>"
#: src/modules/fileman/e_mod_main.c:557
#: src/modules/fileman/e_mod_main.c:558
msgid "Fileman Settings Updated"
msgstr "Impostazioni di Fileman aggiornate"
@ -8169,9 +8169,9 @@ msgstr "Numero di colonne da usare per desktop (0 → griglia disabilitata)"
msgid "Tiling Configuration"
msgstr "Configurazione di Tiling"
#: src/modules/tiling/e_mod_tiling.c:3783
#: src/modules/tiling/e_mod_tiling.c:3812
#: src/modules/tiling/e_mod_tiling.c:3901
#: src/modules/tiling/e_mod_tiling.c:3785
#: src/modules/tiling/e_mod_tiling.c:3814
#: src/modules/tiling/e_mod_tiling.c:3903
msgid "Tiling"
msgstr "Tiling"
@ -8184,30 +8184,30 @@ msgstr "Commutatore tastiera"
msgid "XKB Switcher Module"
msgstr "Modulo XKBswitcher"
#: src/modules/xkbswitch/e_mod_config.c:269
#: src/modules/xkbswitch/e_mod_config.c:277
msgid "Configurations"
msgstr "Configurazioni"
#: src/modules/xkbswitch/e_mod_config.c:278
#: src/modules/xkbswitch/e_mod_config.c:286
msgid "Models"
msgstr "Modelli"
#: src/modules/xkbswitch/e_mod_config.c:291
#: src/modules/xkbswitch/e_mod_config.c:301
msgid "Label only"
msgstr "Solo etichette"
#: src/modules/xkbswitch/e_mod_config.c:470
#: src/modules/xkbswitch/e_mod_config.c:481
msgid "Add New Configuration"
msgstr "Aggiungi nuova configurazione"
#: src/modules/xkbswitch/e_mod_config.c:480
#: src/modules/xkbswitch/e_mod_config.c:494
msgid "Available"
msgstr "Disponibile"
#: src/modules/xkbswitch/e_mod_config.c:487
#: src/modules/xkbswitch/e_mod_config.c:501
msgid "Model"
msgstr "Modello"
#: src/modules/xkbswitch/e_mod_config.c:494
#: src/modules/xkbswitch/e_mod_config.c:508
msgid "Variant"
msgstr "Variante"

1264
po/ja.po

File diff suppressed because it is too large Load Diff

1226
po/km.po

File diff suppressed because it is too large Load Diff

1265
po/ko.po

File diff suppressed because it is too large Load Diff

1223
po/ku.po

File diff suppressed because it is too large Load Diff

1246
po/lt.po

File diff suppressed because it is too large Load Diff

1257
po/ms.po

File diff suppressed because it is too large Load Diff

1257
po/nb.po

File diff suppressed because it is too large Load Diff

1252
po/nl.po

File diff suppressed because it is too large Load Diff

1261
po/pl.po

File diff suppressed because it is too large Load Diff

1269
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1257
po/ro.po

File diff suppressed because it is too large Load Diff

1258
po/ru.po

File diff suppressed because it is too large Load Diff

1257
po/sk.po

File diff suppressed because it is too large Load Diff

1247
po/sl.po

File diff suppressed because it is too large Load Diff

1260
po/sv.po

File diff suppressed because it is too large Load Diff

1246
po/tr.po

File diff suppressed because it is too large Load Diff

1246
po/uk.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -283,6 +283,7 @@ e_randr_11_serialization.c \
e_randr_12.c \
e_randr_12_output.c \
e_randr_12_crtc.c \
e_randr_12_ask_dialog.c \
e_randr_12_serialization.c \
e_remember.c \
e_resist.c \

View File

@ -191,6 +191,9 @@ EINTERN void e_randr_11_serialized_setup_free(E_Randr_Serialized_Setup_11 *ss_11
EINTERN void e_randr_12_serialized_setup_free(E_Randr_Serialized_Setup_12 *ss_12);
EINTERN void e_randr_12_serialized_output_policy_free(E_Randr_Serialized_Output_Policy *policy);
EINTERN Eina_Bool e_randr_12_try_enable_output(E_Randr_Output_Info *output_info, Ecore_X_Randr_Output_Policy policy, Eina_Bool force);
EINTERN void e_randr_12_ask_dialog_new(E_Randr_Output_Info *oi);
EAPI extern E_Randr_Screen_Info e_randr_screen_info;
#endif

View File

@ -19,7 +19,6 @@ static Eina_Bool _x_poll_cb(void *data __UNUSED__);
static Eina_Bool _crtc_change_event_cb(void *data, int type, void *e);
static Eina_Bool _output_change_event_cb(void *data, int type, void *e);
static Eina_Bool _output_property_change_event_cb(void *data, int type, void *e);
static Eina_Bool _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force);
static Ecore_Poller *poller = NULL;
static Eina_List *_event_handlers = NULL;
@ -443,7 +442,7 @@ _output_change_event_cb(void *data __UNUSED__, int type, void *ev)
//only try to enable the monitor if there is no serialized setup
if(!_12_try_restore_configuration())
{
policy_success = _try_enable_output(output_info, EINA_FALSE); //maybe give a success message?
policy_success = e_randr_12_try_enable_output(output_info, output_info->policy, EINA_FALSE); //maybe give a success message?
fprintf(stderr, "E_RANDR: Policy \"%s\" was enforced %ssuccesfully.\n", _POLICIES_STRINGS[output_info->policy - 1], (policy_success ? "" : "un"));
}
}
@ -573,8 +572,8 @@ _output_property_change_event_cb(void *data __UNUSED__, int type, void *ev)
* - try to share the output of a CRTC with other outputs already using it
* (clone).
*/
static Eina_Bool
_try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
EINTERN Eina_Bool
e_randr_12_try_enable_output(E_Randr_Output_Info *output_info, Ecore_X_Randr_Output_Policy policy, Eina_Bool force)
{
Eina_List *iter, *outputs_list = NULL, *common_modes = NULL;
E_Randr_Crtc_Info *crtc_info = NULL, *usable_crtc = NULL;
@ -607,11 +606,15 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
return EINA_FALSE;
//get the CRTC we will refer to, dependend on policy
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_NONE:
return EINA_TRUE;
case ECORE_X_RANDR_OUTPUT_POLICY_ASK:
e_randr_12_ask_dialog_new(output_info);
return EINA_TRUE; //This is a bit incorrect (dialog feedback is async), but probably not worth a lock.
case ECORE_X_RANDR_OUTPUT_POLICY_CLONE:
/*
* Order of approaches to enable a clone (of the primary output):
@ -720,7 +723,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
//get the crtc we will place our's relative to. If it's NULL, this is the
//only output attached, work done.
if (!(crtc_rel = _crtc_according_to_policy_get(usable_crtc, output_info->policy)))
if (!(crtc_rel = _crtc_according_to_policy_get(usable_crtc, policy)))
{
fprintf(stderr, "E_RANDR: CRTC %d enabled. No other CRTC had to be moved.\n", usable_crtc->xid);
ret &= ecore_x_randr_crtc_mode_set(e_randr_screen_info.root, usable_crtc->xid, &output_info->xid, 1, mode_info->xid);
@ -728,7 +731,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
}
//Calculate new CRTC's position according to policy
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ABOVE:
usable_crtc->geometry.x = crtc_rel->geometry.x;
@ -763,7 +766,7 @@ _try_enable_output(E_Randr_Output_Info *output_info, Eina_Bool force)
fprintf(stderr, "E_RANDR: Moved CRTC %d has geometry (x,y,wxh): %d, %d, %dx%d.\n", usable_crtc->xid, usable_crtc->geometry.x, usable_crtc->geometry.y, usable_crtc->geometry.w, usable_crtc->geometry.h);
//following is policy dependend.
switch (output_info->policy)
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ABOVE:
dy = (crtc_rel->geometry.y - usable_crtc->geometry.h);

View File

@ -0,0 +1,82 @@
#include "e.h"
static void _e_randr_ask_cb(void *data, E_Dialog *dia);
static void e_randr_12_memorize_monitor_dialog_new(void);
static void _e_randr_ask_memorize_monitor_cb(void *data, E_Dialog *dia);
static E_Randr_Output_Info *_ask_output_info = NULL;
EINTERN void e_randr_12_ask_dialog_new(E_Randr_Output_Info *oi)
{
E_Dialog *dia = NULL;
if (!oi) return;
dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_randr_ask");
if (!dia) return;
_ask_output_info = oi;
e_dialog_title_set(dia, _("Position of New Monitor"));
e_dialog_icon_set(dia, "display", 64);
e_dialog_text_set(dia, _("<b>Where</b> should the newly connected monitor be put?"));
e_dialog_button_add(dia, _("Left"), "stock-left", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_LEFT);
e_dialog_button_add(dia, _("Right"), "stock-right", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_RIGHT);
e_dialog_button_add(dia, _("Above"), "stock-top", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_ABOVE);
e_dialog_button_add(dia, _("Below"), "stock-bottom", _e_randr_ask_cb, (void*)ECORE_X_RANDR_OUTPUT_POLICY_BELOW);
e_dialog_button_focus_num(dia, 1);
e_win_centered_set(dia->win, 1);
e_dialog_show(dia);
}
static void
_e_randr_ask_cb(void *data __UNUSED__, E_Dialog *dia)
{
Ecore_X_Randr_Output_Policy pos = (Ecore_X_Randr_Output_Policy)data;
Eina_Bool successful = EINA_FALSE;
if (!_ask_output_info)
goto _close_ret;
successful = e_randr_12_try_enable_output(_ask_output_info, pos, EINA_FALSE);
if (successful)
e_randr_12_memorize_monitor_dialog_new();
_ask_output_info = NULL;
_close_ret:
e_object_del(E_OBJECT(dia));
}
static void e_randr_12_memorize_monitor_dialog_new(void)
{
E_Dialog *dia = NULL;
dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_randr_ask");
if (!dia) return;
e_dialog_title_set(dia, _("Memorize This Monitor?"));
e_dialog_icon_set(dia, "display", 64);
e_dialog_text_set(dia, _("Should the position of this monitor be <b>memorized</b>?"));
e_dialog_button_add(dia, _("Yes"), "stock-yes", _e_randr_ask_memorize_monitor_cb, (void*)EINA_TRUE);
e_dialog_button_add(dia, _("No"), "stock-no", _e_randr_ask_memorize_monitor_cb, (void*)EINA_FALSE);
e_dialog_button_focus_num(dia, 1);
e_win_centered_set(dia->win, 1);
e_dialog_show(dia);
}
static void
_e_randr_ask_memorize_monitor_cb(void *data, E_Dialog *dia)
{
Eina_Bool memorize = (Eina_Bool)data;
const E_Randr_Configuration_Store_Modifier modifier = (
E_RANDR_CONFIGURATION_STORE_RESOLUTIONS
| E_RANDR_CONFIGURATION_STORE_ARRANGEMENT
| E_RANDR_CONFIGURATION_STORE_ORIENTATIONS);
if (memorize)
e_randr_store_configuration(modifier);
e_object_del(E_OBJECT(dia));
}

View File

@ -31,7 +31,7 @@ struct _E_Config_Dialog_Data
struct {
Evas_Object *widget;
//Evas_Object *swallowing_edje;
Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none;
Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none, *radio_ask;
int radio_val;
//Evas_Object *current_displays_setup, *current_displays_setup_background, *new_display, *new_display_background;
} policy;

View File

@ -24,12 +24,14 @@ static const char *_POLICIES_STRINGS[] = {
"BELOW",
"LEFT",
"CLONE",
"NONE"};
"NONE",
"ASK"};
static void
_policy_widget_radio_add_callbacks(void)
{
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_ask, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_none, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_clone, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
evas_object_event_callback_add(e_config_runtime_info->gui.widgets.policy.radio_left, EVAS_CALLBACK_MOUSE_UP, _policy_widget_mouse_up_cb, NULL);
@ -87,6 +89,9 @@ policy_widget_basic_create_widgets(Evas *canvas)
if (!(rg = e_widget_radio_group_new(&e_config_runtime_info->gui.widgets.policy.radio_val))) goto _policy_widget_radio_add_fail;
//IMPROVABLE: use enum to determine objects via 'switch'-statement
e_config_runtime_info->gui.widgets.policy.radio_ask = e_widget_radio_add(canvas, _("Ask"), ECORE_X_RANDR_OUTPUT_POLICY_ASK, rg);
e_widget_framelist_object_append(widget, e_config_runtime_info->gui.widgets.policy.radio_ask);
e_config_runtime_info->gui.widgets.policy.radio_above = e_widget_radio_add(canvas, _("Above"), ECORE_X_RANDR_OUTPUT_POLICY_ABOVE, rg);
e_widget_framelist_object_append(widget, e_config_runtime_info->gui.widgets.policy.radio_above);
@ -181,6 +186,7 @@ _policy_widget_mouse_up_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Objec
* 1-liner below.
* snprintf(signal, sizeof(signal), "conf,randr,dialog,policies,%d", e_config_runtime_info->gui.widgets.policy.radio_val);
*/
if (obj == e_config_runtime_info->gui.widgets.policy.radio_ask) policy = ECORE_X_RANDR_OUTPUT_POLICY_ASK;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_above) policy = ECORE_X_RANDR_OUTPUT_POLICY_ABOVE;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_right) policy = ECORE_X_RANDR_OUTPUT_POLICY_RIGHT;
if (obj == e_config_runtime_info->gui.widgets.policy.radio_below) policy = ECORE_X_RANDR_OUTPUT_POLICY_BELOW;
@ -254,33 +260,27 @@ void
policy_widget_update_radio_buttons(E_Config_Randr_Dialog_Output_Dialog_Data *odd)
{
Ecore_X_Randr_Output_Policy policy;
Eina_Bool enable = !odd;
//disable widgets, if no rep is selected
if (!odd)
{
//Evas_Object *radio_above, *radio_right, *radio_below, *radio_left, *radio_clone, *radio_none;
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, EINA_TRUE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, EINA_TRUE);
return;
}
else
{
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, EINA_FALSE);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, EINA_FALSE);
}
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_ask, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_above, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_right, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_below, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_left, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_clone, enable);
e_widget_disabled_set(e_config_runtime_info->gui.widgets.policy.radio_none, enable);
if (!odd) return;
policy = (odd->new_policy != (Ecore_X_Randr_Output_Policy) Ecore_X_Randr_Unset) ? odd->new_policy : odd->previous_policy;
//toggle the switch of the currently used policies
switch (policy)
{
case ECORE_X_RANDR_OUTPUT_POLICY_ASK:
e_widget_radio_toggle_set(e_config_runtime_info->gui.widgets.policy.radio_ask, EINA_TRUE);
break;
case ECORE_X_RANDR_OUTPUT_POLICY_RIGHT:
e_widget_radio_toggle_set(e_config_runtime_info->gui.widgets.policy.radio_right, EINA_TRUE);
break;