summaryrefslogtreecommitdiff
path: root/src/ui/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/util.c')
-rw-r--r--src/ui/util.c247
1 files changed, 174 insertions, 73 deletions
diff --git a/src/ui/util.c b/src/ui/util.c
index 906d30ae..995b730e 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -707,6 +707,9 @@ iWidget *makeMenu_Widget(iWidget *parent, const iMenuItem *items, size_t n) {
707 iBool haveIcons = iFalse; 707 iBool haveIcons = iFalse;
708 for (size_t i = 0; i < n; ++i) { 708 for (size_t i = 0; i < n; ++i) {
709 const iMenuItem *item = &items[i]; 709 const iMenuItem *item = &items[i];
710 if (!item->label) {
711 break;
712 }
710 if (equal_CStr(item->label, "---")) { 713 if (equal_CStr(item->label, "---")) {
711 addChild_Widget(menu, iClob(makeMenuSeparator_())); 714 addChild_Widget(menu, iClob(makeMenuSeparator_()));
712 } 715 }
@@ -1506,7 +1509,7 @@ static void addRadioButton_(iWidget *parent, const char *id, const char *label,
1506 id); 1509 id);
1507} 1510}
1508 1511
1509static void addFontButtons_(iWidget *parent, const char *id) { 1512static const iArray *makeFontItems_(const char *id) {
1510 const struct { 1513 const struct {
1511 const char * name; 1514 const char * name;
1512 enum iTextFont cfgId; 1515 enum iTextFont cfgId;
@@ -1518,7 +1521,7 @@ static void addFontButtons_(iWidget *parent, const char *id) {
1518 { "Tinos", tinos_TextFont }, 1521 { "Tinos", tinos_TextFont },
1519 { "---", -1 }, 1522 { "---", -1 },
1520 { "Iosevka", iosevka_TextFont } }; 1523 { "Iosevka", iosevka_TextFont } };
1521 iArray *items = new_Array(sizeof(iMenuItem)); 1524 iArray *items = collectNew_Array(sizeof(iMenuItem));
1522 iForIndices(i, fonts) { 1525 iForIndices(i, fonts) {
1523 pushBack_Array(items, 1526 pushBack_Array(items,
1524 &(iMenuItem){ fonts[i].name, 1527 &(iMenuItem){ fonts[i].name,
@@ -1528,11 +1531,18 @@ static void addFontButtons_(iWidget *parent, const char *id) {
1528 ? format_CStr("!%s.set arg:%d", id, fonts[i].cfgId) 1531 ? format_CStr("!%s.set arg:%d", id, fonts[i].cfgId)
1529 : NULL }); 1532 : NULL });
1530 } 1533 }
1531 iLabelWidget *button = makeMenuButton_LabelWidget("Source Sans 3", data_Array(items), size_Array(items)); 1534 pushBack_Array(items, &(iMenuItem){ NULL }); /* terminator */
1532 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"), uiBackgroundMenu_ColorId); 1535 return items;
1536}
1537
1538static void addFontButtons_(iWidget *parent, const char *id) {
1539 const iArray *items = makeFontItems_(id);
1540 iLabelWidget *button = makeMenuButton_LabelWidget("Source Sans 3",
1541 constData_Array(items), size_Array(items));
1542 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"),
1543 uiBackgroundMenu_ColorId);
1533 setId_Widget(as_Widget(button), format_CStr("prefs.%s", id)); 1544 setId_Widget(as_Widget(button), format_CStr("prefs.%s", id));
1534 addChildFlags_Widget(parent, iClob(button), alignLeft_WidgetFlag); 1545 addChildFlags_Widget(parent, iClob(button), alignLeft_WidgetFlag);
1535 delete_Array(items);
1536} 1546}
1537 1547
1538#if 0 1548#if 0
@@ -1615,7 +1625,7 @@ static void addPrefsInputWithHeading_(iWidget *headings, iWidget *values,
1615static size_t findWidestItemLabel_(const iMenuItem *items, size_t num) { 1625static size_t findWidestItemLabel_(const iMenuItem *items, size_t num) {
1616 int widest = 0; 1626 int widest = 0;
1617 size_t widestPos = iInvalidPos; 1627 size_t widestPos = iInvalidPos;
1618 for (size_t i = 0; i < num; i++) { 1628 for (size_t i = 0; i < num && items[i].label; i++) {
1619 const int width = 1629 const int width =
1620 measure_Text(uiLabel_FontId, 1630 measure_Text(uiLabel_FontId,
1621 translateCStr_Lang(items[i].label)) 1631 translateCStr_Lang(items[i].label))
@@ -1629,6 +1639,153 @@ static size_t findWidestItemLabel_(const iMenuItem *items, size_t num) {
1629} 1639}
1630 1640
1631iWidget *makePreferences_Widget(void) { 1641iWidget *makePreferences_Widget(void) {
1642 /* Common items. */
1643 const iMenuItem langItems[] = { { "${lang.de} - de", 0, 0, "uilang id:de" },
1644 { "${lang.en} - en", 0, 0, "uilang id:en" },
1645 { "${lang.es} - es", 0, 0, "uilang id:es" },
1646 { "${lang.fi} - fi", 0, 0, "uilang id:fi" },
1647 { "${lang.fr} - fr", 0, 0, "uilang id:fr" },
1648 { "${lang.ia} - ia", 0, 0, "uilang id:ia" },
1649 { "${lang.ie} - ie", 0, 0, "uilang id:ie" },
1650 { "${lang.pl} - pl", 0, 0, "uilang id:pl" },
1651 { "${lang.ru} - ru", 0, 0, "uilang id:ru" },
1652 { "${lang.sr} - sr", 0, 0, "uilang id:sr" },
1653 { "${lang.tok} - tok", 0, 0, "uilang id:tok" },
1654 { "${lang.zh.hans} - zh", 0, 0, "uilang id:zh_Hans" },
1655 { "${lang.zh.hant} - zh", 0, 0, "uilang id:zh_Hant" },
1656 { NULL } };
1657 const iMenuItem returnKeyBehaviors[] = {
1658 { "${prefs.returnkey.linebreak} " uiTextAction_ColorEscape shift_Icon return_Icon
1659 restore_ColorEscape
1660 " ${prefs.returnkey.accept} " uiTextAction_ColorEscape return_Icon,
1661 0,
1662 0,
1663 format_CStr("returnkey.set arg:%d", default_ReturnKeyBehavior) },
1664 { "${prefs.returnkey.linebreak} " uiTextAction_ColorEscape return_Icon restore_ColorEscape
1665 " ${prefs.returnkey.accept} " uiTextAction_ColorEscape shift_Icon return_Icon,
1666 0,
1667 0,
1668 format_CStr("returnkey.set arg:%d", acceptWithShift_ReturnKeyBehavior) },
1669 { "${prefs.returnkey.linebreak} " uiTextAction_ColorEscape return_Icon restore_ColorEscape
1670 " ${prefs.returnkey.accept} " uiTextAction_ColorEscape
1671#if defined (iPlatformApple)
1672 "\u2318" return_Icon,
1673#else
1674 "Ctrl" return_Icon,
1675#endif
1676 0,
1677 0,
1678 format_CStr("returnkey.set arg:%d", acceptWithPrimaryMod_ReturnKeyBehavior) },
1679 { NULL }
1680 };
1681 iMenuItem docThemes[2][max_GmDocumentTheme + 1];
1682 for (int i = 0; i < 2; ++i) {
1683 const iBool isDark = (i == 0);
1684 const char *mode = isDark ? "dark" : "light";
1685 const iMenuItem items[max_GmDocumentTheme + 1] = {
1686 { "${prefs.doctheme.name.colorfuldark}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulDark_GmDocumentTheme) },
1687 { "${prefs.doctheme.name.colorfullight}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulLight_GmDocumentTheme) },
1688 { "${prefs.doctheme.name.black}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, black_GmDocumentTheme) },
1689 { "${prefs.doctheme.name.gray}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, gray_GmDocumentTheme) },
1690 { "${prefs.doctheme.name.white}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, white_GmDocumentTheme) },
1691 { "${prefs.doctheme.name.sepia}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, sepia_GmDocumentTheme) },
1692 { "${prefs.doctheme.name.highcontrast}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, highContrast_GmDocumentTheme) },
1693 { NULL }
1694 };
1695 memcpy(docThemes[i], items, sizeof(items));
1696 }
1697 const iMenuItem imgStyles[] = {
1698 { "${prefs.imagestyle.original}", 0, 0, format_CStr("imagestyle.set arg:%d", original_ImageStyle) },
1699 { "${prefs.imagestyle.grayscale}", 0, 0, format_CStr("imagestyle.set arg:%d", grayscale_ImageStyle) },
1700 { "${prefs.imagestyle.bgfg}", 0, 0, format_CStr("imagestyle.set arg:%d", bgFg_ImageStyle) },
1701 { "${prefs.imagestyle.text}", 0, 0, format_CStr("imagestyle.set arg:%d", textColorized_ImageStyle) },
1702 { "${prefs.imagestyle.preformat}", 0, 0, format_CStr("imagestyle.set arg:%d", preformatColorized_ImageStyle) },
1703 { NULL }
1704 };
1705 /* Create the Preferences UI. */
1706 if (deviceType_App() != desktop_AppDeviceType) {
1707 const iMenuItem pinSplit[] = {
1708 { "button id:prefs.pinsplit.0 label:prefs.pinsplit.none", 0, 0, "pinsplit.set arg:0" },
1709 { "button id:prefs.pinsplit.1 label:prefs.pinsplit.left", 0, 0, "pinsplit.set arg:1" },
1710 { "button id:prefs.pinsplit.2 label:prefs.pinsplit.right", 0, 0, "pinsplit.set arg:2" },
1711 { NULL }
1712 };
1713 const iMenuItem themeItems[] = {
1714 { "button id:prefs.theme.0 label:prefs.theme.black", 0, 0, "theme.set arg:0" },
1715 { "button id:prefs.theme.1 label:prefs.theme.dark", 0, 0, "theme.set arg:1" },
1716 { "button id:prefs.theme.2 label:prefs.theme.light", 0, 0, "theme.set arg:2" },
1717 { "button id:prefs.theme.3 label:prefs.theme.white", 0, 0, "theme.set arg:3" },
1718 { NULL }
1719 };
1720 const iMenuItem accentItems[] = {
1721 { "button id:prefs.accent.0 label:prefs.accent.teal", 0, 0, "accent.set arg:0" },
1722 { "button id:prefs.accent.1 label:prefs.accent.orange", 0, 0, "accent.set arg:1" },
1723 { NULL }
1724 };
1725 const iMenuItem satItems[] = {
1726 { "button id:prefs.saturation.3 text:100 %", 0, 0, "saturation.set arg:100" },
1727 { "button id:prefs.saturation.2 text:66 %", 0, 0, "saturation.set arg:66" },
1728 { "button id:prefs.saturation.1 text:33 %", 0, 0, "saturation.set arg:33" },
1729 { "button id:prefs.saturation.0 text:0 %", 0, 0, "saturation.set arg:0" },
1730 { NULL }
1731 };
1732 const iMenuItem generalItems[] = {
1733 { "title id:heading.prefs.general", 0, 0, NULL },
1734 { "input id:prefs.searchurl url:1", 0, 0, NULL },
1735 { "padding", 0, 0, NULL },
1736 { "toggle id:prefs.hoverlink", 0, 0, NULL },
1737 { "toggle id:prefs.archive.openindex", 0, 0, NULL },
1738 { "radio device:1 id:prefs.pinsplit", 0, 0, (const void *) pinSplit },
1739 { "padding", 0, 0, NULL },
1740 { "dropdown id:prefs.uilang", 0, 0, (const void *) langItems },
1741 { NULL }
1742 };
1743 const iMenuItem uiItems[] = {
1744 { "title id:heading.prefs.interface", 0, 0, NULL },
1745 { "dropdown device:1 id:prefs.returnkey", 0, 0, (const void *) returnKeyBehaviors },
1746 { "padding device:1", 0, 0, NULL },
1747 { "toggle device:2 id:prefs.hidetoolbarscroll", 0, 0, NULL },
1748 { "heading id:heading.prefs.sizing", 0, 0, NULL },
1749 { "input id:prefs.uiscale maxlen:8", 0, 0, NULL },
1750 { NULL }
1751 };
1752 const iMenuItem colorItems[] = {
1753 { "title id:heading.prefs.colors", 0, 0, NULL },
1754 { "heading id:heading.prefs.uitheme", 0, 0, NULL },
1755 { "toggle id:prefs.ostheme", 0, 0, NULL },
1756 { "radio id:prefs.theme", 0, 0, (const void *) themeItems },
1757 { "radio id:prefs.accent", 0, 0, (const void *) accentItems },
1758 { "heading id:heading.prefs.pagecontent", 0, 0, NULL },
1759 { "dropdown id:prefs.doctheme.dark", 0, 0, (const void *) docThemes[0] },
1760 { "dropdown id:prefs.doctheme.light", 0, 0, (const void *) docThemes[1] },
1761 { "radio id:prefs.saturation", 0, 0, (const void *) satItems },
1762 { "padding", 0, 0, NULL },
1763 { "dropdown id:prefs.imagestyle", 0, 0, (const void *) imgStyles },
1764 { NULL }
1765 };
1766 const iMenuItem fontItems[] = {
1767 { "title id:heading.prefs.fonts", 0, 0, NULL },
1768 { "dropdown id:prefs.headingfont", 0, 0, (const void *) constData_Array(makeFontItems_("headingfont")) },
1769 { "dropdown id:prefs.font", 0, 0, (const void *) constData_Array(makeFontItems_("font")) },
1770 { NULL }
1771 };
1772 const iMenuItem items[] = { { "panel icon:0x2699 id:heading.prefs.general",
1773 '1', 0,
1774 (const void *) generalItems },
1775 { "panel icon:0x1f4f1 id:heading.prefs.interface",
1776 '2', 0,
1777 (const void *) uiItems },
1778 { "panel icon:0x1f3a8 id:heading.prefs.colors",
1779 '3', 0,
1780 (const void *) colorItems },
1781 { "panel icon:0x1f5da id:heading.prefs.fonts",
1782 '4', 0,
1783 (const void *) fontItems },
1784 { NULL } };
1785 iWidget *dlg = makeSplitMultiPanel_Mobile(items);
1786 setupSheetTransition_Mobile(dlg, iTrue);
1787 return dlg;
1788 }
1632 iWidget *dlg = makeSheet_Widget("prefs"); 1789 iWidget *dlg = makeSheet_Widget("prefs");
1633 addChildFlags_Widget(dlg, 1790 addChildFlags_Widget(dlg,
1634 iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.prefs}", NULL)), 1791 iClob(new_LabelWidget(uiHeading_ColorEscape "${heading.prefs}", NULL)),
@@ -1666,22 +1823,7 @@ iWidget *makePreferences_Widget(void) {
1666 addChild_Widget(values, iClob(makePadding_Widget(bigGap))); 1823 addChild_Widget(values, iClob(makePadding_Widget(bigGap)));
1667 /* UI languages. */ { 1824 /* UI languages. */ {
1668 iArray *uiLangs = collectNew_Array(sizeof(iMenuItem)); 1825 iArray *uiLangs = collectNew_Array(sizeof(iMenuItem));
1669 const iMenuItem langItems[] = { 1826 pushBackN_Array(uiLangs, langItems, iElemCount(langItems) - 1);
1670 { "${lang.de} - de", 0, 0, "uilang id:de" },
1671 { "${lang.en} - en", 0, 0, "uilang id:en" },
1672 { "${lang.es} - es", 0, 0, "uilang id:es" },
1673 { "${lang.fi} - fi", 0, 0, "uilang id:fi" },
1674 { "${lang.fr} - fr", 0, 0, "uilang id:fr" },
1675 { "${lang.ia} - ia", 0, 0, "uilang id:ia" },
1676 { "${lang.ie} - ie", 0, 0, "uilang id:ie" },
1677 { "${lang.pl} - pl", 0, 0, "uilang id:pl" },
1678 { "${lang.ru} - ru", 0, 0, "uilang id:ru" },
1679 { "${lang.sr} - sr", 0, 0, "uilang id:sr" },
1680 { "${lang.tok} - tok", 0, 0, "uilang id:tok" },
1681 { "${lang.zh.hans} - zh", 0, 0, "uilang id:zh_Hans" },
1682 { "${lang.zh.hant} - zh", 0, 0, "uilang id:zh_Hant" },
1683 };
1684 pushBackN_Array(uiLangs, langItems, iElemCount(langItems));
1685 /* TODO: Add an arrange flag for resizing parent to widest child. */ 1827 /* TODO: Add an arrange flag for resizing parent to widest child. */
1686 size_t widestPos = findWidestItemLabel_(data_Array(uiLangs), size_Array(uiLangs)); 1828 size_t widestPos = findWidestItemLabel_(data_Array(uiLangs), size_Array(uiLangs));
1687 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.uilang}"))); 1829 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.uilang}")));
@@ -1702,39 +1844,12 @@ iWidget *makePreferences_Widget(void) {
1702#endif 1844#endif
1703 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.returnkey}"))); 1845 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.returnkey}")));
1704 /* Return key behaviors. */ { 1846 /* Return key behaviors. */ {
1705 const iMenuItem returnKeyBehaviors[] = {
1706 { "${prefs.returnkey.linebreak} "
1707 uiTextAction_ColorEscape shift_Icon return_Icon restore_ColorEscape
1708 " ${prefs.returnkey.accept} "
1709 uiTextAction_ColorEscape return_Icon,
1710 0,
1711 0,
1712 format_CStr("returnkey.set arg:%d", default_ReturnKeyBehavior) },
1713 { "${prefs.returnkey.linebreak} "
1714 uiTextAction_ColorEscape return_Icon restore_ColorEscape
1715 " ${prefs.returnkey.accept} "
1716 uiTextAction_ColorEscape shift_Icon return_Icon,
1717 0,
1718 0,
1719 format_CStr("returnkey.set arg:%d", acceptWithShift_ReturnKeyBehavior) },
1720 { "${prefs.returnkey.linebreak} "
1721 uiTextAction_ColorEscape return_Icon restore_ColorEscape
1722 " ${prefs.returnkey.accept} " uiTextAction_ColorEscape
1723#if defined (iPlatformApple)
1724 "\u2318" return_Icon,
1725#else
1726 "Ctrl" return_Icon,
1727#endif
1728 0,
1729 0,
1730 format_CStr("returnkey.set arg:%d", acceptWithPrimaryMod_ReturnKeyBehavior) },
1731 };
1732 iLabelWidget *returnKey = makeMenuButton_LabelWidget( 1847 iLabelWidget *returnKey = makeMenuButton_LabelWidget(
1733 returnKeyBehaviors[findWidestItemLabel_(returnKeyBehaviors, 1848 returnKeyBehaviors[findWidestItemLabel_(returnKeyBehaviors,
1734 iElemCount(returnKeyBehaviors))] 1849 iElemCount(returnKeyBehaviors) - 1)]
1735 .label, 1850 .label,
1736 returnKeyBehaviors, 1851 returnKeyBehaviors,
1737 iElemCount(returnKeyBehaviors)); 1852 iElemCount(returnKeyBehaviors) - 1);
1738 setBackgroundColor_Widget(findChild_Widget(as_Widget(returnKey), "menu"), 1853 setBackgroundColor_Widget(findChild_Widget(as_Widget(returnKey), "menu"),
1739 uiBackgroundMenu_ColorId); 1854 uiBackgroundMenu_ColorId);
1740 setId_Widget(addChildFlags_Widget(values, iClob(returnKey), alignLeft_WidgetFlag), 1855 setId_Widget(addChildFlags_Widget(values, iClob(returnKey), alignLeft_WidgetFlag),
@@ -1804,20 +1919,13 @@ iWidget *makePreferences_Widget(void) {
1804 for (int i = 0; i < 2; ++i) { 1919 for (int i = 0; i < 2; ++i) {
1805 const iBool isDark = (i == 0); 1920 const iBool isDark = (i == 0);
1806 const char *mode = isDark ? "dark" : "light"; 1921 const char *mode = isDark ? "dark" : "light";
1807 const iMenuItem themes[] = {
1808 { "${prefs.doctheme.name.colorfuldark}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulDark_GmDocumentTheme) },
1809 { "${prefs.doctheme.name.colorfullight}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, colorfulLight_GmDocumentTheme) },
1810 { "${prefs.doctheme.name.black}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, black_GmDocumentTheme) },
1811 { "${prefs.doctheme.name.gray}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, gray_GmDocumentTheme) },
1812 { "${prefs.doctheme.name.white}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, white_GmDocumentTheme) },
1813 { "${prefs.doctheme.name.sepia}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, sepia_GmDocumentTheme) },
1814 { "${prefs.doctheme.name.highcontrast}", 0, 0, format_CStr("doctheme.%s.set arg:%d", mode, highContrast_GmDocumentTheme) },
1815 };
1816 addChild_Widget(headings, iClob(makeHeading_Widget(isDark ? "${prefs.doctheme.dark}" : "${prefs.doctheme.light}"))); 1922 addChild_Widget(headings, iClob(makeHeading_Widget(isDark ? "${prefs.doctheme.dark}" : "${prefs.doctheme.light}")));
1817 iLabelWidget *button = 1923 iLabelWidget *button = makeMenuButton_LabelWidget(
1818 makeMenuButton_LabelWidget(themes[1].label, themes, iElemCount(themes)); 1924 docThemes[i][findWidestItemLabel_(docThemes[i], max_GmDocumentTheme)].label,
1819// setFrameColor_Widget(findChild_Widget(as_Widget(button), "menu"), 1925 docThemes[i],
1820// uiBackgroundSelected_ColorId); 1926 max_GmDocumentTheme);
1927 // setFrameColor_Widget(findChild_Widget(as_Widget(button), "menu"),
1928 // uiBackgroundSelected_ColorId);
1821 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"), uiBackgroundMenu_ColorId); 1929 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"), uiBackgroundMenu_ColorId);
1822 setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag), 1930 setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag),
1823 format_CStr("prefs.doctheme.%s", mode)); 1931 format_CStr("prefs.doctheme.%s", mode));
@@ -1833,17 +1941,10 @@ iWidget *makePreferences_Widget(void) {
1833 addChildFlags_Widget(values, iClob(sats), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag); 1941 addChildFlags_Widget(values, iClob(sats), arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag);
1834 /* Colorize images. */ { 1942 /* Colorize images. */ {
1835 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.imagestyle}"))); 1943 addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.imagestyle}")));
1836 const iMenuItem imgStyles[] = {
1837 { "${prefs.imagestyle.original}", 0, 0, format_CStr("imagestyle.set arg:%d", original_ImageStyle) },
1838 { "${prefs.imagestyle.grayscale}", 0, 0, format_CStr("imagestyle.set arg:%d", grayscale_ImageStyle) },
1839 { "${prefs.imagestyle.bgfg}", 0, 0, format_CStr("imagestyle.set arg:%d", bgFg_ImageStyle) },
1840 { "${prefs.imagestyle.text}", 0, 0, format_CStr("imagestyle.set arg:%d", textColorized_ImageStyle) },
1841 { "${prefs.imagestyle.preformat}", 0, 0, format_CStr("imagestyle.set arg:%d", preformatColorized_ImageStyle) },
1842 };
1843 iLabelWidget *button = makeMenuButton_LabelWidget( 1944 iLabelWidget *button = makeMenuButton_LabelWidget(
1844 imgStyles[findWidestItemLabel_(imgStyles, iElemCount(imgStyles))].label, 1945 imgStyles[findWidestItemLabel_(imgStyles, iElemCount(imgStyles) - 1)].label,
1845 imgStyles, 1946 imgStyles,
1846 iElemCount(imgStyles)); 1947 iElemCount(imgStyles) - 1);
1847 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"), 1948 setBackgroundColor_Widget(findChild_Widget(as_Widget(button), "menu"),
1848 uiBackgroundMenu_ColorId); 1949 uiBackgroundMenu_ColorId);
1849 setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag), 1950 setId_Widget(addChildFlags_Widget(values, iClob(button), alignLeft_WidgetFlag),