Internal: Moved tooltips inside Buttons_pool, and Buttons_pool from globals.h to to windows.c/h for easier modification

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1908 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2012-02-27 01:36:40 +00:00
parent d38f5ee981
commit 2343dcb54c
5 changed files with 501 additions and 500 deletions

View File

@ -66,68 +66,6 @@ Func_effect Effect_function_before_cancel;
///This table holds pointers to the saved window backgrounds. We can have up to 8 windows open at a time.
byte* Window_background[8];
///Table of tooltip texts for menu buttons
char * Menu_tooltip[NB_BUTTONS]=
{
"Hide toolbars / Select ",
"Layers manager ",
"Get/Set transparent col.",
"Merge layer ",
"Add layer ",
"Drop layer ",
"Raise layer ",
"Lower layer ",
"Set frame time ",
"Go to first frame ",
"Go to previous frame ",
"Go to next frame ",
"Go to last frame ",
"Preview animation ",
"Layer select / toggle ",
"Paintbrush choice ",
"Adjust / Transform menu ",
"Freehand draw. / Toggle ",
"Splines / Toggle ",
"Lines / Toggle ",
"Spray / Menu ",
"Floodfill / Replace col.",
"Polylines / Polyforms ",
"Polyfill / Filled Pforms",
"Empty rectangles ",
"Filled rectangles ",
"Empty circles / ellipses",
"Filled circles / ellips.",
"Grad. rect / Grad. menu ",
"Grad. spheres / ellipses",
"Brush grab. / Restore ",
"Lasso / Restore brush ",
#ifdef __ENABLE_LUA__
"Brush effects / factory ",
#else
"Brush effects ",
#endif
"Drawing modes (effects) ",
"Text ",
"Magnify mode / Menu ",
"Pipette / Invert colors ",
"Screen size / Safe. res.",
"Go / Copy to other page ",
"Save as / Save ",
"Load / Re-load ",
"Settings / Skins ",
"Clear / with backcolor ",
"Help / Statistics ",
"Undo / Redo ",
"Kill current page ",
"Quit ",
"Palette editor / setup ",
"Scroll pal. bkwd / Fast ",
"Scroll pal. fwd / Fast ",
"Color #" ,
};
///Save a screen block (usually before erasing it with a new window or a dropdown menu)
void Save_background(byte **buffer, int x_pos, int y_pos, int width, int height)
{
@ -631,7 +569,7 @@ void Status_print_palette_color(byte color)
char str[25];
int i;
strcpy(str,Menu_tooltip[BUTTON_CHOOSE_COL]);
strcpy(str,Buttons_Pool[BUTTON_CHOOSE_COL].Tooltip);
sprintf(str+strlen(str),"%d (%d,%d,%d)",color,Main_palette[color].R,Main_palette[color].G,Main_palette[color].B);
// Pad spaces
for (i=strlen(str); i<24; i++)
@ -1496,7 +1434,7 @@ void Main_handler(void)
Mouse_K = x; // Close_popup waits for end of click and resets Mouse_K...
}
Print_in_menu(Menu_tooltip[button_index],0);
Print_in_menu(Buttons_Pool[button_index].Tooltip,0);
/*if (Gfx->Hover_effect && !Buttons_Pool[button_index].Pressed)
Draw_menu_button(button_index, BUTTON_HIGHLIGHTED);
@ -2570,7 +2508,7 @@ void Get_color_behind_window(byte * color, byte * click)
Paintbrush_hidden=1;
c=-1; // color pointée: au début aucune, comme ça on initialise tout
if (Menu_is_visible_before_window)
Print_in_menu(Menu_tooltip[BUTTON_CHOOSE_COL],0);
Print_in_menu(Buttons_Pool[BUTTON_CHOOSE_COL].Tooltip,0);
Display_cursor();
@ -2600,9 +2538,9 @@ void Get_color_behind_window(byte * color, byte * click)
for (index=strlen(str); index<a; index++)
str[index]=' ';
str[a]=0;
Print_in_menu(str,strlen(Menu_tooltip[BUTTON_CHOOSE_COL]));
Print_in_menu(str,strlen(Buttons_Pool[BUTTON_CHOOSE_COL].Tooltip));
Print_general((26+((d+strlen(Menu_tooltip[BUTTON_CHOOSE_COL]))<<3))*Menu_factor_X,
Print_general((26+((d+strlen(Buttons_Pool[BUTTON_CHOOSE_COL].Tooltip))<<3))*Menu_factor_X,
Menu_status_Y," ",0,c);
}
}

View File

@ -570,35 +570,6 @@ GFX2_GLOBAL T_Window Window_stack[8];
#define Window_draggable Window_stack[Windows_open-1].Draggable
/// Definition of the menu (toolbox)
GFX2_GLOBAL struct
{
// Button aspect
word X_offset; ///< Position relative to menu's left
word Y_offset; ///< Position relative to menu's top
word Width; ///< Button's active width
word Height; ///< Button's active heigth
byte Pressed; ///< Button is currently pressed
byte Shape; ///< Shape, listed in enum ::BUTTON_SHAPES
signed char Icon; ///< Which icon to display: Either the one from the toolbar (-1) or one of ::MENU_SPRITE
// Triggers on mouse/keyboard
Func_action Left_action; ///< Action triggered by a left mouseclick on the button
Func_action Right_action; ///< Action triggered by a right mouseclick on the button
word Left_shortcut[2]; ///< Keyboard shortcut for a left mouseclick
word Right_shortcut[2];///< Keyboard shortcut for a right mouseclick
byte Left_instant; ///< Will not wait for mouse release before triggering action
byte Right_instant; ///< Will not wait for mouse release before triggering action
// Data used when the button is unselected
Func_action Unselect_action; ///< Action triggered by unselecting the button
byte Family; ///< enum ::FAMILY_OF_BUTTONS.
} Buttons_Pool[NB_BUTTONS];
// -- Information about the different drawing modes (effects)
/// Current effecting function. When no effect is selected this is ::No_effect()

View File

@ -782,16 +782,17 @@ void Do_nothing(void)
// Initialiseur d'un bouton:
void Init_button(byte btn_number,
word x_offset , word y_offset,
word width , word height,
byte shape,
Func_action left_action,
Func_action right_action,
byte left_instant,
byte right_instant,
Func_action unselect_action,
byte family)
void Init_button(byte btn_number,
const char* tooltip,
word x_offset, word y_offset,
word width, word height,
byte shape,
Func_action left_action,
Func_action right_action,
byte left_instant,
byte right_instant,
Func_action unselect_action,
byte family)
{
Buttons_Pool[btn_number].X_offset =x_offset;
Buttons_Pool[btn_number].Y_offset =y_offset;
@ -800,6 +801,7 @@ void Init_button(byte btn_number,
Buttons_Pool[btn_number].Pressed =0;
Buttons_Pool[btn_number].Icon =-1;
Buttons_Pool[btn_number].Shape =shape;
Buttons_Pool[btn_number].Tooltip =tooltip;
Buttons_Pool[btn_number].Left_action =left_action;
Buttons_Pool[btn_number].Right_action =right_action;
Buttons_Pool[btn_number].Left_instant =left_instant;
@ -822,503 +824,563 @@ void Init_buttons(void)
Buttons_Pool[button_index].Right_shortcut[0]=0;
Buttons_Pool[button_index].Right_shortcut[1]=0;
Init_button(button_index,
0,0,
1,1,
BUTTON_SHAPE_RECTANGLE,
Do_nothing,Do_nothing,
0,0,
Do_nothing,
0);
"",
0,0,
1,1,
BUTTON_SHAPE_RECTANGLE,
Do_nothing,Do_nothing,
0,0,
Do_nothing,
0);
}
// Ici viennent les déclarations des boutons que l'on sait gérer
Init_button(BUTTON_PAINTBRUSHES,
0,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Paintbrush_menu,Button_Brush_monochrome,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Paintbrush choice ",
0,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Paintbrush_menu,Button_Brush_monochrome,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ADJUST,
0,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Adjust,Button_Transform_menu,
0,0,
Do_nothing,
FAMILY_TOOL);
"Adjust / Transform menu ",
0,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Adjust,Button_Transform_menu,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_DRAW,
17,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Draw,Button_Draw_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
"Freehand draw. / Toggle ",
17,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Draw,Button_Draw_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_CURVES,
17,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Curves,Button_Curves_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
"Splines / Toggle ",
17,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Curves,Button_Curves_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_LINES,
34,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Lines,Button_Lines_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
"Lines / Toggle ",
34,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Lines,Button_Lines_switch_mode,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_AIRBRUSH,
34,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Airbrush,Button_Airbrush_menu,
0,0,
Do_nothing,
FAMILY_TOOL);
"Spray / Menu ",
34,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Airbrush,Button_Airbrush_menu,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_FLOODFILL,
51,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Fill,Button_Replace,
0,0,
Button_Unselect_fill,
FAMILY_TOOL);
"Floodfill / Replace col.",
51,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Fill,Button_Replace,
0,0,
Button_Unselect_fill,
FAMILY_TOOL);
Init_button(BUTTON_POLYGONS,
51,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_polygon,Button_Polyform,
0,0,
Do_nothing,
FAMILY_TOOL);
"Polylines / Polyforms ",
51,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_polygon,Button_Polyform,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_POLYFILL,
52,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Polyfill,Button_Filled_polyform,
0,0,
Do_nothing,
FAMILY_TOOL);
"Polyfill / Filled Pforms",
52,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Polyfill,Button_Filled_polyform,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_RECTANGLES,
68,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Empty_rectangle,Button_Empty_rectangle,
0,0,
Do_nothing,
FAMILY_TOOL);
"Empty rectangles ",
68,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Empty_rectangle,Button_Empty_rectangle,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_FILLRECT,
69,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Filled_rectangle,Button_Filled_rectangle,
0,0,
Do_nothing,
FAMILY_TOOL);
"Filled rectangles ",
69,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Filled_rectangle,Button_Filled_rectangle,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_CIRCLES,
68,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Empty_circle,Button_Empty_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
"Empty circles / ellipses",
68,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Empty_circle,Button_Empty_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_FILLCIRC,
69,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Filled_circle,Button_Filled_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
"Filled circles / ellips.",
69,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Filled_circle,Button_Filled_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_GRADRECT,
85,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Grad_rectangle,Button_Gradients,
0,0,
Do_nothing,
FAMILY_TOOL);
"Grad. rect / Grad. menu ",
85,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Grad_rectangle,Button_Gradients,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_SPHERES,
85,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Grad_circle,Button_Grad_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
"Grad. spheres / ellipses",
85,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Grad_circle,Button_Grad_ellipse,
0,0,
Do_nothing,
FAMILY_TOOL);
Init_button(BUTTON_BRUSH,
106,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Brush,Button_Restore_brush,
0,0,
Button_Unselect_brush,
FAMILY_INTERRUPTION);
"Brush grab. / Restore ",
106,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Brush,Button_Restore_brush,
0,0,
Button_Unselect_brush,
FAMILY_INTERRUPTION);
Init_button(BUTTON_POLYBRUSH,
107,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Lasso,Button_Restore_brush,
0,0,
Button_Unselect_lasso,
FAMILY_INTERRUPTION);
"Lasso / Restore brush ",
107,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Lasso,Button_Restore_brush,
0,0,
Button_Unselect_lasso,
FAMILY_INTERRUPTION);
Init_button(BUTTON_BRUSH_EFFECTS,
106, 18,
16, 16,
BUTTON_SHAPE_RECTANGLE,
#ifdef __ENABLE_LUA__
Button_Brush_FX, Button_Brush_Factory,
"Brush effects / factory ",
#else
Button_Brush_FX, Button_Brush_FX,
"Brush effects ",
#endif
0,0,
Do_nothing,
FAMILY_INSTANT);
106, 18,
16, 16,
BUTTON_SHAPE_RECTANGLE,
#ifdef __ENABLE_LUA__
Button_Brush_FX, Button_Brush_Factory,
#else
Button_Brush_FX, Button_Brush_FX,
#endif
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_EFFECTS,
123,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Effects,Button_Effects,
0,0,
Do_nothing,
FAMILY_EFFECTS);
"Drawing modes (effects) ",
123,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Effects,Button_Effects,
0,0,
Do_nothing,
FAMILY_EFFECTS);
Init_button(BUTTON_TEXT,
123,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Text,Button_Text,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Text ",
123,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Text,Button_Text,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_MAGNIFIER,
140,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Magnify,Button_Magnify_menu,
0,1,
Button_Unselect_magnifier,
FAMILY_INTERRUPTION);
"Magnify mode / Menu ",
140,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Magnify,Button_Magnify_menu,
0,1,
Button_Unselect_magnifier,
FAMILY_INTERRUPTION);
Init_button(BUTTON_COLORPICKER,
140,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Colorpicker,Button_Invert_foreback,
0,0,
Button_Unselect_colorpicker,
FAMILY_INTERRUPTION);
"Pipette / Invert colors ",
140,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Colorpicker,Button_Invert_foreback,
0,0,
Button_Unselect_colorpicker,
FAMILY_INTERRUPTION);
Init_button(BUTTON_RESOL,
161,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Resolution,Button_Safety_resolution,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Screen size / Safe. res.",
161,1,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Resolution,Button_Safety_resolution,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_PAGE,
161,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Page,Button_Copy_page,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Go / Copy to other page ",
161,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Page,Button_Copy_page,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_SAVE,
178,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Save,Button_Autosave,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Save as / Save ",
178,1,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Save,Button_Autosave,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LOAD,
179,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Load,Button_Reload,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Load / Re-load ",
179,2,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Load,Button_Reload,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_SETTINGS,
178,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Settings,Button_Skins,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Settings / Skins ",
178,18,
16,16,
BUTTON_SHAPE_RECTANGLE,
Button_Settings,Button_Skins,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_CLEAR,
195,1,
17,16,
BUTTON_SHAPE_RECTANGLE,
Button_Clear,Button_Clear_with_backcolor,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Clear / with backcolor ",
195,1,
17,16,
BUTTON_SHAPE_RECTANGLE,
Button_Clear,Button_Clear_with_backcolor,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_HELP,
195,18,
17,16,
BUTTON_SHAPE_RECTANGLE,
Button_Help,Button_Stats,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Help / Statistics ",
195,18,
17,16,
BUTTON_SHAPE_RECTANGLE,
Button_Help,Button_Stats,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_UNDO,
213,1,
19,12,
BUTTON_SHAPE_RECTANGLE,
Button_Undo,Button_Redo,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Undo / Redo ",
213,1,
19,12,
BUTTON_SHAPE_RECTANGLE,
Button_Undo,Button_Redo,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_KILL,
213,14,
19,7,
BUTTON_SHAPE_RECTANGLE,
Button_Kill,Button_Kill,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Kill current page ",
213,14,
19,7,
BUTTON_SHAPE_RECTANGLE,
Button_Kill,Button_Kill,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_QUIT,
213,22,
19,12,
BUTTON_SHAPE_RECTANGLE,
Button_Quit,Button_Quit,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Quit ",
213,22,
19,12,
BUTTON_SHAPE_RECTANGLE,
Button_Quit,Button_Quit,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_PALETTE,
237,9,
16,8,
BUTTON_SHAPE_RECTANGLE,
Button_Palette,Button_Secondary_palette,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Palette editor / setup ",
237,9,
16,8,
BUTTON_SHAPE_RECTANGLE,
Button_Palette,Button_Secondary_palette,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_PAL_LEFT,
237,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Pal_left,Button_Pal_left_fast,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Scroll pal. bkwd / Fast ",
237,18,
15,15,
BUTTON_SHAPE_TRIANGLE_TOP_LEFT,
Button_Pal_left,Button_Pal_left_fast,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_PAL_RIGHT,
238,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Pal_right,Button_Pal_right_fast,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Scroll pal. fwd / Fast ",
238,19,
15,15,
BUTTON_SHAPE_TRIANGLE_BOTTOM_RIGHT,
Button_Pal_right,Button_Pal_right_fast,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_CHOOSE_COL,
MENU_WIDTH+1,1,
1,32, // La largeur est mise à jour à chq chngmnt de mode
BUTTON_SHAPE_NO_FRAME,
Button_Select_forecolor,Button_Select_backcolor,
1,1,
Do_nothing,
FAMILY_INSTANT);
"Color #" ,
MENU_WIDTH+1,1,
1,32, // La largeur est mise à jour à chq chngmnt de mode
BUTTON_SHAPE_NO_FRAME,
Button_Select_forecolor,Button_Select_backcolor,
1,1,
Do_nothing,
FAMILY_INSTANT);
// Layer bar
#ifndef NOLAYERS
Init_button(BUTTON_LAYER_MENU,
0,0,
57,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_menu, Button_Layer_menu,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Layers manager ",
0,0,
57,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_menu, Button_Layer_menu,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_COLOR,
58,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_get_transparent, Button_Layer_set_transparent,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Get/Set transparent col.",
58,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_get_transparent, Button_Layer_set_transparent,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_MERGE,
72,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_merge, Button_Layer_merge,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Merge layer ",
72,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_merge, Button_Layer_merge,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_ADD,
86,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_add, Button_Layer_add,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Add layer ",
86,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_add, Button_Layer_add,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_REMOVE,
100,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_remove, Button_Layer_remove,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Drop layer ",
100,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_remove, Button_Layer_remove,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_DOWN,
114,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_down, Button_Layer_down,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Lower layer ",
114,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_down, Button_Layer_down,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_UP,
128,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_up, Button_Layer_up,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Raise layer ",
128,0,
13,9,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_up, Button_Layer_up,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_SELECT,
142,0,
13,9, // Will be updated according to actual number of layers
BUTTON_SHAPE_NO_FRAME,
Button_Layer_select, Button_Layer_toggle,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Layer select / toggle ",
142,0,
13,9, // Will be updated according to actual number of layers
BUTTON_SHAPE_NO_FRAME,
Button_Layer_select, Button_Layer_toggle,
0,0,
Do_nothing,
FAMILY_INSTANT);
#else
// Anim bar
Init_button(BUTTON_LAYER_MENU,
0,0,
44,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_menu, Button_Layer_menu,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Layers manager ",
0,0,
44,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_menu, Button_Layer_menu,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ANIM_TIME,
45,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_time, Button_Anim_time,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Set frame time ",
45,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_time, Button_Anim_time,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ANIM_FIRST_FRAME,
116,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_first_frame, Button_Anim_first_frame,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Go to first frame ",
116,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_first_frame, Button_Anim_first_frame,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ANIM_PREV_FRAME,
130,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_prev_frame, Button_Anim_continuous_prev,
0,1,
Do_nothing,
FAMILY_INSTANT);
"Go to previous frame ",
130,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_prev_frame, Button_Anim_continuous_prev,
0,1,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ANIM_NEXT_FRAME,
144,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_next_frame, Button_Anim_continuous_next,
0,1,
Do_nothing,
FAMILY_INSTANT);
"Go to next frame ",
144,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_next_frame, Button_Anim_continuous_next,
0,1,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_ANIM_LAST_FRAME,
158,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_last_frame, Button_Anim_last_frame,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Go to last frame ",
158,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Anim_last_frame, Button_Anim_last_frame,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_ADD,
177,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_add, Button_Layer_add,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Add layer ",
177,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_add, Button_Layer_add,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_REMOVE,
191,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_remove, Button_Layer_remove,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Drop layer ",
191,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_remove, Button_Layer_remove,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_DOWN,
205,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_down, Button_Layer_down,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Lower layer ",
205,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_down, Button_Layer_down,
0,0,
Do_nothing,
FAMILY_INSTANT);
Init_button(BUTTON_LAYER_UP,
219,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_up, Button_Layer_up,
0,0,
Do_nothing,
FAMILY_INSTANT);
"Raise layer ",
219,0,
13,13,
BUTTON_SHAPE_RECTANGLE,
Button_Layer_up, Button_Layer_up,
0,0,
Do_nothing,
FAMILY_INSTANT);
#endif
// Status bar
Init_button(BUTTON_HIDE,
0,0,
16,9,
BUTTON_SHAPE_RECTANGLE,
Button_Toggle_all_toolbars, Button_Toggle_toolbar,
0,1,
Do_nothing,
FAMILY_TOOLBAR);
"Hide toolbars / Select ",
0,0,
16,9,
BUTTON_SHAPE_RECTANGLE,
Button_Toggle_all_toolbars, Button_Toggle_toolbar,
0,1,
Do_nothing,
FAMILY_TOOLBAR);
}

View File

@ -41,6 +41,7 @@
#include "sdlscreen.h"
#include "palette.h"
T_Toolbar_button Buttons_Pool[NB_BUTTONS];
/// Width of one layer button, in pixels before scaling
word Layer_button_width = 1;

View File

@ -114,4 +114,33 @@ extern word Layer_button_width;
/// Copy viewport settings and offsets from the Main to the Spare.
void Copy_view_to_spare(void);
/// Definition of a toolbar button
typedef struct
{
// Button aspect
word X_offset; ///< Position relative to menu's left
word Y_offset; ///< Position relative to menu's top
word Width; ///< Button's active width
word Height; ///< Button's active heigth
byte Pressed; ///< Button is currently pressed
byte Shape; ///< Shape, listed in enum ::BUTTON_SHAPES
signed char Icon; ///< Which icon to display: Either the one from the toolbar (-1) or one of ::MENU_SPRITE
// Triggers on mouse/keyboard
Func_action Left_action; ///< Action triggered by a left mouseclick on the button
Func_action Right_action; ///< Action triggered by a right mouseclick on the button
word Left_shortcut[2]; ///< Keyboard shortcut for a left mouseclick
word Right_shortcut[2];///< Keyboard shortcut for a right mouseclick
byte Left_instant; ///< Will not wait for mouse release before triggering action
byte Right_instant; ///< Will not wait for mouse release before triggering action
const char * Tooltip; ///< Text in status bar when button is hovered
// Data used when the button is unselected
Func_action Unselect_action; ///< Action triggered by unselecting the button
byte Family; ///< enum ::FAMILY_OF_BUTTONS.
} T_Toolbar_button;
extern T_Toolbar_button Buttons_Pool[NB_BUTTONS];
#endif