diff --git a/gui/griffon-app/lifecycle/Initialize.groovy b/gui/griffon-app/lifecycle/Initialize.groovy index 47c0f064..f8a537bc 100644 --- a/gui/griffon-app/lifecycle/Initialize.groovy +++ b/gui/griffon-app/lifecycle/Initialize.groovy @@ -6,10 +6,12 @@ import org.codehaus.griffon.runtime.core.AbstractLifecycleHandler import com.muwire.core.Core import com.muwire.core.MuWireSettings +import com.muwire.gui.UISettings import javax.annotation.Nonnull import javax.inject.Inject import javax.swing.JTable +import javax.swing.LookAndFeel import static griffon.util.GriffonApplicationUtils.isMacOSX import static groovy.swing.SwingBuilder.lookAndFeel @@ -38,19 +40,29 @@ class Initialize extends AbstractLifecycleHandler { application.context.put("muwire-home", home.getAbsolutePath()) def guiPropsFile = new File(home, "gui.properties") + UISettings uiSettings if (guiPropsFile.exists()) { Properties props = new Properties() guiPropsFile.withInputStream { props.load(it) } - log.info("settting user-specified lnf ${props['lnf']}") - lookAndFeel(props["lnf"]) + uiSettings = new UISettings(props) + + log.info("settting user-specified lnf $uiSettings.lnf") + lookAndFeel(uiSettings.lnf) } else { + Properties props = new Properties() + uiSettings = new UISettings(props) log.info "will try default lnfs" if (isMacOSX()) { + uiSettings.lnf = "nimbus" lookAndFeel('nimbus') // otherwise the file chooser doesn't open??? } else { - lookAndFeel('system', 'gtk') + LookAndFeel chosen = lookAndFeel('system', 'gtk') + uiSettings.lnf = chosen.name + log.info("ended up applying $chosen.name") } } + + application.context.put("ui-settings", uiSettings) } private static String selectHome() { diff --git a/gui/src/main/groovy/com/muwire/gui/UISettings.groovy b/gui/src/main/groovy/com/muwire/gui/UISettings.groovy new file mode 100644 index 00000000..514ba193 --- /dev/null +++ b/gui/src/main/groovy/com/muwire/gui/UISettings.groovy @@ -0,0 +1,23 @@ +package com.muwire.gui + +class UISettings { + + String lnf + boolean showMonitor + String font + + UISettings(Properties props) { + lnf = props.getProperty("lnf", "system") + showMonitor = Boolean.parseBoolean(props.getProperty("showMonitor", "true")) + font = props.getProperty("font",null) + } + + void write(OutputStream out) throws IOException { + Properties props = new Properties() + props.setProperty("lnf", lnf) + props.setProperty("showMonitor", showMonitor) + if (font != null) + props.setProperty("font", font) + props.store(out, "UI Properties") + } +}