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
}
Beispiel #2
0
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
}
Beispiel #5
0
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 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))
}
Beispiel #7
0
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)
	}
}
Beispiel #8
0
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."))
}
Beispiel #10
0
func loadMiscOption(theme *ThemeConfig, k wini.Key) {
	switch k.Name() {
	case "default_icon":
		setImage(k, &theme.DefaultIcon)
	}
}