aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/c_defs.go66
-rw-r--r--src/c_hardflip.go15
-rw-r--r--src/c_init.go16
-rw-r--r--src/i_ui.go129
4 files changed, 179 insertions, 47 deletions
diff --git a/src/c_defs.go b/src/c_defs.go
index a21fca8..9d542fa 100644
--- a/src/c_defs.go
+++ b/src/c_defs.go
@@ -110,7 +110,7 @@ const (
BOT_STYLE
YANK_STYLE
MOVE_STYLE
- MAX_STYLE = MOVE_STYLE
+ STYLE_MAX = MOVE_STYLE
)
const (
@@ -184,8 +184,7 @@ const (
INSERT_EDIT
)
-var (
- INSERT_HINTS = [INS_MAX]string{
+var INSERT_HINTS = [INS_MAX]string{
"Select the protocol used to connect to your host",
"IP or domain name of your host",
"Port used for SSH (default: 22)",
@@ -195,12 +194,10 @@ var (
"Optional shell command line that will be run on your host",
"IP or domain name of your jump host",
"Port used for your jump SSH host (default: 22)",
- // TODO: fuck this anyway
+ // NOTE: fuck this anyway
}
-)
-var (
- HELP_NORMAL_KEYS = [][2]string{
+var HELP_NORMAL_KEYS = [][2]string{
{"<down> | j", "Go to next item"},
{"<up> | k", "Go to previous item"},
{"<pgdown> | <c-d>", "Jump down"},
@@ -224,8 +221,7 @@ var (
{"<c-r>", "Reload data and configuration"},
{"?", "Display this help menu"},
{"<c-c> | q", "Quit"},
- }
-)
+}
var (
HOST_ICONS = [4]string{" ", " ", " ", " "}
@@ -258,3 +254,55 @@ var DEFAULT_OPTS = HardOpts{
"",
}
+var DEFAULT_STYLE = HardStyle{
+ DefColor: COLORS[COLOR_DEFAULT],
+ DirColor: COLORS[COLOR_BOLD_BLUE],
+ BoxColor: COLORS[COLOR_DEFAULT],
+ HeadColor: COLORS[COLOR_DEFAULT],
+ ErrColor: COLORS[COLOR_RED],
+ TitleColor: COLORS[COLOR_BOLD_BLUE],
+ BotColor: COLORS[COLOR_BLUE],
+ YankColor: COLORS[COLOR_BOLD_YELLOW],
+ MoveColor: COLORS[COLOR_BOLD_RED],
+}
+
+const (
+ COLOR_DEFAULT = iota
+ COLOR_BLACK
+ COLOR_RED
+ COLOR_GREEN
+ COLOR_YELLOW
+ COLOR_BLUE
+ COLOR_MAGENTA
+ COLOR_CYAN
+ COLOR_WHITE
+ COLOR_BOLD_BLACK
+ COLOR_BOLD_RED
+ COLOR_BOLD_GREEN
+ COLOR_BOLD_YELLOW
+ COLOR_BOLD_BLUE
+ COLOR_BOLD_MAGENTA
+ COLOR_BOLD_CYAN
+ COLOR_BOLD_WHITE
+ COLORS_MAX = COLOR_BOLD_WHITE
+)
+
+var COLORS = [COLORS_MAX + 1]string{
+ "default",
+ "black",
+ "red",
+ "green",
+ "yellow",
+ "blue",
+ "magenta",
+ "cyan",
+ "white",
+ "boldblack",
+ "boldred",
+ "boldgreen",
+ "boldyellow",
+ "boldblue",
+ "boldmagenta",
+ "boldcyan",
+ "boldwhite",
+}
diff --git a/src/c_hardflip.go b/src/c_hardflip.go
index 9b1b5c0..4d22149 100644
--- a/src/c_hardflip.go
+++ b/src/c_hardflip.go
@@ -56,17 +56,18 @@ import "os"
// the main data structure, holds up everything important
type HardData struct {
- litems *ItemsList
- ldirs *DirsList
- ui HardUI
- opts HardOpts
- folds map[*DirsNode]*ItemsList
+ litems *ItemsList
+ ldirs *DirsList
+ ui HardUI
+ opts HardOpts
+ colors HardStyle
+ folds map[*DirsNode]*ItemsList
data_dir string
home_dir string
load_err []error
insert_err []error
- keys [][2]string
- insert *HostNode
+ keys [][2]string
+ insert *HostNode
yank *ItemsNode
}
diff --git a/src/c_init.go b/src/c_init.go
index 3faca8e..0bc37be 100644
--- a/src/c_init.go
+++ b/src/c_init.go
@@ -68,6 +68,18 @@ type HardOpts struct {
file string
}
+type HardStyle struct {
+ DefColor string `yaml:"default"`
+ DirColor string `yaml:"dir_color"`
+ BoxColor string `yaml:"box_color"`
+ HeadColor string `yaml:"head_color"`
+ ErrColor string `yaml:"error_color"`
+ TitleColor string `yaml:"title_color"`
+ BotColor string `yaml:"bottom_color"`
+ YankColor string `yaml:"yank_color"`
+ MoveColor string `yaml:"move_color"`
+}
+
// this function recurses into the specified root directory in order to load
// every yaml file into memory
func c_recurse_data_dir(dir, root string, opts HardOpts,
@@ -171,3 +183,7 @@ func c_get_options(dir string, load_err *[]error) HardOpts {
return opts
}
+func c_get_styles(dir string, load_err *[]error) HardStyle {
+ // TODO: here
+ return DEFAULT_STYLE
+}
diff --git a/src/i_ui.go b/src/i_ui.go
index a27c602..f34d9ad 100644
--- a/src/i_ui.go
+++ b/src/i_ui.go
@@ -68,7 +68,7 @@ type Buffer struct {
type HardUI struct {
s tcell.Screen
mode uint8
- style [MAX_STYLE + 1]tcell.Style
+ style [STYLE_MAX + 1]tcell.Style
dim [2]int
err [2]string
buff Buffer
@@ -691,34 +691,99 @@ func i_load_ui(data_dir string,
return ldirs, litems, *load_err
}
-func i_init_styles(ui *HardUI) {
- ui.style[DEF_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorReset)
- ui.style[DIR_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorBlue).Dim(true).Bold(true)
- ui.style[BOX_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorReset)
- ui.style[HEAD_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorReset)
- ui.style[ERR_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorRed).Dim(true)
- ui.style[TITLE_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorBlue).Dim(true).Bold(true)
- ui.style[BOT_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorBlue).Dim(true)
- ui.style[YANK_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorYellow).Dim(true).Bold(true)
- ui.style[MOVE_STYLE] = tcell.StyleDefault.
- Background(tcell.ColorReset).
- Foreground(tcell.ColorRed).Dim(true).Bold(true)
+func i_init_styles(ui *HardUI, styles HardStyle) {
+ for i := 0; i < STYLE_MAX + 1; i++ {
+ tmp := tcell.StyleDefault.Background(tcell.ColorReset)
+ curr_color := "default"
+ switch i {
+ case DEF_STYLE:
+ curr_color = styles.DefColor
+ case DIR_STYLE:
+ curr_color = styles.DirColor
+ case BOX_STYLE:
+ curr_color = styles.BoxColor
+ case HEAD_STYLE:
+ curr_color = styles.HeadColor
+ case ERR_STYLE:
+ curr_color = styles.ErrColor
+ case TITLE_STYLE:
+ curr_color = styles.TitleColor
+ case BOT_STYLE:
+ curr_color = styles.BotColor
+ case YANK_STYLE:
+ curr_color = styles.YankColor
+ case MOVE_STYLE:
+ curr_color = styles.MoveColor
+ default:
+ curr_color = "default"
+ }
+ switch curr_color {
+ case COLORS[COLOR_DEFAULT]:
+ ui.style[i] = tmp.Foreground(tcell.ColorReset)
+ case COLORS[COLOR_BLACK]:
+ ui.style[i] = tmp.Foreground(tcell.ColorBlack).Dim(true)
+ case COLORS[COLOR_RED]:
+ ui.style[i] = tmp.Foreground(tcell.ColorRed).Dim(true)
+ case COLORS[COLOR_GREEN]:
+ ui.style[i] = tmp.Foreground(tcell.ColorGreen)
+ case COLORS[COLOR_YELLOW]:
+ ui.style[i] = tmp.Foreground(tcell.ColorYellow).Dim(true)
+ case COLORS[COLOR_BLUE]:
+ ui.style[i] = tmp.Foreground(tcell.ColorBlue).Dim(true)
+ case COLORS[COLOR_MAGENTA]:
+ ui.style[i] = tmp.Foreground(tcell.ColorPurple).Dim(true)
+ case COLORS[COLOR_CYAN]:
+ ui.style[i] = tmp.Foreground(tcell.ColorTeal)
+ case COLORS[COLOR_WHITE]:
+ ui.style[i] = tmp.Foreground(tcell.ColorWhite).Dim(true)
+ case COLORS[COLOR_BOLD_BLACK]:
+ ui.style[i] = tmp.Foreground(tcell.ColorBlack).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_RED]:
+ ui.style[i] = tmp.Foreground(tcell.ColorRed).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_GREEN]:
+ ui.style[i] = tmp.Foreground(tcell.ColorGreen).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_YELLOW]:
+ ui.style[i] = tmp.Foreground(tcell.ColorYellow).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_BLUE]:
+ ui.style[i] = tmp.Foreground(tcell.ColorBlue).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_MAGENTA]:
+ ui.style[i] = tmp.Foreground(tcell.ColorPurple).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_CYAN]:
+ ui.style[i] = tmp.Foreground(tcell.ColorTeal).Dim(true).Bold(true)
+ case COLORS[COLOR_BOLD_WHITE]:
+ ui.style[i] = tmp.Foreground(tcell.ColorWhite).Dim(true).Bold(true)
+ default:
+ ui.style[i] = tmp.Foreground(tcell.ColorReset)
+ }
+ }
+
+ // ui.style[DEF_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorReset)
+ // ui.style[DIR_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorBlue).Dim(true).Bold(true)
+ // ui.style[BOX_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorReset)
+ // ui.style[HEAD_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorReset)
+ // ui.style[ERR_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorRed).Dim(true)
+ // ui.style[TITLE_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorBlue).Dim(true).Bold(true)
+ // ui.style[BOT_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorBlue).Dim(true)
+ // ui.style[YANK_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorYellow).Dim(true).Bold(true)
+ // ui.style[MOVE_STYLE] = tcell.StyleDefault.
+ // Background(tcell.ColorReset).
+ // Foreground(tcell.ColorRed).Dim(true).Bold(true)
}
type key_event_mode_func func(*HardData, *HardUI, tcell.EventKey) bool
@@ -736,8 +801,6 @@ func i_ui(data_dir string) {
if err := ui.s.Init(); err != nil {
c_die("view", err)
}
- i_init_styles(&ui)
- ui.s.SetStyle(ui.style[DEF_STYLE])
ui.dim[W], ui.dim[H], _ = term.GetSize(0)
var load_err []error
conf_dir := c_get_conf_dir(&load_err)
@@ -746,12 +809,16 @@ func i_ui(data_dir string) {
} else {
opts = c_get_options(conf_dir, &load_err)
}
+ styles := c_get_styles(conf_dir, &load_err)
+ i_init_styles(&ui, styles)
+ ui.s.SetStyle(ui.style[DEF_STYLE])
ldirs, litems, load_err := i_load_ui(data_dir, opts, &ui, &load_err)
data := HardData{
litems,
ldirs,
ui,
opts,
+ styles,
make(map[*DirsNode]*ItemsList),
data_dir,
home_dir,