From 63410f62c85864e36e476f2c47eb7654087beb57 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Mon, 9 May 2016 21:34:31 -0700 Subject: [PATCH] ui.theme: updates to color scheme. Fixes circularity and adds theme switching to Mac menu. Could use some simplification and reduction in color theme hooks. --- .../English.lproj/Factor.nib/classes.nib | 38 --- .../English.lproj/Factor.nib/designable.nib | 282 ++++++++++++++++++ .../English.lproj/Factor.nib/info.nib | 16 - .../English.lproj/Factor.nib/keyedobjects.nib | Bin 15029 -> 12586 bytes basis/help/stylesheet/stylesheet.factor | 4 +- basis/help/tips/tips-docs.factor | 4 +- basis/listener/listener.factor | 6 +- .../prettyprint/stylesheet/stylesheet.factor | 49 +-- basis/ui/backend/cocoa/tools/tools.factor | 20 +- basis/ui/gadgets/labels/labels.factor | 4 +- .../gadgets/line-support/line-support.factor | 2 +- basis/ui/gadgets/menus/menus.factor | 4 +- basis/ui/gadgets/panes/panes.factor | 2 +- .../presentations/presentations.factor | 3 +- basis/ui/gadgets/status-bar/status-bar.factor | 2 +- basis/ui/gadgets/tables/tables.factor | 4 +- basis/ui/gadgets/theme/theme.factor | 5 +- basis/ui/theme/switching/switching.factor | 48 ++- basis/ui/theme/theme.factor | 35 ++- basis/ui/tools/browser/browser.factor | 6 +- basis/ui/tools/browser/popups/popups.factor | 2 +- basis/ui/tools/common/common.factor | 3 - basis/ui/tools/debugger/debugger.factor | 2 +- basis/ui/tools/inspector/inspector.factor | 15 +- .../listener/completion/completion.factor | 2 +- basis/ui/tools/listener/listener.factor | 1 + basis/ui/tools/traceback/traceback.factor | 2 +- basis/vocabs/prettyprint/prettyprint.factor | 19 +- 28 files changed, 430 insertions(+), 150 deletions(-) delete mode 100644 Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib create mode 100644 Factor.app/Contents/Resources/English.lproj/Factor.nib/designable.nib delete mode 100644 Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib deleted file mode 100644 index 6a6eedfcc0..0000000000 --- a/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib +++ /dev/null @@ -1,38 +0,0 @@ - - - - - IBClasses - - - ACTIONS - - factorBrowser - id - factorListener - id - newFactorBrowser - id - newFactorListener - id - refreshAll - id - runFactorFile - id - saveFactorImage - id - saveFactorImageAs - id - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - IBVersion - 1 - - diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/designable.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/designable.nib new file mode 100644 index 0000000000..74aa0193e2 --- /dev/null +++ b/Factor.app/Contents/Resources/English.lproj/Factor.nib/designable.nib @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib deleted file mode 100644 index 1d9f641c11..0000000000 --- a/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 677 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9J61 - targetFramework - IBCocoaFramework - - diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/keyedobjects.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/keyedobjects.nib index 1659393f2e09f2c10eeb2c37f5afe96dadbe7f1c..67eedf8402b80dd76aead6b5f9a565daebf9cdd4 100644 GIT binary patch literal 12586 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 F{|C22vNr$# diff --git a/basis/help/stylesheet/stylesheet.factor b/basis/help/stylesheet/stylesheet.factor index 2396d2e24a..fe5a6984b8 100644 --- a/basis/help/stylesheet/stylesheet.factor +++ b/basis/help/stylesheet/stylesheet.factor @@ -108,12 +108,13 @@ H{ SYMBOL: url-style H{ { font-name $ default-monospace-font-name } - { foreground $ url-color } + { foreground $ link-color } } url-style set-global SYMBOL: warning-style H{ { page-color $ warning-background-color } + { border-color $ warning-border-color } { inset { 5 5 } } { wrap-margin $ wrap-margin-full } } warning-style set-global @@ -121,6 +122,7 @@ H{ SYMBOL: deprecated-style H{ { page-color $ warning-background-color } + { border-color $ warning-border-color } { inset { 5 5 } } { wrap-margin $ wrap-margin-full } } deprecated-style set-global diff --git a/basis/help/tips/tips-docs.factor b/basis/help/tips/tips-docs.factor index b682ed1da0..9529103ddd 100644 --- a/basis/help/tips/tips-docs.factor +++ b/basis/help/tips/tips-docs.factor @@ -1,6 +1,6 @@ USING: debugger editors help help.apropos help.markup help.syntax help.vocabs memory see stack-checker -tools.destructors tools.time ui.theme.switching ; +tools.destructors tools.time ; IN: help.tips TIP: "To look at the most recent error, run " { $link :error } ". To look at the most recent error's callstack, run " { $link :c } "." ; @@ -27,8 +27,6 @@ TIP: "To save time on reloading big libraries such as the " { $vocab-link "furna TIP: "Use the " { $link leaks. } " combinator to track down resource leaks." ; -TIP: "Use " { $link light-mode } " and " { $link dark-mode } " for a light or dark user interface." ; - HELP: TIP: { $syntax "TIP: content ;" } { $values { "content" "a markup element" } } diff --git a/basis/listener/listener.factor b/basis/listener/listener.factor index d256e747e7..5099c5ab90 100644 --- a/basis/listener/listener.factor +++ b/basis/listener/listener.factor @@ -4,7 +4,7 @@ USING: accessors colors colors.constants combinators.short-circuit compiler.units continuations debugger fry io io.styles kernel lexer literals locals math math.parser namespaces parser parser.notes prettyprint sequences sets -source-files.errors system ui.theme vocabs vocabs.loader +source-files.errors system vocabs vocabs.loader vocabs.parser ; IN: listener @@ -17,8 +17,8 @@ GENERIC# prompt. 1 ( stream prompt -- ) SYMBOL: prompt-style H{ - { background $ prompt-background-color } - { foreground $ text-color } + { background T{ rgba f 1 0.7 0.7 1 } } + { foreground COLOR: black } } prompt-style set-global M: object prompt. diff --git a/basis/prettyprint/stylesheet/stylesheet.factor b/basis/prettyprint/stylesheet/stylesheet.factor index 51544e5b3c..ccdedde73d 100644 --- a/basis/prettyprint/stylesheet/stylesheet.factor +++ b/basis/prettyprint/stylesheet/stylesheet.factor @@ -1,15 +1,15 @@ ! Copyright (C) 2009 Keith Lazuka, Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs colors combinators +USING: assocs colors colors.constants combinators combinators.short-circuit hashtables io.styles kernel literals -namespaces sequences ui.theme words words.symbol ; +namespaces sequences words words.symbol ; IN: prettyprint.stylesheet +SYMBOL: base-word-style +H{ } base-word-style set-global + GENERIC: word-style ( word -- style ) M: word word-style - [ presented associate ] - [ "word-style" word-prop ] bi assoc-union! - text-color foreground pick set-at ; - -M: highlighted-word word-style - call-next-method - highlighted-word-color foreground pick set-at ; + [ presented base-word-style get clone [ set-at ] keep ] + [ "word-style" word-prop ] bi assoc-union! ; - [ - [ presented foreground ] dip - [ set-at ] curry bi-curry@ bi* - ] keep ; +M: highlighted-word word-style + call-next-method highlighted-word-style get assoc-union! ; -PRIVATE> +SYMBOL: base-string-style +H{ + { foreground COLOR: LightSalmon4 } +} base-string-style set-global : string-style ( str -- style ) - string-color colored-presentation-style ; + presented base-string-style get clone [ set-at ] keep ; + +SYMBOL: base-vocab-style +H{ + { foreground COLOR: gray35 } +} base-vocab-style set-global : vocab-style ( vocab -- style ) - dim-color colored-presentation-style ; + presented base-vocab-style get clone [ set-at ] keep ; SYMBOL: stack-effect-style - H{ - { foreground $ stack-effect-color } + { foreground COLOR: FactorDarkGreen } { font-style plain } } stack-effect-style set-global : effect-style ( effect -- style ) - presented associate stack-effect-style get assoc-union! ; + presented stack-effect-style get clone [ set-at ] keep ; diff --git a/basis/ui/backend/cocoa/tools/tools.factor b/basis/ui/backend/cocoa/tools/tools.factor index 94d522c933..a514d8c102 100644 --- a/basis/ui/backend/cocoa/tools/tools.factor +++ b/basis/ui/backend/cocoa/tools/tools.factor @@ -1,11 +1,11 @@ ! Copyright (C) 2006, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax cocoa cocoa.nibs cocoa.application -cocoa.classes cocoa.dialogs cocoa.pasteboard cocoa.runtime -cocoa.subclassing core-foundation core-foundation.strings -help.topics kernel memory namespaces parser system ui -ui.tools.browser ui.tools.listener ui.backend.cocoa eval -locals listener vocabs.refresh ; +USING: alien.syntax cocoa cocoa.application cocoa.classes +cocoa.dialogs cocoa.nibs cocoa.pasteboard cocoa.runtime +cocoa.subclassing core-foundation.strings eval kernel listener +locals memory namespaces system ui.backend.cocoa +ui.theme.switching ui.tools.browser ui.tools.listener +vocabs.refresh ; FROM: alien.c-types => int void ; IN: ui.backend.cocoa.tools @@ -27,9 +27,9 @@ CLASS: FactorWorkspaceApplicationDelegate < FactorApplicationDelegate METHOD: int applicationShouldHandleReopen: id app hasVisibleWindows: int flag [ flag 0 = [ show-listener ] when 1 ] ; - METHOD: id factorListener: id app [ show-listener f ] ; + METHOD: id showFactorListener: id app [ show-listener f ] ; - METHOD: id factorBrowser: id app [ show-browser f ] ; + METHOD: id showFactorBrowser: id app [ show-browser f ] ; METHOD: id newFactorListener: id app [ listener-window f ] ; @@ -41,6 +41,10 @@ CLASS: FactorWorkspaceApplicationDelegate < FactorApplicationDelegate METHOD: id saveFactorImageAs: id app [ menu-save-image f ] ; + METHOD: id switchLightTheme: id app [ light-mode f ] ; + + METHOD: id switchDarkTheme: id app [ dark-mode f ] ; + METHOD: id refreshAll: id app [ [ refresh-all ] \ refresh-all call-listener f ] ; ; diff --git a/basis/ui/gadgets/labels/labels.factor b/basis/ui/gadgets/labels/labels.factor index 998bfb538a..a4fce2cd57 100644 --- a/basis/ui/gadgets/labels/labels.factor +++ b/basis/ui/gadgets/labels/labels.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays colors.constants combinators fonts fry kernel make math.functions models namespaces sequences splitting -strings ui.baseline-alignment ui.gadgets ui.gadgets.tracks -ui.pens.solid ui.render ui.text ui.tools.common ; +strings ui.baseline-alignment ui.gadgets ui.gadgets.theme +ui.gadgets.tracks ui.pens.solid ui.render ui.text ; IN: ui.gadgets.labels ! A label gadget draws a string. diff --git a/basis/ui/gadgets/line-support/line-support.factor b/basis/ui/gadgets/line-support/line-support.factor index 4b2eb0f699..078c0eb149 100644 --- a/basis/ui/gadgets/line-support/line-support.factor +++ b/basis/ui/gadgets/line-support/line-support.factor @@ -3,7 +3,7 @@ USING: accessors arrays combinators fry kernel math math.functions math.order math.ranges math.vectors namespaces opengl sequences ui.gadgets ui.gadgets.scrollers -ui.gadgets.viewports ui.render ui.text ; +ui.gadgets.viewports ui.render ui.text ui.theme ; IN: ui.gadgets.line-support ! Some code shared by table and editor gadgets diff --git a/basis/ui/gadgets/menus/menus.factor b/basis/ui/gadgets/menus/menus.factor index f660b1dbf1..dba9a9adae 100644 --- a/basis/ui/gadgets/menus/menus.factor +++ b/basis/ui/gadgets/menus/menus.factor @@ -3,8 +3,8 @@ USING: accessors kernel locals math.rectangles math.vectors namespaces opengl sequences sorting ui.commands ui.gadgets ui.gadgets.buttons ui.gadgets.glass ui.gadgets.packs -ui.gadgets.theme ui.gadgets.worlds ui.gestures ui.operations -ui.pens ui.pens.solid ui.tools.common ; +ui.gadgets.worlds ui.gestures ui.operations +ui.pens ui.pens.solid ui.theme ui.tools.common ; IN: ui.gadgets.menus : show-menu ( owner menu -- ) diff --git a/basis/ui/gadgets/panes/panes.factor b/basis/ui/gadgets/panes/panes.factor index e76417ee71..5a706b0c6f 100644 --- a/basis/ui/gadgets/panes/panes.factor +++ b/basis/ui/gadgets/panes/panes.factor @@ -9,7 +9,7 @@ ui.gadgets.icons ui.gadgets.incremental ui.gadgets.labels ui.gadgets.menus ui.gadgets.packs ui.gadgets.paragraphs ui.gadgets.presentations ui.gadgets.private ui.gadgets.scrollers ui.gadgets.tracks ui.gestures ui.images ui.pens.solid ui.render -ui.traverse ; +ui.theme ui.traverse ; FROM: io.styles => foreground background ; FROM: ui.gadgets.wrappers => ; IN: ui.gadgets.panes diff --git a/basis/ui/gadgets/presentations/presentations.factor b/basis/ui/gadgets/presentations/presentations.factor index d542494096..b65ca9d074 100644 --- a/basis/ui/gadgets/presentations/presentations.factor +++ b/basis/ui/gadgets/presentations/presentations.factor @@ -3,8 +3,7 @@ USING: accessors kernel memoize namespaces ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.buttons ui.gadgets.buttons.private ui.gadgets.glass ui.gadgets.menus ui.gadgets.status-bar -ui.gadgets.theme ui.gadgets.worlds ui.gestures -ui.operations ui.pens.solid ; +ui.gadgets.worlds ui.gestures ui.operations ui.pens.solid ui.theme ; IN: ui.gadgets.presentations TUPLE: presentation < button object hook ; diff --git a/basis/ui/gadgets/status-bar/status-bar.factor b/basis/ui/gadgets/status-bar/status-bar.factor index 3e3e603fed..73b763c59f 100644 --- a/basis/ui/gadgets/status-bar/status-bar.factor +++ b/basis/ui/gadgets/status-bar/status-bar.factor @@ -3,7 +3,7 @@ USING: accessors calendar colors.constants fonts kernel models models.arrow models.delay sequences summary ui ui.gadgets.borders ui.gadgets.labels ui.gadgets.tracks -ui.gadgets.theme ui.gadgets.worlds ui.pens.solid ui.private ; +ui.gadgets.worlds ui.pens.solid ui.private ui.theme ; IN: ui.gadgets.status-bar : status-bar-font ( -- font ) diff --git a/basis/ui/gadgets/tables/tables.factor b/basis/ui/gadgets/tables/tables.factor index 5bd9209c88..58252100ef 100644 --- a/basis/ui/gadgets/tables/tables.factor +++ b/basis/ui/gadgets/tables/tables.factor @@ -5,8 +5,8 @@ combinators.short-circuit fonts fry kernel locals math math.functions math.order math.rectangles math.vectors models namespaces opengl sequences splitting strings ui.commands ui.gadgets ui.gadgets.line-support ui.gadgets.menus -ui.gadgets.scrollers ui.gadgets.status-bar ui.gadgets.theme ui.gadgets.worlds -ui.gestures ui.images ui.pens.solid ui.render ui.text ; +ui.gadgets.scrollers ui.gadgets.status-bar ui.gadgets.worlds +ui.gestures ui.images ui.pens.solid ui.render ui.text ui.theme ; IN: ui.gadgets.tables ! Row rendererer protocol diff --git a/basis/ui/gadgets/theme/theme.factor b/basis/ui/gadgets/theme/theme.factor index 1a764b9828..bea1fad24b 100644 --- a/basis/ui/gadgets/theme/theme.factor +++ b/basis/ui/gadgets/theme/theme.factor @@ -1,7 +1,10 @@ ! Copyright (C) 2009, 2010 Slava Pestov, Joe Groff. ! See http://factorcode.org/license.txt for BSD license. -USING: io.pathnames sequences ui.images ; +USING: accessors io.pathnames sequences ui.images ui.theme ; IN: ui.gadgets.theme : theme-image ( name -- image-name ) "vocab:ui/gadgets/theme/" prepend-path ".tiff" append ; + +: theme-font-colors ( gadget -- gadget ) + [ content-background >>background text-color >>foreground ] change-font ; diff --git a/basis/ui/theme/switching/switching.factor b/basis/ui/theme/switching/switching.factor index 0afdad0bc9..786ee6e698 100644 --- a/basis/ui/theme/switching/switching.factor +++ b/basis/ui/theme/switching/switching.factor @@ -1,31 +1,57 @@ ! Copyright (C) 2016 Nicolas Pénet. ! See http://factorcode.org/license.txt for BSD license. -USING: fry hashtables help.stylesheet help.tips io.styles -kernel listener namespaces ui.theme ui.tools.listener ; +USING: assocs fry hashtables help.stylesheet help.tips io.styles +kernel listener namespaces prettyprint.stylesheet sequences +ui.theme ui.tools.listener vocabs.prettyprint words ; IN: ui.theme.switching : (update-style) ( style color elt -- ) '[ _ _ rot ?set-at ] change-global ; : update-stylesheet ( -- ) + + ! help.stylesheet default-span-style text-color foreground (update-style) link-style link-color foreground (update-style) title-style title-color foreground (update-style) + help-path-style help-path-border-color table-border (update-style) heading-style heading-color foreground (update-style) snippet-style snippet-color foreground (update-style) code-style code-background-color page-color (update-style) output-style output-color foreground (update-style) - url-style url-color foreground (update-style) + url-style link-color foreground (update-style) warning-style warning-background-color page-color (update-style) - deprecated-style warning-background-color page-color (update-style) - table-style line-color table-border (update-style) - prompt-style prompt-background-color background (update-style) - prompt-style text-color foreground (update-style) + warning-style warning-border-color border-color (update-style) + deprecated-style deprecated-background-color page-color (update-style) + deprecated-style deprecated-border-color border-color (update-style) + table-style table-border-color table-border (update-style) + + ! help.tips tip-of-the-day-style tip-background-color page-color (update-style) + + ! ui.tools.listener listener-input-style text-color foreground (update-style) - listener-word-style text-color foreground (update-style) ; + listener-word-style text-color foreground (update-style) + + ! prettyprint.stylesheet + { POSTPONE: USING: POSTPONE: USE: POSTPONE: IN: } + [ "word-style" word-prop [ dim-color foreground ] dip set-at ] each + base-word-style text-color foreground (update-style) + highlighted-word-style highlighted-word-color foreground (update-style) + base-string-style string-color foreground (update-style) + base-vocab-style dim-color foreground (update-style) + stack-effect-style stack-effect-color foreground (update-style) + + ! listener + prompt-style prompt-background-color background (update-style) + prompt-style text-color foreground (update-style) + + ! vocabs.prettyprint + manifest-style vocab-background-color page-color (update-style) + manifest-style vocab-border-color border-color (update-style) ; -: light-mode ( -- ) light-theme theme set-global update-stylesheet ; -: dark-mode ( -- ) dark-theme theme set-global update-stylesheet ; +: light-mode ( -- ) + light-theme theme set-global update-stylesheet ; -light-mode +: dark-mode ( -- ) + dark-theme theme set-global update-stylesheet ; diff --git a/basis/ui/theme/theme.factor b/basis/ui/theme/theme.factor index dbdd5ec37e..de20ca1b7d 100644 --- a/basis/ui/theme/theme.factor +++ b/basis/ui/theme/theme.factor @@ -63,8 +63,12 @@ HOOK: title-color theme ( -- color ) HOOK: heading-color theme ( -- color ) HOOK: snippet-color theme ( -- color ) HOOK: output-color theme ( -- color ) +HOOK: deprecated-background-color theme ( -- color ) +HOOK: deprecated-border-color theme ( -- color ) HOOK: warning-background-color theme ( -- color ) +HOOK: warning-border-color theme ( -- color ) HOOK: code-background-color theme ( -- color ) +HOOK: help-path-border-color theme ( -- color ) HOOK: tip-background-color theme ( -- color ) @@ -86,7 +90,10 @@ HOOK: focus-border-color theme ( -- color ) HOOK: labeled-border-color theme ( -- color ) +HOOK: table-border-color theme ( -- color ) + SINGLETON: light-theme +theme [ light-theme ] initialize M: light-theme toolbar-background COLOR: grey95 ; M: light-theme toolbar-button-pressed-background COLOR: dark-gray ; @@ -141,22 +148,25 @@ M: light-theme content-background COLOR: white ; M: light-theme text-color COLOR: black ; M: light-theme link-color COLOR: DodgerBlue4 ; -M: light-theme url-color COLOR: DodgerBlue4 ; M: light-theme title-color COLOR: gray20 ; M: light-theme heading-color COLOR: FactorDarkSlateBlue ; -M: light-theme snippet-color COLOR: solarized-orange ; -M: light-theme output-color COLOR: solarized-orange ; -M: light-theme warning-background-color T{ rgba f 1 0.7 0.7 1 } ; +M: light-theme snippet-color COLOR: DarkOrange4 ; +M: light-theme output-color COLOR: DarkOrange4 ; +M: light-theme deprecated-background-color COLOR: gray90 ; +M: light-theme deprecated-border-color COLOR: red ; +M: light-theme warning-background-color COLOR: gray90 ; +M: light-theme warning-border-color COLOR: red ; M: light-theme code-background-color COLOR: FactorLightTan ; +M: light-theme help-path-border-color COLOR: FactorLightTan ; M: light-theme tip-background-color COLOR: lavender ; M: light-theme prompt-background-color T{ rgba f 1 0.7 0.7 1 } ; -M: light-theme dim-color COLOR: solarized-cyan ; -M: light-theme highlighted-word-color COLOR: solarized-green ; -M: light-theme string-color COLOR: solarized-magenta ; -M: light-theme stack-effect-color COLOR: solarized-orange ; +M: light-theme dim-color COLOR: gray35 ; +M: light-theme highlighted-word-color COLOR: DarkSlateGray ; +M: light-theme string-color COLOR: LightSalmon4 ; +M: light-theme stack-effect-color COLOR: FactorDarkGreen ; M: light-theme vocab-background-color COLOR: FactorLightTan ; M: light-theme vocab-border-color COLOR: FactorDarkTan ; @@ -169,6 +179,8 @@ M: light-theme focus-border-color COLOR: dark-gray ; M: light-theme labeled-border-color COLOR: grey85 ; +M: light-theme table-border-color COLOR: FactorTan ; + SINGLETON: dark-theme M: dark-theme toolbar-background COLOR: solarized-base02 ; @@ -224,13 +236,16 @@ M: dark-theme content-background COLOR: solarized-base03 ; M: dark-theme text-color COLOR: grey75 ; M: dark-theme link-color COLOR: solarized-blue ; -M: dark-theme url-color COLOR: solarized-blue ; M: dark-theme title-color COLOR: grey75 ; M: dark-theme heading-color COLOR: grey75 ; M: dark-theme snippet-color COLOR: solarized-orange ; M: dark-theme output-color COLOR: solarized-orange ; +M: dark-theme deprecated-background-color HEXCOLOR: 6E2E32 ; +M: dark-theme deprecated-border-color COLOR: red ; M: dark-theme warning-background-color HEXCOLOR: 6E2E32 ; +M: dark-theme warning-border-color COLOR: red ; M: dark-theme code-background-color HEXCOLOR: 2F4D5B ; +M: dark-theme help-path-border-color HEXCOLOR: 2F4D5B ; M: dark-theme tip-background-color HEXCOLOR: 2F4D5B ; @@ -252,4 +267,4 @@ M: dark-theme focus-border-color COLOR: solarized-base01 ; M: dark-theme labeled-border-color COLOR: solarized-base01 ; -light-theme theme set-global +M: dark-theme table-border-color COLOR: solarized-base01 ; diff --git a/basis/ui/tools/browser/browser.factor b/basis/ui/tools/browser/browser.factor index e4ad3dae48..c106a22b95 100644 --- a/basis/ui/tools/browser/browser.factor +++ b/basis/ui/tools/browser/browser.factor @@ -8,10 +8,10 @@ make models namespaces sequences sets ui ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.editors ui.gadgets.editors.private ui.gadgets.glass ui.gadgets.labels ui.gadgets.labels.private ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.status-bar -ui.theme ui.gadgets.toolbar ui.gadgets.tracks +ui.theme ui.gadgets.theme ui.gadgets.toolbar ui.gadgets.tracks ui.gadgets.viewports ui.gadgets.worlds ui.gestures ui.pens.solid -ui.render ui.text ui.tools.browser.history -ui.tools.browser.popups ui.tools.common vocabs ; +ui.render ui.text ui.tools.common ui.tools.browser.history +ui.tools.browser.popups vocabs ; IN: ui.tools.browser TUPLE: browser-gadget < tool history scroller search-field popup ; diff --git a/basis/ui/tools/browser/popups/popups.factor b/basis/ui/tools/browser/popups/popups.factor index d4f01fd795..d2bb6ef48c 100644 --- a/basis/ui/tools/browser/popups/popups.factor +++ b/basis/ui/tools/browser/popups/popups.factor @@ -5,7 +5,7 @@ definitions.icons fry help help.topics kernel math.rectangles models.arrow namespaces sequences tools.crossref ui.gadgets ui.gadgets.glass ui.gadgets.labeled ui.gadgets.search-tables ui.gadgets.tables ui.gadgets.theme ui.gadgets.wrappers ui.gestures ui.images -ui.operations ui.pens.solid ; +ui.operations ui.pens.solid ui.theme ; FROM: ui.gadgets.wrappers => wrapper ; IN: ui.tools.browser.popups diff --git a/basis/ui/tools/common/common.factor b/basis/ui/tools/common/common.factor index 287539c540..9c927a0a15 100644 --- a/basis/ui/tools/common/common.factor +++ b/basis/ui/tools/common/common.factor @@ -49,6 +49,3 @@ SLOT: scroller : white-interior ( track -- track ) content-background >>interior ; - -: theme-font-colors ( gadget -- gadget ) - [ content-background >>background text-color >>foreground ] change-font ; diff --git a/basis/ui/tools/debugger/debugger.factor b/basis/ui/tools/debugger/debugger.factor index 610aa10b6f..f1ec3fb2d7 100644 --- a/basis/ui/tools/debugger/debugger.factor +++ b/basis/ui/tools/debugger/debugger.factor @@ -7,7 +7,7 @@ ui.debugger ui.gestures ui.gadgets ui.pens.solid ui.gadgets.worlds ui.gadgets.packs ui.gadgets.buttons ui.gadgets.labels ui.gadgets.presentations ui.gadgets.panes ui.gadgets.viewports ui.gadgets.tables ui.theme -ui.gadgets.tracks ui.gadgets.toolbar +ui.gadgets.theme ui.gadgets.tracks ui.gadgets.toolbar ui.gadgets.scrollers ui.gadgets.borders ui.gadgets.status-bar ui.tools.traceback ui.tools.inspector ui.tools.browser ui.tools.common ; IN: ui.tools.debugger diff --git a/basis/ui/tools/inspector/inspector.factor b/basis/ui/tools/inspector/inspector.factor index 29b5dbce14..209e0624bf 100644 --- a/basis/ui/tools/inspector/inspector.factor +++ b/basis/ui/tools/inspector/inspector.factor @@ -1,13 +1,14 @@ ! Copyright (C) 2006, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors colors inspector namespaces kernel models fry -colors.constants models.arrow prettyprint sequences mirrors assocs -classes io io.styles arrays hashtables math.order sorting refs fonts -ui.tools.browser ui.commands ui.operations ui.gadgets ui.gadgets.panes -ui.gadgets.scrollers ui.gadgets.slots ui.gadgets.tracks ui.gestures -ui.gadgets.buttons ui.gadgets.tables ui.theme -ui.gadgets.toolbar ui.gadgets.status-bar -ui.gadgets.labeled ui.tools.common ui combinators ui.gadgets.worlds ; +colors.constants models.arrow prettyprint sequences mirrors +assocs classes io io.styles arrays hashtables math.order sorting +refs fonts ui.tools.browser ui.commands ui.operations ui.gadgets +ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.slots +ui.gadgets.theme ui.gadgets.tracks ui.gestures +ui.gadgets.buttons ui.gadgets.tables ui.theme ui.gadgets.toolbar +ui.gadgets.status-bar ui.gadgets.labeled ui.tools.common ui +combinators ui.gadgets.worlds ; IN: ui.tools.inspector TUPLE: inspector-gadget < tool table ; diff --git a/basis/ui/tools/listener/completion/completion.factor b/basis/ui/tools/listener/completion/completion.factor index 47437c6312..d5f4b32143 100644 --- a/basis/ui/tools/listener/completion/completion.factor +++ b/basis/ui/tools/listener/completion/completion.factor @@ -9,7 +9,7 @@ ui.gadgets ui.gadgets.editors ui.gadgets.glass ui.gadgets.labeled ui.gadgets.scrollers ui.gadgets.tables ui.gadgets.theme ui.gadgets.tracks ui.gadgets.worlds ui.gadgets.wrappers ui.gestures ui.images ui.operations -ui.pens.solid ui.tools.common ui.tools.listener.history +ui.pens.solid ui.theme ui.tools.common ui.tools.listener.history ui.tools.listener.popups vocabs words ; IN: ui.tools.listener.completion diff --git a/basis/ui/tools/listener/listener.factor b/basis/ui/tools/listener/listener.factor index 863e170384..36322b4fc6 100644 --- a/basis/ui/tools/listener/listener.factor +++ b/basis/ui/tools/listener/listener.factor @@ -10,6 +10,7 @@ prettyprint sequences source-files.errors strings system threads tools.errors.model ui ui.commands ui.gadgets ui.gadgets.editors ui.gadgets.glass ui.gadgets.labeled ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.status-bar ui.theme +ui.gadgets.theme ui.gadgets.toolbar ui.gadgets.tracks ui.gestures ui.operations ui.pens.solid ui.tools.browser ui.tools.common ui.tools.debugger ui.tools.error-list ui.tools.listener.completion diff --git a/basis/ui/tools/traceback/traceback.factor b/basis/ui/tools/traceback/traceback.factor index 9341d96ab4..d2a839ba73 100644 --- a/basis/ui/tools/traceback/traceback.factor +++ b/basis/ui/tools/traceback/traceback.factor @@ -5,7 +5,7 @@ kernel models models.arrow prettyprint sequences ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.buttons ui.gadgets.labeled ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.status-bar ui.gadgets.tables ui.gadgets.toolbar -ui.theme ui.gadgets.tracks +ui.theme ui.gadgets.theme ui.gadgets.tracks ui.gestures ui.tools.common ; QUALIFIED-WITH: ui.tools.inspector i IN: ui.tools.traceback diff --git a/basis/vocabs/prettyprint/prettyprint.factor b/basis/vocabs/prettyprint/prettyprint.factor index a8c2f80631..6d9ffd1a2a 100644 --- a/basis/vocabs/prettyprint/prettyprint.factor +++ b/basis/vocabs/prettyprint/prettyprint.factor @@ -1,9 +1,8 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays assocs colors fry io -io.styles kernel literals make math.order namespaces parser -prettyprint.backend prettyprint.sections prettyprint.stylesheet -sequences sets sorting ui.theme vocabs vocabs.parser ; +USING: accessors assocs colors.constants fry io io.styles kernel +make namespaces parser prettyprint.backend prettyprint.sections +prettyprint.stylesheet sequences sorting vocabs vocabs.parser ; FROM: io.styles => inset ; IN: vocabs.prettyprint @@ -83,6 +82,12 @@ PRIVATE> : pprint-manifest ( manifest -- ) (pprint-manifest pprint-manifest) ; +CONSTANT: manifest-style H{ + { page-color COLOR: FactorLightTan } + { border-color COLOR: FactorDarkTan } + { inset { 5 5 } } +} + [ nl { { font-style bold } { font-name "sans-serif" } } [ @@ -90,10 +95,6 @@ PRIVATE> "To avoid doing this in the future, add the following forms" print "at the top of the source file:" print nl ] with-style - { - { page-color $ vocab-background-color } - { border-color $ vocab-border-color } - { inset { 5 5 } } - } [ manifest get pprint-manifest ] with-nesting + manifest-style [ manifest get pprint-manifest ] with-nesting nl nl ] print-use-hook set-global -- 2.34.1