diff options
Diffstat (limited to 'frontends/amiga/gui_options.c')
-rwxr-xr-x | frontends/amiga/gui_options.c | 116 |
1 files changed, 70 insertions, 46 deletions
diff --git a/frontends/amiga/gui_options.c b/frontends/amiga/gui_options.c index 8a9fd7bd7..c8c51b012 100755 --- a/frontends/amiga/gui_options.c +++ b/frontends/amiga/gui_options.c @@ -83,7 +83,8 @@ enum { - GID_OPTS_MAIN = GID_MAIN, + OID_MAIN = 0, + GID_OPTS_MAIN, GID_OPTS_HOMEPAGE, GID_OPTS_HOMEPAGE_DEFAULT, GID_OPTS_HOMEPAGE_CURRENT, @@ -93,6 +94,7 @@ enum GID_OPTS_FROMLOCALE, GID_OPTS_HISTORY, GID_OPTS_JAVASCRIPT, + GID_OPTS_ENABLECSS, GID_OPTS_REFERRAL, GID_OPTS_DONOTTRACK, GID_OPTS_FASTSCROLL, @@ -101,6 +103,9 @@ enum GID_OPTS_SCREENNAME, GID_OPTS_WIN_SIMPLE, GID_OPTS_THEME, + GID_OPTS_THEMEPAGE, + GID_OPTS_DARK, + GID_OPTS_LIGHT, GID_OPTS_PTRTRUE, GID_OPTS_PTROS, GID_OPTS_PROXY, @@ -115,7 +120,6 @@ enum GID_OPTS_NATIVEBM, GID_OPTS_SCALEQ, GID_OPTS_DITHERQ, - GID_OPTS_ANIMSPEED, GID_OPTS_ANIMDISABLE, GID_OPTS_DPI_Y, GID_OPTS_FONT_SANS, @@ -210,6 +214,7 @@ enum #define OPTS_LAST LAB_OPTS_LAST #define OPTS_MAX_TABS 10 #define OPTS_MAX_SCREEN 4 +#define OPTS_MAX_THEMEPAGE 3 #define OPTS_MAX_PROXY 5 #define OPTS_MAX_NATIVEBM 4 #define OPTS_MAX_DITHER 4 @@ -227,6 +232,7 @@ struct ami_gui_opts_window { #ifndef __amigaos4__ struct List clicktablist; struct List screenoptslist; + struct List pagethemeoptslist; struct List proxyoptslist; struct List nativebmoptslist; struct List ditheroptslist; @@ -246,6 +252,7 @@ static struct ami_gui_opts_window *gow = NULL; static CONST_STRPTR tabs[OPTS_MAX_TABS]; static STRPTR screenopts[OPTS_MAX_SCREEN]; +static CONST_STRPTR pagethemeopts[OPTS_MAX_THEMEPAGE]; static CONST_STRPTR proxyopts[OPTS_MAX_PROXY]; static CONST_STRPTR nativebmopts[OPTS_MAX_NATIVEBM]; static CONST_STRPTR ditheropts[OPTS_MAX_DITHER]; @@ -270,9 +277,8 @@ static void ami_gui_opts_array_to_list(struct List *list, const char *array[], i node = AllocChooserNode(CNA_Text, array[i], TAG_DONE); break; case NSA_LIST_RADIO: - /* Note: RBNA_Labels is RBNA_Label in OS4 - * Also note: These labels don't work (FIXME) */ - node = AllocRadioButtonNode(RBNA_Labels, array[i], TAG_DONE); + /* Note: RBNA_Labels is RBNA_Label in OS4 */ + node = AllocRadioButtonNode(0, RBNA_Labels, array[i], TAG_DONE); break; default: break; @@ -334,6 +340,10 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic")); screenopts[3] = NULL; + pagethemeopts[0] = (char *)ami_utf8_easy((char *)messages_get("Light")); + pagethemeopts[1] = (char *)ami_utf8_easy((char *)messages_get("Dark")); + pagethemeopts[2] = NULL; + proxyopts[0] = (char *)ami_utf8_easy((char *)messages_get("ProxyNone")); proxyopts[1] = (char *)ami_utf8_easy((char *)messages_get("ProxyNoAuth")); proxyopts[2] = (char *)ami_utf8_easy((char *)messages_get("ProxyBasic")); @@ -360,10 +370,15 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) gadlab[GID_OPTS_FROMLOCALE] = (char *)ami_utf8_easy((char *)messages_get("LocaleLang")); gadlab[GID_OPTS_HISTORY] = (char *)ami_utf8_easy((char *)messages_get("HistoryAge")); gadlab[GID_OPTS_JAVASCRIPT] = (char *)ami_utf8_easy((char *)messages_get("EnableJS")); + gadlab[GID_OPTS_ENABLECSS] = (char *)ami_utf8_easy((char *)messages_get("EnableCSS")); gadlab[GID_OPTS_REFERRAL] = (char *)ami_utf8_easy((char *)messages_get("SendReferer")); gadlab[GID_OPTS_DONOTTRACK] = (char *)ami_utf8_easy((char *)messages_get("DoNotTrack")); gadlab[GID_OPTS_FASTSCROLL] = (char *)ami_utf8_easy((char *)messages_get("FastScrolling")); gadlab[GID_OPTS_WIN_SIMPLE] = (char *)ami_utf8_easy((char *)messages_get("SimpleRefresh")); + gadlab[GID_OPTS_THEME] = (char *)ami_utf8_easy((char *)messages_get("ThemeGUI")); + gadlab[GID_OPTS_THEMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("ThemePage")); + gadlab[GID_OPTS_DARK] = (char *)ami_utf8_easy((char *)messages_get("Dark")); + gadlab[GID_OPTS_LIGHT] = (char *)ami_utf8_easy((char *)messages_get("Light")); gadlab[GID_OPTS_PTRTRUE] = (char *)ami_utf8_easy((char *)messages_get("TrueColour")); gadlab[GID_OPTS_PTROS] = (char *)ami_utf8_easy((char *)messages_get("OSPointers")); gadlab[GID_OPTS_PROXY] = (char *)ami_utf8_easy((char *)messages_get("ProxyType")); @@ -377,7 +392,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) gadlab[GID_OPTS_NATIVEBM] = (char *)ami_utf8_easy((char *)messages_get("CacheNative")); gadlab[GID_OPTS_SCALEQ] = (char *)ami_utf8_easy((char *)messages_get("ScaleQuality")); gadlab[GID_OPTS_DITHERQ] = (char *)ami_utf8_easy((char *)messages_get("DitherQuality")); - gadlab[GID_OPTS_ANIMSPEED] = (char *)ami_utf8_easy((char *)messages_get("AnimSpeedLimit")); gadlab[GID_OPTS_DPI_Y] = (char *)ami_utf8_easy((char *)messages_get("ResolutionY")); gadlab[GID_OPTS_ANIMDISABLE] = (char *)ami_utf8_easy((char *)messages_get("AnimDisable")); gadlab[GID_OPTS_FONT_SANS] = (char *)ami_utf8_easy((char *)messages_get("FontSans")); @@ -423,7 +437,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) gadlab[LAB_OPTS_WINTITLE] = (char *)ami_utf8_easy((char *)messages_get("Preferences")); gadlab[LAB_OPTS_RESTART] = (char *)ami_utf8_easy((char *)messages_get("NeedRestart")); gadlab[LAB_OPTS_DAYS] = (char *)ami_utf8_easy((char *)messages_get("Days")); - gadlab[LAB_OPTS_SECS] = (char *)ami_utf8_easy((char *)messages_get("AnimSpeedFrames")); gadlab[LAB_OPTS_PT] = (char *)ami_utf8_easy((char *)messages_get("Pt")); gadlab[LAB_OPTS_MM] = (char *)ami_utf8_easy((char *)messages_get("MM")); gadlab[LAB_OPTS_MB] = (char *)ami_utf8_easy((char *)messages_get("MBytes")); @@ -469,6 +482,7 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) #ifndef __amigaos4__ ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB); ami_gui_opts_array_to_list(&gow->screenoptslist, screenopts, NSA_LIST_RADIO); + ami_gui_opts_array_to_list(&gow->pagethemeoptslist, pagethemeopts, NSA_LIST_CHOOSER); ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER); ami_gui_opts_array_to_list(&gow->nativebmoptslist, nativebmopts, NSA_LIST_CHOOSER); ami_gui_opts_array_to_list(&gow->ditheroptslist, ditheropts, NSA_LIST_CHOOSER); @@ -500,6 +514,7 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow) #ifndef __amigaos4__ ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB); ami_gui_opts_free_list(&gow->screenoptslist, NSA_LIST_RADIO); + ami_gui_opts_free_list(&gow->pagethemeoptslist, NSA_LIST_CHOOSER); ami_gui_opts_free_list(&gow->proxyoptslist, NSA_LIST_CHOOSER); ami_gui_opts_free_list(&gow->nativebmoptslist, NSA_LIST_CHOOSER); ami_gui_opts_free_list(&gow->ditheroptslist, NSA_LIST_CHOOSER); @@ -514,12 +529,11 @@ void ami_gui_opts_open(void) ULONG proxytype = 0; BOOL screenmodedisabled = FALSE, screennamedisabled = FALSE; BOOL proxyhostdisabled = TRUE, proxyauthdisabled = TRUE, proxybypassdisabled = FALSE; - BOOL disableanims, animspeeddisabled = FALSE, acceptlangdisabled = FALSE; + BOOL disableanims, acceptlangdisabled = FALSE; BOOL scaleselected = nsoption_bool(scale_quality), scaledisabled = FALSE; BOOL ditherdisable = TRUE; BOOL download_notify_disabled = FALSE, tab_always_show_disabled = FALSE; BOOL ptr_disable = FALSE; - char animspeed[10]; char *homepage_url_lc = ami_utf8_easy(nsoption_charp(homepage_url)); struct TextAttr fontsans, fontserif, fontmono, fontcursive, fontfantasy; @@ -583,17 +597,13 @@ void ami_gui_opts_open(void) proxybypassdisabled = TRUE; } - sprintf(animspeed,"%.2f",(float)(nsoption_int(minimum_gif_delay)/100.0)); - if(nsoption_bool(animate_images)) { disableanims = FALSE; - animspeeddisabled = FALSE; } else { disableanims = TRUE; - animspeeddisabled = TRUE; } if(nsoption_bool(accept_lang_locale)) @@ -657,8 +667,8 @@ void ami_gui_opts_open(void) WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, FALSE, - WA_PubScreen,scrn, - WINDOW_SharedPort,sport, + WA_PubScreen, ami_gui_get_screen(), + WINDOW_SharedPort, ami_gui_get_shared_msgport(), WINDOW_UserData,gow, WINDOW_IconifyGadget, FALSE, WINDOW_Position, WPOS_CENTERSCREEN, @@ -866,6 +876,23 @@ void ami_gui_opts_open(void) GETFILE_ReadOnly, TRUE, GETFILE_FullFileExpand, FALSE, GetFileEnd, + CHILD_Label, LabelObj, + LABEL_Text, gadlab[GID_OPTS_THEME], + LabelEnd, + LAYOUT_AddChild, gow->objects[GID_OPTS_THEMEPAGE] = ChooserObj, + GA_ID, GID_OPTS_THEMEPAGE, + GA_RelVerify, TRUE, + CHOOSER_PopUp, TRUE, +#ifdef __amigaos4__ + CHOOSER_LabelArray, pagethemeopts, +#else + CHOOSER_Labels, &gow->pagethemeoptslist, +#endif + CHOOSER_Selected, nsoption_bool(prefer_dark_mode), + ChooserEnd, + CHILD_Label, LabelObj, + LABEL_Text, gadlab[GID_OPTS_THEMEPAGE], + LabelEnd, LayoutEnd, // theme CHILD_WeightedHeight, 0, LAYOUT_AddChild, LayoutVObj, @@ -1071,24 +1098,6 @@ void ami_gui_opts_open(void) LAYOUT_SpaceOuter, TRUE, LAYOUT_BevelStyle, BVS_GROUP, LAYOUT_Label, gadlab[GRP_OPTS_ANIMS], - LAYOUT_AddChild, LayoutHObj, - LAYOUT_LabelColumn, PLACETEXT_RIGHT, - LAYOUT_AddChild, gow->objects[GID_OPTS_ANIMSPEED] = StringObj, - GA_ID, GID_OPTS_ANIMSPEED, - GA_RelVerify, TRUE, - GA_Disabled, animspeeddisabled, - STRINGA_HookType, SHK_FLOAT, - STRINGA_TextVal, animspeed, - STRINGA_BufferPos,0, - StringEnd, - CHILD_WeightedWidth, 0, - CHILD_Label, LabelObj, - LABEL_Text, gadlab[LAB_OPTS_SECS], - LabelEnd, - LayoutEnd, - CHILD_Label, LabelObj, - LABEL_Text, gadlab[GID_OPTS_ANIMSPEED], - LabelEnd, LAYOUT_AddChild, gow->objects[GID_OPTS_ANIMDISABLE] = CheckBoxObj, GA_ID, GID_OPTS_ANIMDISABLE, GA_RelVerify, TRUE, @@ -1492,6 +1501,12 @@ void ami_gui_opts_open(void) GA_Selected, !nsoption_bool(core_select_menu), GA_Disabled, !ami_selectmenu_is_safe(), CheckBoxEnd, + LAYOUT_AddChild, gow->objects[GID_OPTS_ENABLECSS] = CheckBoxObj, + GA_ID, GID_OPTS_ENABLECSS, + GA_RelVerify, TRUE, + GA_Text, gadlab[GID_OPTS_ENABLECSS], + GA_Selected, nsoption_bool(author_level_css), + CheckBoxEnd, LayoutEnd, // misc CHILD_WeightedHeight, 0, @@ -1684,7 +1699,6 @@ void ami_gui_opts_open(void) static void ami_gui_opts_use(bool save) { ULONG data, id = 0; - float animspeed; struct TextAttr *tattr; char *dot; bool rescan_fonts = false; @@ -1736,7 +1750,16 @@ static void ami_gui_opts_use(bool save) } else { nsoption_set_bool(do_not_track, false); } - + + GetAttr(GA_Selected,gow->objects[GID_OPTS_ENABLECSS],(ULONG *)&data); + if (data) { + nsoption_set_bool(author_level_css, true); + } else { + nsoption_set_bool(author_level_css, false); + } + + ami_gui_menu_set_checked(NULL, M_CSS, nsoption_bool(author_level_css)); + GetAttr(GA_Selected,gow->objects[GID_OPTS_FASTSCROLL],(ULONG *)&data); if (data) { nsoption_set_bool(faster_scroll, true); @@ -1748,7 +1771,7 @@ static void ami_gui_opts_use(bool save) switch(data) { case 0: - nsoption_set_charp(pubscreen_name, strdup("\0")); + nsoption_set_charp(pubscreen_name, NULL); break; case 1: @@ -1781,6 +1804,13 @@ static void ami_gui_opts_use(bool save) GetAttr(GETFILE_Drawer,gow->objects[GID_OPTS_THEME],(ULONG *)&data); nsoption_set_charp(theme, (char *)strdup((char *)data)); + GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_THEMEPAGE],(ULONG *)&data); + if(data) { + nsoption_set_bool(prefer_dark_mode, true); + } else { + nsoption_set_bool(prefer_dark_mode, false); + } + GetAttr(GA_Selected,gow->objects[GID_OPTS_PTRTRUE],(ULONG *)&data); if (data) { nsoption_set_bool(truecolour_mouse_pointers, true); @@ -1835,10 +1865,6 @@ static void ami_gui_opts_use(bool save) GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality)); - GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_ANIMSPEED],(ULONG *)&data); - animspeed = strtof((char *)data, NULL); - nsoption_set_int(minimum_gif_delay, (int)(animspeed * 100)); - GetAttr(GA_Selected,gow->objects[GID_OPTS_ANIMDISABLE],(ULONG *)&data); if(data) { nsoption_set_bool(animate_images, false); @@ -2109,10 +2135,10 @@ static BOOL ami_gui_opts_event(void *w) case WMHI_GADGETHELP: if((result & WMHI_GADGETMASK) == 0) { /* Pointer not over our window */ - ami_help_open(AMI_HELP_MAIN, scrn); + ami_help_open(AMI_HELP_MAIN, ami_gui_get_screen()); } else { /* TODO: Make this sensitive to the tab the user is currently on */ - ami_help_open(AMI_HELP_PREFS, scrn); + ami_help_open(AMI_HELP_PREFS, ami_gui_get_screen()); } break; @@ -2141,9 +2167,9 @@ static BOOL ami_gui_opts_event(void *w) break; case GID_OPTS_HOMEPAGE_CURRENT: - if(cur_gw) RefreshSetGadgetAttrs((struct Gadget *)gow->objects[GID_OPTS_HOMEPAGE], + if(ami_gui_get_active_gw()) RefreshSetGadgetAttrs((struct Gadget *)gow->objects[GID_OPTS_HOMEPAGE], gow->win, NULL, STRINGA_TextVal, - nsurl_access(browser_window_get_url(cur_gw->bw)), TAG_DONE); + nsurl_access(browser_window_access_url(ami_gui_get_browser_window(ami_gui_get_active_gw()))), TAG_DONE); break; case GID_OPTS_HOMEPAGE_BLANK: @@ -2250,8 +2276,6 @@ static BOOL ami_gui_opts_event(void *w) break; case GID_OPTS_ANIMDISABLE: - RefreshSetGadgetAttrs((struct Gadget *)gow->objects[GID_OPTS_ANIMSPEED], - gow->win,NULL, GA_Disabled, code, TAG_DONE); break; case GID_OPTS_FONT_SANS: |