func getLastString(k wini.Key) (string, bool) { vals := k.Strings() if len(vals) == 0 { logger.Warning.Println(k.Err("No values found.")) return "", false } return vals[len(vals)-1], true }
func loadSlimOption(theme *ThemeConfig, k wini.Key) { switch k.Name() { case "border_size": setInt(k, &theme.Slim.borderSize) case "a_border_color": setNoGradient(k, &theme.Slim.aBorderColor) case "i_border_color": setNoGradient(k, &theme.Slim.iBorderColor) } }
func getLastFloat(k wini.Key) (float64, bool) { vals, err := k.Floats() if err != nil { logger.Warning.Println(err) return 0.0, false } else if len(vals) == 0 { logger.Warning.Println(k.Err("No values found.")) return 0.0, false } return vals[len(vals)-1], true }
func getLastBool(k wini.Key) (bool, bool) { vals, err := k.Bools() if err != nil { logger.Warning.Println(err) return false, false } else if len(vals) == 0 { logger.Warning.Println(k.Err("No values found.")) return false, false } return vals[len(vals)-1], true }
func loadBorderOption(theme *ThemeConfig, k wini.Key) { switch k.Name() { case "border_size": setInt(k, &theme.Borders.borderSize) case "a_thin_color": setNoGradient(k, &theme.Borders.aThinColor) case "i_thin_color": setNoGradient(k, &theme.Borders.iThinColor) case "a_border_color": setGradient(k, &theme.Borders.aBorderColor) case "i_border_color": setGradient(k, &theme.Borders.iBorderColor) } }
func loadFullOption(theme *ThemeConfig, k wini.Key) { switch k.Name() { case "font": setFont(k, &theme.Full.font) case "font_size": setFloat(k, &theme.Full.fontSize) case "a_font_color": setNoGradient(k, &theme.Full.aFontColor) case "i_font_color": setNoGradient(k, &theme.Full.iFontColor) case "title_size": setInt(k, &theme.Full.titleSize) case "title_top_margin": logger.Warning.Printf("title_top_margin option has been removed.") case "a_title_color": setGradient(k, &theme.Full.aTitleColor) case "i_title_color": setGradient(k, &theme.Full.iTitleColor) case "close": setImage(k, &theme.Full.aCloseButton) setImage(k, &theme.Full.iCloseButton) case "a_close_color": setNoGradient(k, &theme.Full.aCloseColor) case "i_close_color": setNoGradient(k, &theme.Full.iCloseColor) case "maximize": setImage(k, &theme.Full.aMaximizeButton) setImage(k, &theme.Full.iMaximizeButton) case "a_maximize_color": setNoGradient(k, &theme.Full.aMaximizeColor) case "i_maximize_color": setNoGradient(k, &theme.Full.iMaximizeColor) case "minimize": setImage(k, &theme.Full.aMinimizeButton) setImage(k, &theme.Full.iMinimizeButton) case "a_minimize_color": setNoGradient(k, &theme.Full.aMinimizeColor) case "i_minimize_color": setNoGradient(k, &theme.Full.iMinimizeColor) case "border_size": setInt(k, &theme.Full.borderSize) case "a_border_color": setNoGradient(k, &theme.Full.aBorderColor) case "i_border_color": setNoGradient(k, &theme.Full.iBorderColor) } }
func setGradient(k wini.Key, clr *render.Color) { // Check to make sure we have a value for this key vals := k.Strings() if len(vals) == 0 { logger.Warning.Println(k.Err("No values found.")) return } // Use the last value val := vals[len(vals)-1] // If there are no spaces, it can't be a gradient. if strings.Index(val, " ") == -1 { if start, ok := getLastInt(k); ok { clr.ColorSet(start) } return } // Okay, now we have to do things manually. // Split up the value into two pieces separated by whitespace and parse // each piece as an int. splitted := strings.Split(val, " ") if len(splitted) != 2 { logger.Warning.Println(k.Err("Expected a gradient value (two colors "+ "separated by a space), but found '%s' "+ "instead.", val)) return } start, err := strconv.ParseInt(strings.TrimSpace(splitted[0]), 0, 0) if err != nil { logger.Warning.Println(k.Err("'%s' is not an integer. (%s)", splitted[0], err)) return } end, err := strconv.ParseInt(strings.TrimSpace(splitted[1]), 0, 0) if err != nil { logger.Warning.Println(k.Err("'%s' is not an integer. (%s)", splitted[1], err)) return } // finally... clr.GradientSet(int(start), int(end)) }
func loadPromptOption(theme *ThemeConfig, k wini.Key) { switch k.Name() { case "bg_color": setNoGradient(k, &theme.Prompt.bgColor) case "border_color": setNoGradient(k, &theme.Prompt.borderColor) case "border_size": setInt(k, &theme.Prompt.borderSize) case "padding": setInt(k, &theme.Prompt.padding) case "font": setFont(k, &theme.Prompt.font) case "font_size": setFloat(k, &theme.Prompt.fontSize) case "font_color": setNoGradient(k, &theme.Prompt.fontColor) case "cycle_icon_size": setInt(k, &theme.Prompt.cycleIconSize) case "cycle_icon_border_size": setInt(k, &theme.Prompt.cycleIconBorderSize) case "cycle_icon_transparency": setInt(k, &theme.Prompt.cycleIconTransparency) // naughty! if theme.Prompt.cycleIconTransparency < 0 || theme.Prompt.cycleIconTransparency > 100 { logger.Warning.Printf("Illegal value '%s' provided for " + "'cycle_icon_transparency'. Transparency " + "values must be in the range [0, 100], " + "inclusive. Using 100 by default.") theme.Prompt.cycleIconTransparency = 100 } case "select_active_font_color": setNoGradient(k, &theme.Prompt.selectActiveFontColor) case "select_active_bg_color": setNoGradient(k, &theme.Prompt.selectActiveBgColor) case "select_group_bg_color": setNoGradient(k, &theme.Prompt.selectGroupBgColor) case "select_group_font": setFont(k, &theme.Prompt.selectGroupFont) case "select_group_font_size": setFloat(k, &theme.Prompt.selectGroupFontSize) case "select_group_font_color": setNoGradient(k, &theme.Prompt.selectGroupFontColor) } }
func setNoGradient(k wini.Key, clr *render.Color) { // Check to make sure we have a value for this key vals := k.Strings() if len(vals) == 0 { logger.Warning.Println(k.Err("No values found.")) return } // Use the last value val := vals[len(vals)-1] // If there are no spaces, it can't be a gradient. if strings.Index(val, " ") == -1 { if start, ok := getLastInt(k); ok { clr.ColorSet(start) } return } logger.Warning.Println( k.Err("Gradients are not supported for this theme option.")) }
func loadMiscOption(theme *ThemeConfig, k wini.Key) { switch k.Name() { case "default_icon": setImage(k, &theme.DefaultIcon) } }