// RFS: don't forget to change values in the menu definition in case those are modified.
#define MENU_ADD_CMD 1
#define MENU_DEL_CMD 2
#define MENU_MODIFY_CMD 3
#define MENU_SEARCH_CMD 4
#define MENU_NEXT_CMD 5
#define MENU_OTHER_CMDS 6
#define MENU_DISPMODE_CMDS 7
#define MENU_REOPEN_DICT_CMD 8
#define MENU_TOTAL_NR_ENTRIES_CMD 9
#define MENU_NR_ENTRIES_IN_PART_CMD 10
#define MENU_FIRST_ENTRY_IN_PART_CMD 11
//#define MENU_CLOSE_DICT_CMD 12
#define MENU_DISPMODE_ORIG_WORD_CMD 12
#define MENU_DISPMODE_TRANS_WORD_CMD 13
#define MENU_DISPMODE_ORIG_CONTEXT_CMD 14
#define MENU_DISPMODE_TRANS_CONTEXT_CMD 15
extern const void menu;
///////////////////////////////////////////////////////////////////////////////
// The menu at the top of the screen.
asm ("
.globl menu
menu:
.word add_text-menu
.word 0x0004 | Flags (?).
.word 16 | Total number of entries.
.byte "C89_92S("160","240")", 18 | Width, height.
.word 6 | Number of main items.
.word 0 | Dynamic size.
.word 0 | Offset to redefinable icons, 0 if their number is 0.
.word 0 | Number of redefinable icons
.long -1
main_entries:
.word MT_TEXT + 1
.word add_text - title_text
.word MT_TEXT + 2
.word del_text - title_text
.word MT_TEXT + 3
.word modify_text - title_text
.word MT_TEXT + 4
.word search_text - title_text
.word MT_TEXT + 5
.word next_text - title_text
.word MT_TEXT + MT_CASCADE + 6
.word others_text - title_text
.word others_cascade - menu
.long -1
others_cascade:
.word MT_TEXT + MT_CASCADE + 7
.word dispmode_text - title_text
.word dispmode_cascade - menu
.word MT_TEXT + 8
.word reopen_dict_text - title_text
.word MT_TEXT + 9
.word total_nr_entries_text - title_text
.word MT_TEXT + 10
.word nr_entries_in_part_text - title_text
.word MT_TEXT + 11
.word first_entry_in_part_text - title_text
| .word MT_TEXT + 12
| .word close_dict_text - title_text
.long -1
dispmode_cascade:
.word MT_TEXT + 12
.word disp_orig_word_text - title_text
.word MT_TEXT + 13
.word disp_trans_word_text - title_text
.word MT_TEXT + 14
.word disp_orig_ctxt_text - title_text
.word MT_TEXT + 15
.word disp_trans_ctxt_text - title_text
.long -1
title_text:
| .asciz \"Title\"
add_text:
.asciz \""MENU_ADD_STR"\"
del_text:
.asciz \""MENU_DEL_STR"\"
modify_text:
.asciz \""MENU_MODIFY_STR"\"
search_text:
.asciz \""MENU_SEARCH_STR"\"
next_text:
.asciz \""MENU_NEXT_STR"\"
others_text:
.asciz \""MENU_OTHERS_STR"\"
dispmode_text:
.asciz \""MENU_DISP_MODE_STR"\"
reopen_dict_text:
.asciz \""MENU_REOPEN_DICT_STR"\"
total_nr_entries_text:
.asciz \""MENU_TOTAL_NR_ENTRIES_STR"\"
nr_entries_in_part_text:
.asciz \""MENU_NR_ENTRIES_IN_PART_STR"\"
first_entry_in_part_text:
.asciz \""MENU_FIRST_ENTRY_IN_PART_STR"\"
| close_dict_text:
| .asciz \""MENU_CLOSE_DICT_STR"\"
disp_orig_word_text:
.asciz \""ORIG_WORD_SHORT_STR"\"
disp_trans_word_text:
.asciz \""TRANS_WORD_SHORT_STR"\"
disp_orig_ctxt_text:
.asciz \""ORIG_CONTEXT_SHORT_STR"\"
disp_trans_ctxt_text:
.asciz \""TRANS_CONTEXT_SHORT_STR"\"
| end_menu:
.even
");
///////////////////////////////////////////////////////////////////////////////
// "Entry" (add/delete/modify) dialog definition.
// Taken from the TIGCC examples made by "Wazabbe" and improved by "C Bien".
#define entryDialogNrItems 5
#define entryDialogStrings ENTRY_DIALOG_TITLE_STR \
"\0" ORIG_WORD_SHORT_STR \
"\0" TRANS_WORD_SHORT_STR \
"\0" ORIG_CONTEXT_SHORT_STR \
"\0" TRANS_CONTEXT_SHORT_STR \
"\0"
__attribute__((__may_alias__)) SIZED_DIALOG(entryDialogNrItems,offsetof(SIZED_DIALOG(entryDialogNrItems,0),String)) entryDialog =
{
offsetof(SIZED_DIALOG(entryDialogNrItems,0),String), entryDialogNrItems,C89_92S(160,240),C89_92S(75,85),NoCallBack,
{
{//Title
D_HEADER,DF_SKIP,0,0,{.dHeader={0,BT_OK,BT_CANCEL}}
},
{
D_EDIT_FIELD, 0, 2, 15,{.dEdit={sizeof(ENTRY_DIALOG_TITLE_STR),0,LGC_ORIG_WORD_MAXLEN-1,C89_92S(17,20)}}
},
{
D_EDIT_FIELD, 0, 2, 27,{.dEdit={sizeof(ENTRY_DIALOG_TITLE_STR "\0" ORIG_WORD_SHORT_STR),LGC_TRANS_WORD_MAXLEN,LGC_TRANS_WORD_MAXLEN-1,C89_92S(17,20)}}
},
{
D_EDIT_FIELD, 0, 2, 39,{.dEdit={sizeof(ENTRY_DIALOG_TITLE_STR "\0" ORIG_WORD_SHORT_STR "\0" TRANS_WORD_SHORT_STR),LGC_ORIG_WORD_MAXLEN+LGC_TRANS_WORD_MAXLEN,LGC_ORIG_CTXT_MAXLEN-1,C89_92S(17,20)}}
},
{
D_EDIT_FIELD, 0, 2, 51,{.dEdit={sizeof(ENTRY_DIALOG_TITLE_STR "\0" ORIG_WORD_SHORT_STR "\0" TRANS_WORD_SHORT_STR "\0" ORIG_CONTEXT_SHORT_STR),LGC_ORIG_WORD_MAXLEN+LGC_TRANS_WORD_MAXLEN+LGC_ORIG_CTXT_MAXLEN,LGC_TRANS_CTXT_MAXLEN-1,C89_92S(17,20)}}
},
{//End : nothing
.f={}
}
},
entryDialogStrings
};
///////////////////////////////////////////////////////////////////////////////
// "Part selection" dialog definition.
#define partSelectionDialogNrItems 2
#define partSelectionDialogStrings PART_SELECTION_DIALOG_TITLE_STR \
"\0" ENTER_LETTER_STR \
"\0"
__attribute__((__may_alias__)) SIZED_DIALOG(partSelectionDialogNrItems,offsetof(SIZED_DIALOG(partSelectionDialogNrItems,0),String)) partSelectionDialog =
{
offsetof(SIZED_DIALOG(partSelectionDialogNrItems,0),String), partSelectionDialogNrItems,C89_92S(160,240),C89_92S(40,40),NoCallBack,
{
{//Title
D_HEADER,DF_SKIP,0,0,{.dHeader={0,BT_OK,BT_CANCEL}}
},
// {
// D_TEXT,DF_SKIP,3,20,{.dText={sizeof(PART_SELECTION_DIALOG_TITLE_STR)}}
// },
{
D_EDIT_FIELD, 0, 3, 15,{.dEdit={sizeof(PART_SELECTION_DIALOG_TITLE_STR),0,1,5}}
},
{//End : nothing
.f={}
}
},
partSelectionDialogStrings
};
Source:
http://opensvn.csie.org/LGC/trunk/ , fichiers lgcctribmenusdialogs_ti68k.h et lgcctribmenusdialogs_ti68k.c
(Si ça vous amuse, vous pouvez tous jeter un coup d'oeil aux autres fichiers).