1 /*-------------------------------------------------------------------------
2 *
3 * menu.c
4 * holds menu related code
5 *
6 * Portions Copyright (c) 2017-2021 Pavel Stehule
7 *
8 * IDENTIFICATION
9 * src/menu.c
10 *
11 *-------------------------------------------------------------------------
12 */
13
14 #include <stdbool.h>
15
16 #include "pspg.h"
17 #include "st_menu.h"
18 #include "commands.h"
19
20 #define MENU_ITEM_THEME 10
21 #define MENU_ITEM_OPTIONS 11
22 #define MENU_ITEM_COPY 12
23
24 ST_CMDBAR_ITEM _bottombar[] = {
25 {"Save", false, 2, cmd_SaveData, 0},
26 {"Mark", false, 3, cmd_Mark, 0},
27 {"Search", false, 7, cmd_ForwardSearch, 0},
28 {"Menu", false, 9, cmd_ShowMenu, 0},
29 {"Quit", false, 10, cmd_Quit, 0},
30 {NULL, false, 0, 0, 0}
31 };
32
33 ST_CMDBAR_ITEM _bottombar_alt1[] = {
34 {"Save", false, 2, cmd_SaveData, 0},
35 {"Quit", false, 3, cmd_Quit, 0},
36 {"Copy", false, 5, 0, 0},
37 {"Search", false, 7, cmd_ForwardSearch, 0},
38 {"Menu", false, 9, cmd_ShowMenu, 0},
39 {"Quit", false, 10, cmd_Quit, 0},
40 {NULL, false, 0, 0, 0}
41 };
42
43 ST_MENU_ITEM _copy[] = {
44 {"~C~opy", cmd_Copy, "Ins", 0, 0, 0, NULL},
45 {"--", 0, NULL, 0, 0, 0, NULL},
46 {"Copy ~l~ine", cmd_CopyLine, NULL, 0, 0, 0, NULL},
47 {"Copy line e~x~tended", cmd_CopyLineExtended, NULL, 0, 0, 0, NULL},
48 {"Copy col~u~mn", cmd_CopyColumn, NULL, 0, 0, 0, NULL},
49 {"Copy ~s~elected", cmd_CopySelected, NULL, 0, 0, 0, NULL},
50 {"--", 0, NULL, 0, 0, 0, NULL},
51 {"Copy ~a~ll", cmd_CopyAllLines, NULL, 0, 0, 0, NULL},
52 {"Copy ~t~op lines", cmd_CopyTopLines, NULL, 0, 0, 0, NULL},
53 {"Copy ~b~ottom lines", cmd_CopyBottomLines, NULL, 0, 0, 0, NULL},
54 {"Copy book~m~arked lines", cmd_CopyMarkedLines, NULL, 0, 0, 0, NULL},
55 {"Copy sea~r~ched lines", cmd_CopySearchedLines, NULL, 0, 0, 0, NULL},
56 {"--", 0, NULL, 0, 0, 0, NULL},
57 {"Copy to ~f~ile", cmd_SetCopyFile, NULL, 0, 0, 0, NULL},
58 {"Copy to cli~p~board", cmd_SetCopyClipboard, NULL, 0, 0, 0, NULL},
59 {"--", 0, NULL, 0, 0, 0, NULL},
60 {"Empty string is NULL", cmd_TogleEmptyStringIsNULL, NULL, 0, 0, 0, NULL},
61 {"Set own ~N~ULL string", cmd_SetOwnNULLString, NULL, 0, 0, 0, NULL},
62 {"--", 0, NULL, 0, 0, 0, NULL},
63 {"_0_Use CSV format", cmd_UseClipboard_CSV, NULL, 0, 0, 0, NULL},
64 {"_1_Use LibreOffice TSVC format", cmd_UseClipboard_TSVC, NULL, 0, 0, 0, NULL},
65 {"_2_Use formatted text", cmd_UseClipboard_text, NULL, 0, 0, 0, NULL},
66 {"_3_Use INSERT format", cmd_UseClipboard_INSERT, NULL, 0, 0, 0, NULL},
67 {"_4_Use commented INSERT format", cmd_UseClipboard_INSERT_with_comments, NULL, 0, 0, 0, NULL},
68 {"_5_Use SQL Values format", cmd_UseClipboard_SQL_values, NULL, 0, 0, 0, NULL},
69 {"_6_Use pipe separated text", cmd_UseClipboard_pipe_separated, NULL, 0, 0, 0, NULL},
70 {NULL, 0, NULL, 0, 0, 0, NULL}
71 };
72
73 ST_MENU_ITEM _file[] = {
74 {"~C~opy to", 0, NULL, 0, 0, 0, _copy},
75 {"--", 0, NULL, 0, 0, 0, NULL},
76 {"~S~ave", cmd_SaveData, "s", 0, 0, 0, NULL},
77 {"Sa~v~e as CSV", cmd_SaveAsCSV, NULL, 0, 0, 0, NULL},
78 {"--", 0, NULL, 0, 0, 0, NULL},
79 {"~R~aw output quit", cmd_RawOutputQuit, "M-q", 0, 0, 0, NULL},
80 {"E~x~it", cmd_Quit, "q, F10", 0, 0, 0, NULL},
81 {NULL, 0, NULL, 0, 0, 0, NULL}
82 };
83
84 /*
85 * This content must be permanent for all menu life cycle. State variable
86 * menu references on this content.
87 */
88 ST_MENU_ITEM _search[] = {
89 {"~S~earch", cmd_ForwardSearch, "/", 0, 0, 0, NULL},
90 {"Search ~b~ackward", cmd_BackwardSearch, "?", 0, 0, 0, NULL},
91 {"Search ~a~gain", cmd_SearchNext, "n", 0, 0, 0, NULL},
92 {"Search p~r~evious", cmd_SearchPrev, "N", 0, 0, 0, NULL},
93 {"--", 0, NULL, 0, 0, 0, NULL},
94 {"Search in selection", cmd_ForwardSearchInSelection, "M-/", 0, 0, 0, NULL},
95 {"Search back in selection", cmd_BackwardSearchInSelection, "M-?", 0, 0, 0, NULL},
96 {"--", 0, NULL, 0, 0, 0, NULL},
97 {"Search ~c~olumn", cmd_SearchColumn, "c", 0, 0, 0, NULL},
98 {"--", 0, NULL, 0, 0, 0, NULL},
99 {"~T~oggle bookmark", cmd_ToggleBookmark, "M-k", 0, 0, 0, NULL},
100 {"~P~rev bookmark", cmd_PrevBookmark, "M-i", 0, 0, 0, NULL},
101 {"~N~ext bookmark", cmd_NextBookmark, "M-j", 0, 0, 0, NULL},
102 {"~F~lush bookmarks", cmd_FlushBookmarks, "M-o", 0, 0, 0, NULL},
103 {NULL, 0, NULL, 0, 0, 0, NULL}
104 };
105
106 ST_MENU_ITEM _command[] = {
107 {"_0_Release fixed columns", cmd_ReleaseCols, "0", 0, 0, 0, NULL},
108 {"_1_Freeze one column", cmd_FreezeOneCol, "1", 0, 0, 0, NULL},
109 {"_2_Freeze two columns", cmd_FreezeTwoCols, "2", 0, 0, 0, NULL},
110 {"_3_Freeze three columns", cmd_FreezeThreeCols, "3", 0, 0, 0, NULL},
111 {"_4_Freeze four columns", cmd_FreezeFourCols, "4", 0, 0, 0, NULL},
112 {"--", 0, NULL, 0, 0, 0, NULL},
113 {"~P~rev row", cmd_CursorUp, "k, Key up", 0, 0, 0, NULL},
114 {"~N~ext row", cmd_CursorDown, "j, Key down", 0, 0, 0, NULL},
115 {"Move to l~e~ft", cmd_MoveLeft, "h, Key left", 0, 0, 0, NULL},
116 {"Move to ~r~ight", cmd_MoveRight, "l, Key right", 0, 0, 0, NULL},
117 {"--", 0, NULL, 0, 0, 0, NULL},
118 {"Go to ~f~irst row", cmd_CursorFirstRow, "g, C-Home", 0, 0, 0, NULL},
119 {"Go to l~a~st row", cmd_CursorLastRow, "G, C-End", 0, 0, 0, NULL},
120 {"Go to ~l~ine", cmd_GotoLine, "M-l", 0, 0, 0, NULL},
121 {"--", 0, NULL, 0, 0, 0, NULL},
122 {"~S~how first column", cmd_ShowFirstCol, "^, Home", 0, 0, 0, NULL},
123 {"Sho~w~ last column", cmd_ShowLastCol, "$, End", 0, 0, 0, NULL},
124 {"--", 0, NULL, 0, 0, 0, NULL},
125 {"Page up", cmd_PageUp, "C-b, Prev page", 0, 0, 0, NULL},
126 {"Page down", cmd_PageDown, "C-f, space, Next page", 0, 0, 0, NULL},
127 {"--", 0, NULL, 0, 0, 0, NULL},
128 {"As~c~ending order", cmd_SortAsc, "a", 0, 0, 0, NULL},
129 {"~D~escending order", cmd_SortDesc, "d", 0, 0, 0, NULL},
130 {"~O~riginal order", cmd_OriginalSort, "u", 0, 0, 0, NULL},
131 {"--", 0, NULL, 0, 0, 0, NULL},
132 {"To~g~gle mark", cmd_Mark, "F3", 0, 0, 0, NULL},
133 {"~M~ark column", cmd_MarkColumn, "F13", 0, 0, 0, NULL},
134 {"Mark all", cmd_MarkAll, NULL, 0, 0, 0, NULL},
135 {"Unmar~k~", cmd_Unmark, NULL, 0, 0, 0, NULL},
136 {"--", 0, NULL, 0, 0, 0, NULL},
137 {"Refres~h~ screen", cmd_Refresh, "R, C-l", 0, 0, 0, NULL},
138 {"Show primar~y~ screen", cmd_ShowPrimaryScreen, "C-o", 0, 0, 0, NULL},
139 {NULL, 0, NULL, 0, 0, 0, NULL}
140 };
141
142 ST_MENU_ITEM _theme[] = {
143 {"_0_Midnight black", cmd_SetTheme_MidnightBlack, NULL, 0, 0, 0, NULL},
144 {"_1_Midnight theme", cmd_SetTheme_Midnight, NULL, 0, 0, 0, NULL},
145 {"_2_FoxPro like", cmd_SetTheme_Foxpro, NULL, 0, 0, 0, NULL},
146 {"_3_Pdmenu like", cmd_SetTheme_Pdmenu, NULL, 0, 0, 0, NULL},
147 {"_4_White theme", cmd_SetTheme_White, NULL, 0, 0, 0, NULL},
148 {"_5_Mutt theme", cmd_SetTheme_Mutt, NULL, 0, 0, 0, NULL},
149 {"_6_PC Fand like", cmd_SetTheme_Pcfand, NULL, 0, 0, 0, NULL},
150 {"_7_Green theme", cmd_SetTheme_Green, NULL, 0, 0, 0, NULL},
151 {"_8_Blue theme", cmd_SetTheme_Blue, NULL, 0, 0, 0, NULL},
152 {"_9_Word perfect theme", cmd_SetTheme_WP, NULL, 0, 0, 0, NULL},
153 {"_l_Low contrast blue theme", cmd_SetTheme_Lowcontrast, NULL, 0, 0, 0, NULL},
154 {"_c_Dark cyan theme", cmd_SetTheme_Darkcyan, NULL, 0, 0, 0, NULL},
155 {"_p_Paradox like", cmd_SetTheme_Paradox, NULL, 0, 0, 0, NULL},
156 {"_d_DbaseIV retro", cmd_SetTheme_DBase, NULL, 0, 0, 0, NULL},
157 {"_e_DbaseIV retro (Magenta)", cmd_SetTheme_DBasemagenta, NULL, 0, 0, 0, NULL},
158 {"_r_Red white theme", cmd_SetTheme_Red, NULL, 0, 0, 0, NULL},
159 {"_s_Simple theme", cmd_SetTheme_Simple, NULL, 0, 0, 0, NULL},
160 {"_o_Solar Dark theme", cmd_SetTheme_SolarDark, NULL, 0, 0, 0, NULL},
161 {"_g_Solar Light theme", cmd_SetTheme_SolarLight, NULL, 0, 0, 0, NULL},
162 {"_u_Gruvbox Light theme", cmd_SetTheme_GruvboxLight, NULL, 0, 0, 0, NULL},
163 {"_t_Tao Light theme", cmd_SetTheme_TaoLight, NULL, 0, 0, 0, NULL},
164 {"_f_Flatwhite theme", cmd_SetTheme_Flatwhite, NULL, 0, 0, 0, NULL},
165 {"_a_Relational Pipes theme", cmd_SetTheme_RelationalPipes, NULL, 0, 0, 0, NULL},
166 {"_h_PaperColor theme", cmd_SetTheme_PaperColor, NULL, 0, 0, 0, NULL},
167 {NULL},
168 };
169
170 ST_MENU_ITEM _options[] = {
171 {"~C~ase sensitive search", cmd_CSSearchSet, NULL, 0, 0, 0, NULL},
172 {"Case ~i~nsensitive search", cmd_CISearchSet, NULL, 0, 0, 0, NULL},
173 {"~U~pper case sensitive search", cmd_USSearchSet, NULL, 0, 0, 0, NULL},
174 {"--", 0, NULL, 0, 0, 0, NULL},
175 {"Highlight searched ~l~ines", cmd_HighlightLines, NULL, 0, 0, 0, NULL},
176 {"Highlight searched ~v~alues", cmd_HighlightValues, NULL, 0, 0, 0, NULL},
177 {"~W~ithout highlighting", cmd_NoHighlight, NULL, 0, 0, 0, NULL},
178 {"--", 0, NULL, 0, 0, 0, NULL},
179 {"Show cursor", cmd_ShowCursor, "M-c", 0, 0, 0, NULL},
180 {"Show vertical cursor", cmd_ShowVerticalCursor, "M-v", 0, 0, 0, NULL},
181 {"Show line ~n~umbers", cmd_RowNumToggle, "M-n", 0, 0, 0, NULL},
182 {"Show top bar", cmd_ShowTopBar, NULL, 0, 0, 0, NULL},
183 {"Show bottom bar", cmd_ShowBottomBar, NULL, 0, 0, 0, NULL},
184 {"Show scrollbar", cmd_ShowScrollbar, NULL, 0, 0, 0, NULL},
185 {"--", 0, NULL, 0, 0, 0, NULL},
186 {"~M~ouse support", cmd_MouseToggle, "M-m", 0, 0, 0, NULL},
187 {"~Q~uiet mode", cmd_SoundToggle, NULL, 0, 0, 0, NULL},
188 {"--", 0, NULL, 0, 0, 0, NULL},
189 {"Force unicode ~b~orders", cmd_UtfArtToggle, NULL, 0, 0, 0, NULL},
190 {"Force ~a~scii menu", cmd_MenuAsciiArtToggle, NULL, 0, 0, 0, NULL},
191 {"Bold labels", cmd_BoldLabelsToggle, "M-b", 0, 0, 0, NULL},
192 {"Bold cursor", cmd_BoldCursorToggle, NULL, 0, 0, 0, NULL},
193 {"~T~heme", MENU_ITEM_THEME, NULL, 0, 0, 0, _theme},
194 {"--", 0, NULL, 0, 0, 0, NULL},
195 {"~S~ave setup", cmd_SaveSetup, NULL, 0, 0, 0, NULL},
196 {NULL},
197 };
198
199 ST_MENU_ITEM menubar[] = {
200 {"~F~ile", 0, NULL, 0, 0, 0, _file},
201 {"~S~earch", 0, NULL, 0, 0, 0, _search},
202 {"~C~ommand", 0, NULL, 0, 0, 0, _command},
203 {"~O~ptions", MENU_ITEM_OPTIONS, NULL, 0, 0, 0, _options},
204 {NULL}
205 };
206
207 ST_MENU_CONFIG menu_config;
208 ST_MENU_CONFIG menu_config2;
209 int menu_theme = -1;
210
211 /*
212 * Returns menu style joined to main theme
213 */
214 static int
get_menu_style(int main_theme)215 get_menu_style(int main_theme)
216 {
217 switch (main_theme)
218 {
219 case 0:
220 return ST_MENU_STYLE_MCB;
221 case 1:
222 return ST_MENU_STYLE_MC;
223 case 2:
224 return ST_MENU_STYLE_FOXPRO;
225 case 3:
226 return ST_MENU_STYLE_DOS;
227 case 4:
228 return ST_MENU_STYLE_FAND_1;
229 case 5:
230 return ST_MENU_STYLE_NOCOLOR;
231 case 6:
232 return ST_MENU_STYLE_FAND_1;
233 case 7:
234 return ST_MENU_STYLE_ONECOLOR;
235 case 8:
236 return ST_MENU_STYLE_DOS;
237 case 9:
238 return ST_MENU_STYLE_PERFECT;
239 case 10:
240 return ST_MENU_STYLE_XGOLD_BLACK;
241 case 11:
242 return ST_MENU_STYLE_OLD_TURBO;
243 case 12:
244 return ST_MENU_STYLE_VISION;
245 case 13:
246 return ST_MENU_STYLE_DBASE;
247 case 14:
248 return ST_MENU_STYLE_OLD_TURBO;
249 case 15:
250 return ST_MENU_STYLE_PERFECT;
251 case 16:
252 return ST_MENU_STYLE_ONECOLOR;
253 case 20:
254 return ST_MENU_STYLE_TAO;
255 case 21:
256 return ST_MENU_STYLE_FLATWHITE;
257 case 22:
258 return ST_MENU_STYLE_DBASE;
259 case 23:
260 return ST_MENU_STYLE_PERFECT;
261 default:
262 return ST_MENU_STYLE_VISION;
263 }
264 }
265
266 /*
267 * Prepare configuration for st_menu
268 */
269 void
init_menu_config(Options * opts)270 init_menu_config(Options *opts)
271 {
272 int start_from_rgb = 220;
273
274 menu_theme = get_menu_style(opts->theme);
275
276 if (menu_theme == ST_MENU_STYLE_FREE_DOS)
277 {
278 int fcp;
279
280 fcp = st_menu_load_style(&menu_config,
281 menu_theme,
282 40,
283 !use_utf8,
284 opts->force_ascii_art);
285
286 st_menu_load_style(&menu_config2,
287 ST_MENU_STYLE_FREE_DOS_P,
288 fcp,
289 !use_utf8,
290 opts->force_ascii_art);
291 }
292 else
293 st_menu_load_style_rgb(&menu_config,
294 menu_theme,
295 menu_theme == ST_MENU_STYLE_ONECOLOR ? 3 : 40,
296 &start_from_rgb,
297 !use_utf8,
298 opts->force_ascii_art);
299
300 /* extra pspg menu theme customization */
301 if (opts->theme == 1)
302 menu_config.shadow_width = 2;
303 else if (opts->theme == 4)
304 menu_config.text_space = 4;
305 }
306
307 /*
308 * Prepare configuration and initialize menu
309 */
310 struct ST_MENU *
init_menu(struct ST_MENU * current_menu,Options * opts)311 init_menu(struct ST_MENU *current_menu, Options *opts)
312 {
313 struct ST_MENU *menu = NULL;
314
315 if (menu_theme == ST_MENU_STYLE_FREE_DOS)
316 menu = st_menu_new_menubar2(&menu_config, &menu_config2, menubar);
317 else
318 menu = st_menu_new_menubar(&menu_config, menubar);
319
320 if (current_menu)
321 {
322 int positions[1024];
323 int *refvals[1024];
324
325 /* Save state of old menu, and load it to new menu */
326 st_menu_save(current_menu, positions, refvals, 1023);
327 st_menu_load(menu, positions, refvals);
328 st_menu_free(current_menu);
329 log_row("releasing menu");
330 }
331
332 if (opts->quit_on_f3)
333 st_menu_set_shortcut(menu, cmd_Mark, NULL);
334
335 return menu;
336 }
337
338 struct ST_CMDBAR *
init_cmdbar(struct ST_CMDBAR * current_cmdbar,Options * opts)339 init_cmdbar(struct ST_CMDBAR *current_cmdbar, Options *opts)
340 {
341 struct ST_CMDBAR *cmdbar = NULL;
342
343 if (opts->quit_on_f3)
344 cmdbar = st_cmdbar_new(&menu_config, _bottombar_alt1);
345 else
346 cmdbar = st_cmdbar_new(&menu_config, _bottombar);
347
348 /*
349 * It looks obscure - it uses same pattern like init_menu
350 * although the cmdbar has not state, so old cmdbar can
351 * be released fully before creating new cmdbar.
352 */
353 if (current_cmdbar)
354 {
355 st_cmdbar_unpost(current_cmdbar);
356 st_cmdbar_free(current_cmdbar);
357 log_row("releasing cmd bar");
358 }
359
360 return cmdbar;
361 }
362
363 void
post_menu(Options * opts,struct ST_MENU * menu)364 post_menu(Options *opts, struct ST_MENU *menu)
365 {
366 st_menu_set_option(menu, cmd_ReleaseCols, ST_MENU_OPTION_MARKED, opts->freezed_cols == 0);
367 st_menu_set_option(menu, cmd_FreezeOneCol, ST_MENU_OPTION_MARKED,
368 (opts->freezed_cols == 1 || opts->freezed_cols == -1));
369 st_menu_set_option(menu, cmd_FreezeTwoCols, ST_MENU_OPTION_MARKED, opts->freezed_cols == 2);
370 st_menu_set_option(menu, cmd_FreezeThreeCols, ST_MENU_OPTION_MARKED, opts->freezed_cols == 3);
371 st_menu_set_option(menu, cmd_FreezeFourCols, ST_MENU_OPTION_MARKED, opts->freezed_cols == 4);
372
373 st_menu_set_option(menu, cmd_SoundToggle, ST_MENU_OPTION_MARKED, quiet_mode);
374 st_menu_set_option(menu, cmd_UtfArtToggle, ST_MENU_OPTION_MARKED, opts->force_uniborder);
375 st_menu_set_option(menu, cmd_MenuAsciiArtToggle, ST_MENU_OPTION_MARKED, opts->force_ascii_art);
376 st_menu_set_option(menu, cmd_MouseToggle, ST_MENU_OPTION_MARKED, !opts->no_mouse);
377
378 st_menu_set_option(menu, cmd_NoHighlight, ST_MENU_OPTION_MARKED, opts->no_highlight_search);
379 st_menu_set_option(menu, cmd_HighlightValues, ST_MENU_OPTION_MARKED, opts->no_highlight_lines);
380 st_menu_set_option(menu, cmd_HighlightLines, ST_MENU_OPTION_MARKED,
381 !(opts->no_highlight_search || opts->no_highlight_lines));
382
383 st_menu_set_option(menu, cmd_CSSearchSet, ST_MENU_OPTION_MARKED,
384 !(opts->ignore_case || opts->ignore_lower_case));
385 st_menu_set_option(menu, cmd_CISearchSet, ST_MENU_OPTION_MARKED, opts->ignore_case);
386 st_menu_set_option(menu, cmd_USSearchSet, ST_MENU_OPTION_MARKED, opts->ignore_lower_case);
387
388 st_menu_set_option(menu, cmd_ShowTopBar, ST_MENU_OPTION_MARKED, !opts->no_topbar);
389 st_menu_set_option(menu, cmd_ShowBottomBar, ST_MENU_OPTION_MARKED, !opts->no_commandbar);
390
391 st_menu_set_option(menu, cmd_RowNumToggle, ST_MENU_OPTION_MARKED, opts->show_rownum);
392 st_menu_set_option(menu, cmd_ShowCursor, ST_MENU_OPTION_MARKED, !opts->no_cursor);
393 st_menu_set_option(menu, cmd_ShowVerticalCursor, ST_MENU_OPTION_MARKED, opts->vertical_cursor);
394
395 st_menu_set_option(menu, cmd_BoldLabelsToggle, ST_MENU_OPTION_MARKED, opts->bold_labels);
396 st_menu_set_option(menu, cmd_BoldCursorToggle, ST_MENU_OPTION_MARKED, opts->bold_cursor);
397
398 st_menu_set_option(menu, cmd_ShowScrollbar, ST_MENU_OPTION_MARKED, opts->show_scrollbar);
399
400 st_menu_reset_all_submenu_options(menu, MENU_ITEM_THEME, ST_MENU_OPTION_MARKED);
401 st_menu_enable_option(menu, theme_get_cmd(opts->theme), ST_MENU_OPTION_MARKED);
402
403 refresh_copy_target_options(opts, menu);
404 refresh_clipboard_options(opts, menu);
405
406 st_menu_set_option(menu, cmd_TogleEmptyStringIsNULL, ST_MENU_OPTION_MARKED, opts->empty_string_is_null);
407
408 st_menu_set_option(menu, cmd_SetOwnNULLString, ST_MENU_OPTION_MARKED,
409 !opts->empty_string_is_null && opts->nullstr && *opts->nullstr);
410 }
411
412 void
refresh_clipboard_options(Options * opts,struct ST_MENU * menu)413 refresh_clipboard_options(Options *opts, struct ST_MENU *menu)
414 {
415 st_menu_set_option(menu, cmd_UseClipboard_CSV, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_CSV);
416 st_menu_set_option(menu, cmd_UseClipboard_TSVC, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_TSVC);
417 st_menu_set_option(menu, cmd_UseClipboard_text, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_TEXT);
418 st_menu_set_option(menu, cmd_UseClipboard_INSERT, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_INSERT);
419 st_menu_set_option(menu, cmd_UseClipboard_INSERT_with_comments, ST_MENU_OPTION_MARKED,
420 opts->clipboard_format == CLIPBOARD_FORMAT_INSERT_WITH_COMMENTS);
421
422 st_menu_set_option(menu, cmd_UseClipboard_SQL_values, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_SQL_VALUES);
423 st_menu_set_option(menu, cmd_UseClipboard_pipe_separated, ST_MENU_OPTION_MARKED, opts->clipboard_format == CLIPBOARD_FORMAT_PIPE_SEPARATED);
424 }
425
426 void
refresh_copy_target_options(Options * opts,struct ST_MENU * menu)427 refresh_copy_target_options(Options *opts, struct ST_MENU *menu)
428 {
429 st_menu_set_option(menu, cmd_SetCopyFile, ST_MENU_OPTION_MARKED, opts->copy_target == COPY_TARGET_FILE);
430 st_menu_set_option(menu, cmd_SetCopyClipboard, ST_MENU_OPTION_MARKED, opts->copy_target == COPY_TARGET_CLIPBOARD);
431 }
432