Issue 400:Button for changing stylus click into right click behavior. Done with actual keyboard keys, now to do joystick buttons

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1691 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2011-01-22 17:15:17 +00:00
parent eebf3784c3
commit 7ef353e8fd
6 changed files with 205 additions and 82 deletions

View File

@ -762,6 +762,15 @@ const T_Lookup Lookup_MouseSpeed[] = {
{NULL,-1},
};
const T_Lookup Lookup_SwapButtons[] = {
{"None",0},
{"Shift",MOD_SHIFT},
{"Control",MOD_CTRL},
{"Alt",MOD_ALT},
{"Meta",MOD_META},
{NULL,-1},
};
typedef struct {
const char* Label;
byte Type; // 0: label, 1+: setting (size in bytes)
@ -920,7 +929,6 @@ void Button_Settings(void)
T_Setting setting[SETTING_PER_PAGE*SETTING_PAGES] = {
{" --- GUI ---",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"Opening message:",1,&(selected_config.Opening_message),0,1,0,Lookup_YesNo},
{"Menu ratio adapt:",1,&(selected_config.Ratio),0,1,0,Lookup_MenuRatio},
{"Draw limits:",1,&(selected_config.Display_image_limits),0,1,0,Lookup_YesNo},
@ -930,9 +938,9 @@ void Button_Settings(void)
{"Grid XOR color:",1,&(selected_config.Grid_XOR_color),0,255,3,NULL},
{"Sync views:",1,&(selected_config.Sync_views),0,1,0,Lookup_YesNo},
{"",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{" --- Input ---",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"Scrollbar speed",0,NULL,0,0,0,NULL},
{" on left click:",1,&(selected_config.Delay_left_click_on_slider),1,255,4,NULL},
{" on right click:",1,&(selected_config.Delay_right_click_on_slider),1,255,4,NULL},
@ -942,9 +950,9 @@ void Button_Settings(void)
{"Mouse speed (fullscreen)",0,NULL,0,0,0,NULL},
{" horizontally:",1,&(selected_config.Mouse_sensitivity_index_x),1,4,0,Lookup_MouseSpeed},
{" vertically:",1,&(selected_config.Mouse_sensitivity_index_y),1,4,0,Lookup_MouseSpeed},
{"Key to swap buttons:",2,&(selected_config.Swap_buttons),0,0,0,Lookup_SwapButtons},
{" --- Editing ---",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"Adjust brush pick:",1,&(selected_config.Adjust_brush_pick),0,1,0,Lookup_YesNo},
{"Undo pages:",1,&(selected_config.Max_undo_pages),1,99,5,NULL},
{"Vertices per polygon:",4,&(selected_config.Nb_max_vertices_per_polygon),2,16384,5,NULL},
@ -954,9 +962,9 @@ void Button_Settings(void)
{"Auto count colors:",1,&(selected_config.Auto_nb_used),0,1,0,Lookup_YesNo},
{"Right click colorpick:",1,&(selected_config.Right_click_colorpick),0,1,0,Lookup_YesNo},
{"",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{" --- File selector ---",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"Show in fileselector",0,NULL,0,0,0,NULL},
{" Hidden files:",4,&(selected_config.Show_hidden_files),0,1,0,Lookup_YesNo},
{" Hidden dirs:",4,&(selected_config.Show_hidden_directories),0,1,0,Lookup_YesNo},
@ -966,9 +974,9 @@ void Button_Settings(void)
{"Auto set resolution:",1,&(selected_config.Auto_set_res), 0,1,0,Lookup_YesNo},
{" According to:",1,&(selected_config.Set_resolution_according_to), 1,2,0,Lookup_AutoRes},
{"Backup:",1,&(selected_config.Backup), 0,1,0,Lookup_YesNo},
{"",0,NULL,0,0,0,NULL},
{" --- Format options ---",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"Screen size in GIF:",1,&(selected_config.Screen_size_in_GIF),0,1,0,Lookup_YesNo},
{"Clear palette:",1,&(selected_config.Clear_palette),0,1,0,Lookup_YesNo},
{"",0,NULL,0,0,0,NULL},
@ -978,6 +986,7 @@ void Button_Settings(void)
{"",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
{"",0,NULL,0,0,0,NULL},
};

View File

@ -2389,6 +2389,14 @@ static const T_Help_table helptable_settings_details[] =
HELP_TEXT ("GrafX2 to recognize them as a combo.")
HELP_TEXT ("")
HELP_TEXT ("")
HELP_BOLD (" Swap buttons")
HELP_TEXT ("This setting determines which key inverts")
HELP_TEXT ("the mouse buttons when it's held : A left")
HELP_TEXT ("click is then interpreted as a right-click.")
HELP_TEXT ("It's especially useful for one-button")
HELP_TEXT ("controllers, such as touchscreens and")
HELP_TEXT ("tablets.")
HELP_TEXT ("")
HELP_TITLE("EDITING")
HELP_TEXT ("")
HELP_TEXT ("")
@ -2432,7 +2440,7 @@ static const T_Help_table helptable_settings_details[] =
HELP_TEXT ("This mode prevents you from painting with")
HELP_TEXT ("Background color.")
HELP_TEXT ("This option is ignored when the Shade,")
HELP_TEXT ("Quick-shade, or Tiling mode is used.")
HELP_TEXT ("Quick-shade, or Tiling mode is used.")
};
static const T_Help_table helptable_clear[] =

View File

@ -83,6 +83,7 @@ int Mouse_moved; ///< Boolean, Set to true if any cursor movement occurs.
word Input_new_mouse_X;
word Input_new_mouse_Y;
byte Input_new_mouse_K;
byte Button_inverter=0; // State of the key that swaps mouse buttons.
byte Mouse_mode = 0; ///< Mouse mode = 0:normal, 1:emulated with custom sensitivity.
short Mouse_virtual_x_position;
@ -338,11 +339,19 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
switch(event.button)
{
case SDL_BUTTON_LEFT:
Input_new_mouse_K |= 1;
if (Button_inverter)
Input_new_mouse_K |= 2;
else
Input_new_mouse_K |= 1;
break;
break;
case SDL_BUTTON_RIGHT:
Input_new_mouse_K |= 2;
if (Button_inverter)
Input_new_mouse_K |= 1;
else
Input_new_mouse_K |= 2;
break;
break;
case SDL_BUTTON_MIDDLE:
@ -368,11 +377,17 @@ int Handle_mouse_release(SDL_MouseButtonEvent event)
switch(event.button)
{
case SDL_BUTTON_LEFT:
Input_new_mouse_K &= ~1;
if (Button_inverter)
Input_new_mouse_K &= ~2;
else
Input_new_mouse_K &= ~1;
break;
case SDL_BUTTON_RIGHT:
Input_new_mouse_K &= ~2;
if (Button_inverter)
Input_new_mouse_K &= ~1;
else
Input_new_mouse_K &= ~2;
break;
}
@ -384,8 +399,45 @@ int Handle_mouse_release(SDL_MouseButtonEvent event)
int Handle_key_press(SDL_KeyboardEvent event)
{
//Appui sur une touche du clavier
int modifier;
Key = Keysym_to_keycode(event.keysym);
Key_ANSI = Keysym_to_ANSI(event.keysym);
switch(event.keysym.sym)
{
case SDLK_RSHIFT:
case SDLK_LSHIFT:
modifier=MOD_SHIFT;
break;
case SDLK_RCTRL:
case SDLK_LCTRL:
modifier=MOD_CTRL;
break;
case SDLK_RALT:
case SDLK_LALT:
case SDLK_MODE:
modifier=MOD_ALT;
break;
case SDLK_RMETA:
case SDLK_LMETA:
modifier=MOD_META;
break;
default:
modifier=0;
}
if (Config.Swap_buttons && modifier == Config.Swap_buttons && Button_inverter==0)
{
Button_inverter=1;
if (Input_new_mouse_K)
{
Input_new_mouse_K ^= 3; // Flip bits 0 and 1
return Move_cursor_with_constraints();
}
}
if(Is_shortcut(Key,SPECIAL_MOUSE_UP))
{
@ -433,6 +485,15 @@ int Release_control(int key_code, int modifier)
Snap_axis = 0;
need_feedback = 1;
}
if (Config.Swap_buttons && modifier == Config.Swap_buttons && Button_inverter==1)
{
Button_inverter=0;
if (Input_new_mouse_K)
{
Input_new_mouse_K ^= 3; // Flip bits 0 and 1
return Move_cursor_with_constraints();
}
}
if((key_code && key_code == (Config_Key[SPECIAL_MOUSE_UP][0]&0x0FFF)) || (Config_Key[SPECIAL_MOUSE_UP][0]&modifier) ||
(key_code && key_code == (Config_Key[SPECIAL_MOUSE_UP][1]&0x0FFF)) || (Config_Key[SPECIAL_MOUSE_UP][1]&modifier))
@ -538,12 +599,12 @@ int Handle_joystick_press(SDL_JoyButtonEvent event)
}
if (event.button == Joybutton_left_click)
{
Input_new_mouse_K=1;
Input_new_mouse_K = Button_inverter ? 2 : 1;
return Move_cursor_with_constraints();
}
if (event.button == Joybutton_right_click)
{
Input_new_mouse_K=2;
Input_new_mouse_K = Button_inverter ? 1 : 2;
return Move_cursor_with_constraints();
}
switch(event.button)
@ -768,6 +829,7 @@ int Get_input(int sleep_time)
Mouse_moved=0;
Input_new_mouse_X = Mouse_X;
Input_new_mouse_Y = Mouse_Y;
Input_new_mouse_K = Mouse_K;
// Not using SDL_PollEvent() because every call polls the input
// device. In some cases such as high-sensitivity mouse or cheap

View File

@ -916,6 +916,29 @@ int Load_INI(T_Config * conf)
conf->Sync_views=(values[0]!=0);
}
conf->Swap_buttons=0;
// Optional, key for swap buttons (>=2.3)
if (!Load_INI_get_values (file,buffer,"Swap_buttons",1,values))
{
switch(values[0])
{
case 1:
conf->Swap_buttons=MOD_SHIFT;
break;
case 2:
conf->Swap_buttons=MOD_CTRL;
break;
case 3:
conf->Swap_buttons=MOD_ALT;
break;
case 4:
conf->Swap_buttons=MOD_META;
break;
}
}
// Insert new values here
fclose(file);

View File

@ -393,8 +393,8 @@ void Save_INI_flush(FILE * old_file,FILE * new_file,char * buffer)
int Save_INI(T_Config * conf)
{
FILE * Ancien_fichier;
FILE * Nouveau_fichier;
FILE * old_file;
FILE * new_file;
char * buffer;
int values[3];
char filename[MAX_PATH_CHARACTERS];
@ -426,236 +426,236 @@ int Save_INI(T_Config * conf)
// On récupère un fichier INI "propre" à partir de gfx2def.ini
strcpy(ref_ini_file,Data_directory);
strcat(ref_ini_file,"gfx2def.ini");
Ancien_fichier=fopen(ref_ini_file,"rb");
if (Ancien_fichier==0)
old_file=fopen(ref_ini_file,"rb");
if (old_file==0)
{
fclose(Ancien_fichier);
fclose(old_file);
free(buffer);
return ERROR_INI_MISSING;
}
Nouveau_fichier=fopen(filename,"wb");
if (Nouveau_fichier==0)
new_file=fopen(filename,"wb");
if (new_file==0)
{
free(buffer);
return ERROR_SAVING_INI;
}
if ((return_code=Save_INI_reach_group(Ancien_fichier,Nouveau_fichier,buffer,"[MOUSE]")))
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[MOUSE]")))
goto Erreur_Retour;
values[0]=conf->Mouse_sensitivity_index_x;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"X_sensitivity",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"X_sensitivity",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Mouse_sensitivity_index_y;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Y_sensitivity",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Y_sensitivity",1,values,0)))
goto Erreur_Retour;
values[0]=0;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"X_correction_factor",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"X_correction_factor",1,values,0)))
goto Erreur_Retour;
values[0]=0;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Y_correction_factor",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Y_correction_factor",1,values,0)))
goto Erreur_Retour;
values[0]=(conf->Cursor)+1;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Cursor_aspect",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Cursor_aspect",1,values,0)))
goto Erreur_Retour;
if ((return_code=Save_INI_reach_group(Ancien_fichier,Nouveau_fichier,buffer,"[MENU]")))
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[MENU]")))
goto Erreur_Retour;
values[0]=conf->Fav_menu_colors[2].R>>2;
values[1]=conf->Fav_menu_colors[2].G>>2;
values[2]=conf->Fav_menu_colors[2].B>>2;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Light_color",3,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Light_color",3,values,0)))
goto Erreur_Retour;
values[0]=conf->Fav_menu_colors[1].R>>2;
values[1]=conf->Fav_menu_colors[1].G>>2;
values[2]=conf->Fav_menu_colors[1].B>>2;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Dark_color",3,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Dark_color",3,values,0)))
goto Erreur_Retour;
values[0]=conf->Ratio;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Menu_ratio",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Menu_ratio",1,values,0)))
goto Erreur_Retour;
if ((return_code=Save_INI_reach_group(Ancien_fichier,Nouveau_fichier,buffer,"[FILE_SELECTOR]")))
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[FILE_SELECTOR]")))
goto Erreur_Retour;
values[0]=conf->Show_hidden_files?1:0;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Show_hidden_files",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Show_hidden_files",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Show_hidden_directories?1:0;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Show_hidden_directories",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Show_hidden_directories",1,values,1)))
goto Erreur_Retour;
/* values[0]=conf->Show_system_directories?1:0;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Show_system_directories",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Show_system_directories",1,values,1)))
goto Erreur_Retour;
*/
values[0]=conf->Timer_delay;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Preview_delay",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Preview_delay",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Maximize_preview;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Maximize_preview",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Maximize_preview",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Find_file_fast;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Find_file_fast",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Find_file_fast",1,values,0)))
goto Erreur_Retour;
if ((return_code=Save_INI_reach_group(Ancien_fichier,Nouveau_fichier,buffer,"[LOADING]")))
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[LOADING]")))
goto Erreur_Retour;
values[0]=conf->Auto_set_res;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Auto_set_resolution",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Auto_set_resolution",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Set_resolution_according_to;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Set_resolution_according_to",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Set_resolution_according_to",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Clear_palette;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Clear_palette",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Clear_palette",1,values,1)))
goto Erreur_Retour;
if ((return_code=Save_INI_reach_group(Ancien_fichier,Nouveau_fichier,buffer,"[MISCELLANEOUS]")))
if ((return_code=Save_INI_reach_group(old_file,new_file,buffer,"[MISCELLANEOUS]")))
goto Erreur_Retour;
values[0]=conf->Display_image_limits;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Draw_limits",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Draw_limits",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Adjust_brush_pick;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Adjust_brush_pick",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Adjust_brush_pick",1,values,1)))
goto Erreur_Retour;
values[0]=2-conf->Coords_rel;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Coordinates",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Coordinates",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Backup;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Backup",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Backup",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Max_undo_pages;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Undo_pages",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Undo_pages",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Delay_left_click_on_slider;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Gauges_scrolling_speed_Left",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Gauges_scrolling_speed_Left",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Delay_right_click_on_slider;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Gauges_scrolling_speed_Right",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Gauges_scrolling_speed_Right",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Auto_save;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Auto_save",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Auto_save",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Nb_max_vertices_per_polygon;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Vertices_per_polygon",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Vertices_per_polygon",1,values,0)))
goto Erreur_Retour;
values[0]=conf->Fast_zoom;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Fast_zoom",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Fast_zoom",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Separate_colors;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Separate_colors",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Separate_colors",1,values,1)))
goto Erreur_Retour;
values[0]=conf->FX_Feedback;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"FX_feedback",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"FX_feedback",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Safety_colors;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Safety_colors",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Safety_colors",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Opening_message;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Opening_message",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Opening_message",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Clear_with_stencil;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Clear_with_stencil",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Clear_with_stencil",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Auto_discontinuous;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Auto_discontinuous",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Auto_discontinuous",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Screen_size_in_GIF;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Save_screen_size_in_GIF",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Save_screen_size_in_GIF",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Auto_nb_used;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Auto_nb_colors_used",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Auto_nb_colors_used",1,values,1)))
goto Erreur_Retour;
if ((return_code=Save_INI_set_strings (Ancien_fichier,Nouveau_fichier,buffer,"Default_video_mode",Mode_label(conf->Default_resolution))))
if ((return_code=Save_INI_set_strings (old_file,new_file,buffer,"Default_video_mode",Mode_label(conf->Default_resolution))))
goto Erreur_Retour;
values[0]=Video_mode[0].Width;
values[1]=Video_mode[0].Height;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Default_window_size",2,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Default_window_size",2,values,0)))
goto Erreur_Retour;
values[0]=(conf->Mouse_merge_movement);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Merge_movement",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Merge_movement",1,values,0)))
goto Erreur_Retour;
values[0]=(conf->Palette_cells_X);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Palette_cells_X",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Palette_cells_X",1,values,0)))
goto Erreur_Retour;
values[0]=(conf->Palette_cells_Y);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Palette_cells_Y",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Palette_cells_Y",1,values,0)))
goto Erreur_Retour;
for (index=0;index<NB_BOOKMARKS;index++)
{
if ((return_code=Save_INI_set_strings (Ancien_fichier,Nouveau_fichier,buffer,"Bookmark_label",conf->Bookmark_label[index])))
if ((return_code=Save_INI_set_strings (old_file,new_file,buffer,"Bookmark_label",conf->Bookmark_label[index])))
goto Erreur_Retour;
if ((return_code=Save_INI_set_strings (Ancien_fichier,Nouveau_fichier,buffer,"Bookmark_directory",conf->Bookmark_directory[index])))
if ((return_code=Save_INI_set_strings (old_file,new_file,buffer,"Bookmark_directory",conf->Bookmark_directory[index])))
goto Erreur_Retour;
}
values[0]=(conf->Palette_vertical);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Palette_vertical",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Palette_vertical",1,values,1)))
goto Erreur_Retour;
values[0]=conf->Window_pos_x;
values[1]=conf->Window_pos_y;
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Window_position",2,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Window_position",2,values,0)))
goto Erreur_Retour;
values[0]=(conf->Double_click_speed);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Double_click_speed",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Double_click_speed",1,values,0)))
goto Erreur_Retour;
values[0]=(conf->Double_key_speed);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Double_key_speed",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Double_key_speed",1,values,0)))
goto Erreur_Retour;
if ((return_code=Save_INI_set_strings (Ancien_fichier,Nouveau_fichier,buffer,"Skin_file",conf->Skin_file)))
if ((return_code=Save_INI_set_strings (old_file,new_file,buffer,"Skin_file",conf->Skin_file)))
goto Erreur_Retour;
if ((return_code=Save_INI_set_strings (Ancien_fichier,Nouveau_fichier,buffer,"Font_file",conf->Font_file)))
if ((return_code=Save_INI_set_strings (old_file,new_file,buffer,"Font_file",conf->Font_file)))
goto Erreur_Retour;
values[0]=(conf->Grid_XOR_color);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Grid_XOR_color",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Grid_XOR_color",1,values,0)))
goto Erreur_Retour;
values[0]=(Pixel_ratio);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Pixel_ratio",1,values,0))) {
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Pixel_ratio",1,values,0))) {
DEBUG("saving pixel ratio",return_code);
goto Erreur_Retour;
}
@ -670,23 +670,43 @@ int Save_INI(T_Config * conf)
for (; index<8;index++)
values[0] |= (1<<index);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Menubars_visible",1,values,0)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Menubars_visible",1,values,0)))
goto Erreur_Retour;
values[0]=(conf->Right_click_colorpick);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Right_click_colorpick",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Right_click_colorpick",1,values,1)))
goto Erreur_Retour;
values[0]=(conf->Sync_views);
if ((return_code=Save_INI_set_values (Ancien_fichier,Nouveau_fichier,buffer,"Sync_views",1,values,1)))
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Sync_views",1,values,1)))
goto Erreur_Retour;
switch(conf->Swap_buttons)
{
case MOD_SHIFT:
values[0]=1;
break;
case MOD_CTRL:
values[0]=2;
break;
case MOD_ALT:
values[0]=3;
break;
case MOD_META:
values[0]=4;
break;
default:
values[0]=0;
}
if ((return_code=Save_INI_set_values (old_file,new_file,buffer,"Swap_buttons",1,values,0)))
goto Erreur_Retour;
// Insert new values here
Save_INI_flush(Ancien_fichier,Nouveau_fichier,buffer);
Save_INI_flush(old_file,new_file,buffer);
fclose(Nouveau_fichier);
fclose(Ancien_fichier);
fclose(new_file);
fclose(old_file);
// On efface le fichier temporaire <=> Ancienne version du .INI
if (ini_file_exists)
@ -698,8 +718,8 @@ int Save_INI(T_Config * conf)
Erreur_Retour:
fclose(Nouveau_fichier);
fclose(Ancien_fichier);
fclose(new_file);
fclose(old_file);
free(buffer);
return return_code;

View File

@ -358,6 +358,7 @@ typedef struct
byte Right_click_colorpick; ///< Boolean, true to enable a "tablet" mode, where RMB acts as instant colorpicker
byte Sync_views; ///< Boolean, true when the Main and Spare should share their viewport settings.
byte Stylus_mode; ///< Boolean, true to tweak some tools (eg:Curve) for single-button stylus.
word Swap_buttons; ///< Sets which key swaps mouse buttons : 0=none, or MOD_SHIFT, MOD_CTRL, MOD_ALT, MOD_META.
} T_Config;
// Structures utilisées pour les descriptions de pages et de liste de pages.