diff options
Diffstat (limited to 'src/ui/util.c')
-rw-r--r-- | src/ui/util.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ui/util.c b/src/ui/util.c index 31907721..8e71dcec 100644 --- a/src/ui/util.c +++ b/src/ui/util.c | |||
@@ -3451,6 +3451,54 @@ iWidget *makeTranslation_Widget(iWidget *parent) { | |||
3451 | return dlg; | 3451 | return dlg; |
3452 | } | 3452 | } |
3453 | 3453 | ||
3454 | iWidget *makeGlyphFinder_Widget(void) { | ||
3455 | iString msg; | ||
3456 | iString command; | ||
3457 | init_String(&msg); | ||
3458 | initCStr_String(&command, "!font.find chars:"); | ||
3459 | for (size_t i = 0; ; i++) { | ||
3460 | iChar ch = missing_Text(i); | ||
3461 | if (!ch) break; | ||
3462 | appendFormat_String(&msg, " U+%04X", ch); | ||
3463 | appendChar_String(&command, ch); | ||
3464 | } | ||
3465 | iArray items; | ||
3466 | init_Array(&items, sizeof(iMenuItem)); | ||
3467 | if (!isEmpty_String(&msg)) { | ||
3468 | prependCStr_String(&msg, "${dlg.glyphfinder.missing} "); | ||
3469 | appendCStr_String(&msg, "\n\n${dlg.glyphfinder.help}"); | ||
3470 | pushBackN_Array( | ||
3471 | &items, | ||
3472 | (iMenuItem[]){ | ||
3473 | { "${menu.fonts}", 0, 0, "!open newtab:1 url:about:fonts" }, | ||
3474 | { "${dlg.glyphfinder.disable}", 0, 0, "prefs.font.warnmissing.changed arg:0" }, | ||
3475 | { "---" }, | ||
3476 | { uiTextCaution_ColorEscape magnifyingGlass_Icon " ${dlg.glyphfinder.search}", | ||
3477 | 0, | ||
3478 | 0, | ||
3479 | cstr_String(&command) }, | ||
3480 | { "${close}", 0, 0, "cancel" } }, | ||
3481 | 5); | ||
3482 | } | ||
3483 | else { | ||
3484 | setCStr_String(&msg, "${dlg.glyphfinder.help.empty}"); | ||
3485 | pushBackN_Array(&items, | ||
3486 | (iMenuItem[]){ { "${menu.reload}", 0, 0, "navigate.reload" }, | ||
3487 | { "${close}", 0, 0, "cancel" } }, | ||
3488 | 2); | ||
3489 | } | ||
3490 | iWidget *dlg = makeQuestion_Widget("${heading.glyphfinder}", cstr_String(&msg), | ||
3491 | constData_Array(&items), | ||
3492 | size_Array(&items)); | ||
3493 | arrange_Widget(dlg); | ||
3494 | deinit_Array(&items); | ||
3495 | deinit_String(&command); | ||
3496 | deinit_String(&msg); | ||
3497 | return dlg; | ||
3498 | } | ||
3499 | |||
3500 | /*----------------------------------------------------------------------------------------------*/ | ||
3501 | |||
3454 | void init_PerfTimer(iPerfTimer *d) { | 3502 | void init_PerfTimer(iPerfTimer *d) { |
3455 | d->ticks = SDL_GetPerformanceCounter(); | 3503 | d->ticks = SDL_GetPerformanceCounter(); |
3456 | } | 3504 | } |