poe

Уређивач .po фајлова
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

config.h (11430B)


      1 /* See the file LICENSE for copyright and license details. */
      2 
      3 /* Comment out to not create backups */
      4 #define CREATE_BACKUPS
      5 
      6 #ifdef PO_C_GLOBALS
      7 static const char* backup_suffix = "~";
      8 #endif /* PO_C_GLOBALS */
      9 
     10 #define SAVE_WRAP_WIDTH	  70
     11 #define WRAP_FIRST_MSGSTR 0
     12 #define WARN_COUNT_DOTS	  0
     13 
     14 #define DLG_FG			  TB_BLACK
     15 #define DLG_BG			  TB_WHITE
     16 #define EDIT_MSGID_FG		  TB_BLACK | TB_BOLD
     17 #define EDIT_MSGID_BG		  TB_WHITE
     18 #define EDIT_MSGID_FOCUS_FG	  TB_BLACK
     19 #define EDIT_MSGID_FOCUS_BG	  TB_WHITE
     20 #define EDIT_MSGID_HEADING_FG	  TB_WHITE | TB_BOLD
     21 #define EDIT_MSGID_HEADING_BG	  TB_WHITE
     22 #define EDIT_MSGSTR_FG		  TB_BLACK | TB_BOLD
     23 #define EDIT_MSGSTR_BG		  TB_BLACK
     24 #define EDIT_MSGSTR_FOCUS_FG	  TB_YELLOW | TB_BOLD
     25 #define EDIT_MSGSTR_FOCUS_BG	  TB_BLACK
     26 #define ERROR_FG		  TB_WHITE | TB_BOLD
     27 #define ERROR_BG		  TB_RED
     28 #define FLAG_FG			  TB_YELLOW | TB_BOLD
     29 #define FLAG_BG			  TB_DEFAULT
     30 #define LIST_FLAGS_FG		  TB_YELLOW | TB_BOLD
     31 #define LIST_FLAGS_BG		  TB_DEFAULT
     32 #define LIST_FLAGS_SEL_FG	  TB_WHITE | TB_BOLD
     33 #define LIST_FLAGS_SEL_BG	  TB_BLUE
     34 #define LIST_MSGID_FG		  TB_WHITE
     35 #define LIST_MSGID_BG		  TB_DEFAULT
     36 #define LIST_MSGID_SEL_FG	  TB_WHITE
     37 #define LIST_MSGID_SEL_BG	  TB_BLUE
     38 #define LIST_MSGID_SPECIAL_FG	  TB_YELLOW | TB_BOLD
     39 #define LIST_MSGID_SPECIAL_BG	  TB_DEFAULT
     40 #define LIST_MSGID_SPECIAL_SEL_FG TB_WHITE | TB_BOLD
     41 #define LIST_MSGID_SPECIAL_SEL_BG TB_BLUE
     42 #define LIST_MSGSTR_FG		  TB_GREEN
     43 #define LIST_MSGSTR_BG		  TB_DEFAULT
     44 #define LIST_MSGSTR_SEL_FG	  TB_WHITE | TB_BOLD
     45 #define LIST_MSGSTR_SEL_BG	  TB_BLUE
     46 #define LIST_MSGSTR_WARN_FG	  TB_RED | TB_BOLD
     47 #define LIST_MSGSTR_WARN_BG	  TB_DEFAULT
     48 #define LIST_MSGSTR_SEL_WARN_FG	  TB_RED | TB_BOLD
     49 #define LIST_MSGSTR_SEL_WARN_BG	  TB_BLUE
     50 #define LIST_SEL_FG		  TB_WHITE
     51 #define LIST_SEL_BG		  TB_BLUE
     52 #define MSGID_FG		  TB_GREEN
     53 #define MSGID_BG		  TB_DEFAULT
     54 #define MSGSTR_FG		  TB_WHITE
     55 #define MSGSTR_BG		  TB_DEFAULT
     56 #define PROMPT_FG		  TB_YELLOW | TB_BOLD
     57 #define PROMPT_BG		  TB_MAGENTA
     58 #define SEARCH_FG		  TB_BLACK
     59 #define SEARCH_BG		  TB_WHITE
     60 #define SEARCH_EDIT_FG		  TB_WHITE | TB_BOLD
     61 #define SEARCH_EDIT_BG		  TB_BLACK
     62 #define SEARCH_HL_FG		  TB_WHITE | TB_BOLD
     63 #define SEARCH_HL_BG		  TB_GREEN
     64 #define SHADOW_FG		  TB_BLACK
     65 #define SHADOW_BG		  TB_BLACK | TB_BOLD
     66 #define TITLE_FG		  TB_BLACK
     67 #define TITLE_BG		  TB_WHITE
     68 
     69 #ifdef POE_C_GLOBALS
     70 int cancel_close(struct DrawState* state);
     71 int cancel_msgstr(struct DrawState* state);
     72 int cancel_search(struct DrawState* state);
     73 int copy_msgid_to_input(struct DrawState* state);
     74 int edit_page_down(struct DrawState* state);
     75 int edit_page_up(struct DrawState* state);
     76 int erase_backwards(struct DrawState* state);
     77 int erase_forward(struct DrawState* state);
     78 int erase_prev_word(struct DrawState* state);
     79 int erase_search_backwards(struct DrawState* state);
     80 int erase_search_forward(struct DrawState* state);
     81 int erase_search_prev_word(struct DrawState* state);
     82 int erase_search_to_end(struct DrawState* state);
     83 int erase_search_to_start(struct DrawState* state);
     84 int erase_to_end(struct DrawState* state);
     85 int erase_to_start(struct DrawState* state);
     86 int exit_program(struct DrawState* state);
     87 int hide_search(struct DrawState* state);
     88 int insert_line(struct DrawState* state);
     89 int insert_search_space(struct DrawState* state);
     90 int insert_search_tab(struct DrawState* state);
     91 int insert_space(struct DrawState* state);
     92 int insert_tab(struct DrawState* state);
     93 int move_end(struct DrawState* state);
     94 int move_down(struct DrawState* state);
     95 int move_left(struct DrawState* state);
     96 int move_list_down(struct DrawState* state);
     97 int move_list_end(struct DrawState* state);
     98 int move_list_page_down(struct DrawState* state);
     99 int move_list_page_up(struct DrawState* state);
    100 int move_list_start(struct DrawState* state);
    101 int move_list_up(struct DrawState* state);
    102 int move_next_word(struct DrawState* state);
    103 int move_prev_word(struct DrawState* state);
    104 int move_right(struct DrawState* state);
    105 int move_search_end(struct DrawState* state);
    106 int move_search_left(struct DrawState* state);
    107 int move_search_next_word(struct DrawState* state);
    108 int move_search_prev_word(struct DrawState* state);
    109 int move_search_right(struct DrawState* state);
    110 int move_search_start(struct DrawState* state);
    111 int move_start(struct DrawState* state);
    112 int move_up(struct DrawState* state);
    113 int next_fuzzy(struct DrawState* state);
    114 int next_match(struct DrawState* state);
    115 int next_plural(struct DrawState* state);
    116 int next_untranslated(struct DrawState* state);
    117 int paste_paste_buffer_to_input(struct DrawState* state);
    118 int prev_match(struct DrawState* state);
    119 int prev_plural(struct DrawState* state);
    120 int save_msgstr(struct DrawState* state);
    121 int show_edit(struct DrawState* state);
    122 int show_help(struct DrawState* state);
    123 int show_search(struct DrawState* state);
    124 int toggle_fuzzy(struct DrawState* state);
    125 int toggle_info_focused(struct DrawState* state);
    126 int yank_msgstr_to_paste_buffer(struct DrawState* state);
    127 int write_file(struct DrawState* state);
    128 
    129 /* clang-format off */
    130 
    131 /* Always processed */
    132 static const struct Key top_level_keys[] = {
    133 	{ .ev = { .key = TB_KEY_ESC },  .callback = cancel_close },
    134 	{ .ev = { .key = TB_KEY_CTRL_Q },
    135 					.callback = exit_program },
    136 };
    137 
    138 /* Edit msgstr box open */
    139 static const struct Key edit_keys[] = {
    140 	{ .ev = { .key = TB_KEY_ARROW_DOWN },
    141 					.callback = move_down },
    142 	{ .ev = { .key = TB_KEY_ARROW_LEFT },
    143 					.callback = move_left },
    144 	{ .ev = { .key = TB_KEY_ARROW_RIGHT },
    145 					.callback = move_right },
    146 	{ .ev = { .key = TB_KEY_ARROW_UP },
    147 					.callback = move_up },
    148 	{ .ev = { .key = TB_KEY_BACKSPACE },
    149 					.callback = erase_backwards },
    150 	{ .ev = { .key = TB_KEY_BACKSPACE2 },
    151 					.callback = erase_backwards },
    152 	{ .ev = { .key = TB_KEY_CTRL_A },
    153 					.callback = move_start },
    154 	{ .ev = { .key = TB_KEY_CTRL_C },
    155 					.callback = yank_msgstr_to_paste_buffer },
    156 	{ .ev = { .key = TB_KEY_CTRL_E },
    157 					.callback = move_end },
    158 	{ .ev = { .key = TB_KEY_CTRL_K },
    159 					.callback = erase_to_end },
    160 	{ .ev = { .key = TB_KEY_CTRL_N },
    161 					.callback = next_plural },
    162 	{ .ev = { .key = TB_KEY_CTRL_P },
    163 					.callback = prev_plural },
    164 	{ .ev = { .key = TB_KEY_CTRL_R },
    165 					.callback = move_prev_word },
    166 	{ .ev = { .key = TB_KEY_CTRL_S },
    167 					.callback = save_msgstr },
    168 	{ .ev = { .key = TB_KEY_CTRL_T },
    169 					.callback = move_next_word },
    170 	{ .ev = { .key = TB_KEY_CTRL_U },
    171 					.callback = erase_to_start },
    172 	{ .ev = { .key = TB_KEY_CTRL_V },
    173 					.callback = paste_paste_buffer_to_input },
    174 	{ .ev = { .key = TB_KEY_CTRL_W },
    175 					.callback = erase_prev_word },
    176 	{ .ev = { .key = TB_KEY_CTRL_Z },
    177 					.callback = toggle_fuzzy },
    178 	{ .ev = { .key = TB_KEY_DELETE },
    179 					.callback = erase_forward },
    180 	{ .ev = { .key = TB_KEY_END },	.callback = move_end },
    181 	{ .ev = { .key = TB_KEY_ENTER },
    182 					.callback = insert_line },
    183 	{ .ev = { .key = TB_KEY_F5 },	.callback = copy_msgid_to_input },
    184 	{ .ev = { .key = TB_KEY_F6 },	.callback = toggle_info_focused },
    185 	{ .ev = { .key = TB_KEY_F8 },	.callback = next_untranslated },
    186 	{ .ev = { .key = TB_KEY_F9 },	.callback = next_fuzzy },
    187 	{ .ev = { .key = TB_KEY_HOME },	.callback = move_start },
    188 	{ .ev = { .key = TB_KEY_PGDN },	.callback = edit_page_down },
    189 	{ .ev = { .key = TB_KEY_PGUP },	.callback = edit_page_up },
    190 	{ .ev = { .key = TB_KEY_SPACE },
    191 					.callback = insert_space },
    192 	{ .ev = { .key = TB_KEY_TAB },	.callback = insert_tab },
    193 };
    194 
    195 /* Search box open */
    196 static const struct Key search_keys[] = {
    197 	{ .ev = { .key = TB_KEY_ARROW_LEFT },
    198 					.callback = move_search_left },
    199 	{ .ev = { .key = TB_KEY_ARROW_RIGHT },
    200 					.callback = move_search_right },
    201 	{ .ev = { .key = TB_KEY_BACKSPACE },
    202 					.callback = erase_search_backwards },
    203 	{ .ev = { .key = TB_KEY_BACKSPACE2 },
    204 					.callback = erase_search_backwards },
    205 	{ .ev = { .key = TB_KEY_CTRL_A },
    206 					.callback = move_search_start },
    207 	{ .ev = { .key = TB_KEY_CTRL_E },
    208 					.callback = move_search_end },
    209 	{ .ev = { .key = TB_KEY_CTRL_K },
    210 					.callback = erase_search_to_end },
    211 	{ .ev = { .key = TB_KEY_CTRL_R },
    212 					.callback = move_search_prev_word },
    213 	{ .ev = { .key = TB_KEY_CTRL_S },
    214 					.callback = write_file },
    215 	{ .ev = { .key = TB_KEY_CTRL_T },
    216 					.callback = move_search_next_word },
    217 	{ .ev = { .key = TB_KEY_CTRL_U },
    218 					.callback = erase_search_to_start },
    219 	{ .ev = { .key = TB_KEY_CTRL_W },
    220 					.callback = erase_search_prev_word },
    221 	{ .ev = { .key = TB_KEY_DELETE },
    222 					.callback = erase_search_forward },
    223 	{ .ev = { .key = TB_KEY_END },	.callback = move_search_end },
    224 	{ .ev = { .key = TB_KEY_ENTER },
    225 					.callback = hide_search },
    226 	{ .ev = { .key = TB_KEY_F3 },	.callback = next_match },
    227 	{ .ev = { .key = TB_KEY_F4 },	.callback = prev_match },
    228 	{ .ev = { .key = TB_KEY_HOME },	.callback = move_search_start },
    229 	{ .ev = { .key = TB_KEY_SPACE },
    230 					.callback = insert_search_space },
    231 	{ .ev = { .key = TB_KEY_TAB },	.callback = insert_search_tab },
    232 };
    233 
    234 /* Main window */
    235 static const struct Key main_keys[] = {
    236 	{ .ev = { .key = TB_KEY_ARROW_DOWN },
    237 					.callback = move_list_down },
    238 	{ .ev = { .key = TB_KEY_ARROW_UP },
    239 					.callback = move_list_up },
    240 	{ .ev = { .key = TB_KEY_END },
    241 					.callback = move_list_end },
    242 	{ .ev = { .key = TB_KEY_ENTER },
    243 					.callback = show_edit },
    244 	{ .ev = { .key = TB_KEY_F1 },	.callback = show_help },
    245 	{ .ev = { .key = TB_KEY_F3 },	.callback = next_match },
    246 	{ .ev = { .key = TB_KEY_F4 },	.callback = prev_match },
    247 	{ .ev = { .key = TB_KEY_F7 },	.callback = show_search },
    248 	{ .ev = { .key = TB_KEY_F8 },	.callback = next_untranslated },
    249 	{ .ev = { .key = TB_KEY_F9 },	.callback = next_fuzzy },
    250 	{ .ev = { .key = TB_KEY_HOME },	.callback = move_list_start },
    251 	{ .ev = { .key = TB_KEY_CTRL_B },
    252 					.callback = move_list_page_up },
    253 	{ .ev = { .key = TB_KEY_CTRL_F },
    254 					.callback = move_list_page_down },
    255 	{ .ev = { .key = TB_KEY_CTRL_S },
    256 					.callback = write_file },
    257 	{ .ev = { .key = TB_KEY_CTRL_Z },
    258 					.callback = toggle_fuzzy },
    259 	{ .ev = { .key = TB_KEY_PGDN },
    260 					.callback = move_list_page_down },
    261 	{ .ev = { .key = TB_KEY_PGUP },	.callback = move_list_page_up },
    262 	{ .ev = { .ch = '/' },		.callback = show_search },
    263 	{ .ev = { .ch = 'G' },		.callback = move_list_end },
    264 	{ .ev = { .ch = 'H' },		.callback = show_help },
    265 	{ .ev = { .ch = 'f' },		.callback = next_fuzzy },
    266 	{ .ev = { .ch = 'g' },		.callback = move_list_start },
    267 	{ .ev = { .ch = 'j' },		.callback = move_list_down },
    268 	{ .ev = { .ch = 'k' },		.callback = move_list_up },
    269 	{ .ev = { .ch = 'N' },		.callback = prev_match },
    270 	{ .ev = { .ch = 'n' },		.callback = next_match },
    271 	{ .ev = { .ch = 'q' },		.callback = exit_program },
    272 	{ .ev = { .ch = 'u' },		.callback = next_untranslated },
    273 	{ .ev = { .ch = 'w' },		.callback = write_file },
    274 	{ .ev = { .ch = 'z' },		.callback = toggle_fuzzy },
    275 };
    276 
    277 #endif /* POE_C_GLOBALS */
    278 
    279 void format_filename(char* result, size_t result_size, const char* format,
    280 	const struct DrawState* state);
    281 void format_msgs(char* result, size_t result_size, const char* format,
    282 	const struct DrawState* state);
    283 
    284 static const struct StatusSegment status_segments[] = {
    285 	{.format	   = "%s%s",
    286 		.callback  = format_filename,
    287 		.fg	   = TB_BLACK,
    288 		.bg	   = TB_WHITE,
    289 		.alignment = LEFT},
    290 	{.format	   = "%ld/%ld (%ldu/%ldf/%ldo)",
    291 		.callback  = format_msgs,
    292 		.fg	   = TB_WHITE | TB_BOLD,
    293 		.bg	   = TB_BLUE,
    294 		.alignment = CENTER},
    295 	{.format	   = "H=HELP, q=QUIT",
    296 		.callback  = NULL,
    297 		.fg	   = TB_BLACK,
    298 		.bg	   = TB_WHITE,
    299 		.alignment = RIGHT},
    300 };