mirror of
https://github.com/mt-mods/mail.git
synced 2025-04-30 16:31:43 -04:00
Add colors utilities
Local function get_base_color(), conversions hex <=> rgb, rgb color mixer, and global function get_color()
This commit is contained in:
parent
2111db2ff9
commit
0b3497eb2f
15 changed files with 80 additions and 39 deletions
15
init.lua
15
init.lua
|
@ -35,19 +35,6 @@ mail = {
|
||||||
settings_group = {},
|
settings_group = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
colors = {
|
|
||||||
header = "#999",
|
|
||||||
selected = "#72FF63",
|
|
||||||
important = "#FFD700",
|
|
||||||
additional = "#CCCCDD",
|
|
||||||
imp_sel = "#B9EB32",
|
|
||||||
add_sel = "#9FE6A0",
|
|
||||||
imp_add = "#E6D26F",
|
|
||||||
imp_add_sel = "#BFE16B",
|
|
||||||
highlighted = "#608631",
|
|
||||||
new = "#00F529"
|
|
||||||
},
|
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
chat_notifications = {
|
chat_notifications = {
|
||||||
type = "bool", default = true, group = "notifications", index = 1,
|
type = "bool", default = true, group = "notifications", index = 1,
|
||||||
|
@ -113,6 +100,7 @@ end
|
||||||
|
|
||||||
-- sub files
|
-- sub files
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
dofile(MP .. "/util/init.lua")
|
||||||
dofile(MP .. "/chatcommands.lua")
|
dofile(MP .. "/chatcommands.lua")
|
||||||
dofile(MP .. "/migrate.lua")
|
dofile(MP .. "/migrate.lua")
|
||||||
dofile(MP .. "/hud.lua")
|
dofile(MP .. "/hud.lua")
|
||||||
|
@ -122,7 +110,6 @@ dofile(MP .. "/gui.lua")
|
||||||
dofile(MP .. "/onjoin.lua")
|
dofile(MP .. "/onjoin.lua")
|
||||||
-- sub directories
|
-- sub directories
|
||||||
dofile(MP .. "/ui/init.lua")
|
dofile(MP .. "/ui/init.lua")
|
||||||
dofile(MP .. "/util/init.lua")
|
|
||||||
|
|
||||||
-- migrate storage
|
-- migrate storage
|
||||||
mail.migrate()
|
mail.migrate()
|
||||||
|
|
|
@ -17,7 +17,7 @@ minetest.register_on_joinplayer(function(player)
|
||||||
|
|
||||||
if unreadcount > 0 and mail.get_setting(name, "onjoin_notifications") then
|
if unreadcount > 0 and mail.get_setting(name, "onjoin_notifications") then
|
||||||
minetest.chat_send_player(name,
|
minetest.chat_send_player(name,
|
||||||
minetest.colorize(mail.colors.new, "(" .. unreadcount .. ") " .. S("You have mail! Type /mail to read")))
|
minetest.colorize(mail.get_color("n"), "(" .. unreadcount .. ") " .. S("You have mail! Type /mail to read")))
|
||||||
end
|
end
|
||||||
end, player:get_player_name())
|
end, player:get_player_name())
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -21,8 +21,8 @@ function mail.show_about(name)
|
||||||
|
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[5,0.75;4.9,5.5;contributors;]] ..
|
table[5,0.75;4.9,5.5;contributors;]] ..
|
||||||
mail.colors.header .. [[,]] .. S("Contributors") .. [[,,]] ..
|
mail.get_color("h") .. [[,]] .. S("Contributors") .. [[,,]] ..
|
||||||
mail.colors.important .. [[,Cheapie,Initial idea/project,]] ..
|
mail.get_color("i") .. [[,Cheapie,Initial idea/project,]] ..
|
||||||
[[,Rubenwardy,Lua/UI improvements,]] ..
|
[[,Rubenwardy,Lua/UI improvements,]] ..
|
||||||
[[,BuckarooBanzay,Clean-ups\, Refactoring,]] ..
|
[[,BuckarooBanzay,Clean-ups\, Refactoring,]] ..
|
||||||
[[,Athozus,Boxes\, Maillists\, UI\, Settings,]] ..
|
[[,Athozus,Boxes\, Maillists\, UI\, Settings,]] ..
|
||||||
|
|
|
@ -9,7 +9,7 @@ local contacts_formspec = "size[8,9;]" .. mail.theme .. [[
|
||||||
button[6,1.60;2,0.5;delete;]] .. S("Delete") .. [[]
|
button[6,1.60;2,0.5;delete;]] .. S("Delete") .. [[]
|
||||||
button[6,8.25;2,0.5;back;]] .. S("Back") .. [[]
|
button[6,8.25;2,0.5;back;]] .. S("Back") .. [[]
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0;5.75,9;contacts;]] .. mail.colors.header .. "," .. S("Name") .. "," .. S("Note")
|
table[0,0;5.75,9;contacts;]] .. mail.get_color("h") .. "," .. S("Name") .. "," .. S("Note")
|
||||||
|
|
||||||
|
|
||||||
function mail.show_contacts(name)
|
function mail.show_contacts(name)
|
||||||
|
|
|
@ -21,7 +21,7 @@ function mail.show_drafts(name)
|
||||||
button_exit[6,9.5;2.5,0.5;quit;]] .. S("Close") .. [[]
|
button_exit[6,9.5;2.5,0.5;quit;]] .. S("Close") .. [[]
|
||||||
|
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0.7;5.75,9.35;drafts;]] .. mail.colors.header .. "," .. S("To") .. "," .. S("Subject")
|
table[0,0.7;5.75,9.35;drafts;]] .. mail.get_color("h") .. "," .. S("To") .. "," .. S("Subject")
|
||||||
|
|
||||||
local formspec = { drafts_formspec }
|
local formspec = { drafts_formspec }
|
||||||
local entry = mail.get_storage_entry(name)
|
local entry = mail.get_storage_entry(name)
|
||||||
|
|
16
ui/inbox.lua
16
ui/inbox.lua
|
@ -67,7 +67,7 @@ function mail.show_inbox(name, sortfieldindex, sortdirection, filter)
|
||||||
button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[]
|
button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[]
|
||||||
|
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0.7;5.75,7.45;inbox;]] .. mail.colors.header .. "," .. S("From") .. "," .. S("Subject")
|
table[0,0.7;5.75,7.45;inbox;]] .. mail.get_color("h") .. "," .. S("From") .. "," .. S("Subject")
|
||||||
local formspec = { inbox_formspec }
|
local formspec = { inbox_formspec }
|
||||||
|
|
||||||
mail.message_drafts[name] = nil
|
mail.message_drafts[name] = nil
|
||||||
|
@ -90,27 +90,27 @@ function mail.show_inbox(name, sortfieldindex, sortdirection, filter)
|
||||||
if selected_id > 0 then
|
if selected_id > 0 then
|
||||||
if not message.read and unread_color_enable then
|
if not message.read and unread_color_enable then
|
||||||
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.imp_add_sel
|
formspec[#formspec + 1] = "," .. mail.get_color("ias")
|
||||||
else
|
else
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.imp_sel
|
formspec[#formspec + 1] = "," .. mail.get_color("is")
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.add_sel
|
formspec[#formspec + 1] = "," .. mail.get_color("as")
|
||||||
else
|
else
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.selected
|
formspec[#formspec + 1] = "," .. mail.get_color("s")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not message.read and unread_color_enable then
|
if not message.read and unread_color_enable then
|
||||||
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.imp_add
|
formspec[#formspec + 1] = "," .. mail.get_color("ia")
|
||||||
else
|
else
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.important
|
formspec[#formspec + 1] = "," .. mail.get_color("i")
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
if not mail.player_in_list(name, message.to) and cc_color_enable then
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.additional
|
formspec[#formspec + 1] = "," .. mail.get_color("a")
|
||||||
else
|
else
|
||||||
formspec[#formspec + 1] = ","
|
formspec[#formspec + 1] = ","
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,7 +9,7 @@ local maillists_formspec = "size[8,9;]" .. mail.theme .. [[
|
||||||
button[6,1.60;2,0.5;delete;]] .. S("Delete") .. [[]
|
button[6,1.60;2,0.5;delete;]] .. S("Delete") .. [[]
|
||||||
button[6,8.25;2,0.5;back;]] .. S("Back") .. [[]
|
button[6,8.25;2,0.5;back;]] .. S("Back") .. [[]
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0;5.75,9;maillists;]] .. mail.colors.header .. "," .. S("Name") .. "," .. S("Note")
|
table[0,0;5.75,9;maillists;]] .. mail.get_color("h") .. "," .. S("Name") .. "," .. S("Note")
|
||||||
|
|
||||||
function mail.show_maillists(name)
|
function mail.show_maillists(name)
|
||||||
local formspec = { maillists_formspec }
|
local formspec = { maillists_formspec }
|
||||||
|
|
|
@ -15,7 +15,7 @@ function mail.show_message(name, id)
|
||||||
local formspec = [[
|
local formspec = [[
|
||||||
size[8,9]
|
size[8,9]
|
||||||
|
|
||||||
box[0,0;7,1.9;]] .. mail.colors.highlighted .. [[]
|
box[0,0;7,1.9;]] .. mail.get_color("H") .. [[]
|
||||||
|
|
||||||
button[7.25,0.15;0.75,0.5;back;X]
|
button[7.25,0.15;0.75,0.5;back;X]
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ function mail.show_outbox(name, sortfieldindex, sortdirection, filter)
|
||||||
button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[]
|
button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[]
|
||||||
|
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0.7;5.75,7.45;outbox;]] .. mail.colors.header .. "," .. S("To") .. "," .. S("Subject")
|
table[0,0.7;5.75,7.45;outbox;]] .. mail.get_color("h") .. "," .. S("To") .. "," .. S("Subject")
|
||||||
local formspec = { outbox_formspec }
|
local formspec = { outbox_formspec }
|
||||||
|
|
||||||
mail.message_drafts[name] = nil
|
mail.message_drafts[name] = nil
|
||||||
|
@ -83,7 +83,7 @@ function mail.show_outbox(name, sortfieldindex, sortdirection, filter)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if selected_id > 0 then
|
if selected_id > 0 then
|
||||||
formspec[#formspec + 1] = "," .. mail.colors.selected
|
formspec[#formspec + 1] = "," .. mail.get_color("s")
|
||||||
else
|
else
|
||||||
formspec[#formspec + 1] = ","
|
formspec[#formspec + 1] = ","
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,7 +9,7 @@ function mail.show_receivers(name, id)
|
||||||
local formspec = [[
|
local formspec = [[
|
||||||
size[8,6]
|
size[8,6]
|
||||||
|
|
||||||
box[0,0;7,1.1;]] .. mail.colors.highlighted .. [[]
|
box[0,0;7,1.1;]] .. mail.get_color("H") .. [[]
|
||||||
|
|
||||||
button[7.25,0.15;0.75,0.5;back;X]
|
button[7.25,0.15;0.75,0.5;back;X]
|
||||||
|
|
||||||
|
@ -25,10 +25,10 @@ function mail.show_receivers(name, id)
|
||||||
|
|
||||||
local from = minetest.formspec_escape(message.from) or ""
|
local from = minetest.formspec_escape(message.from) or ""
|
||||||
local to = mail.parse_player_list(message.to or "")
|
local to = mail.parse_player_list(message.to or "")
|
||||||
local to_str = mail.colors.header .. "," .. S("To") .. ",,"
|
local to_str = mail.get_color("h") .. "," .. S("To") .. ",,"
|
||||||
to_str = to_str .. table.concat(to, ",,")
|
to_str = to_str .. table.concat(to, ",,")
|
||||||
local cc = mail.parse_player_list(message.cc or "")
|
local cc = mail.parse_player_list(message.cc or "")
|
||||||
local cc_str = mail.colors.header .. "," .. S("CC") .. ",,"
|
local cc_str = mail.get_color("h") .. "," .. S("CC") .. ",,"
|
||||||
cc_str = cc_str .. table.concat(cc, ",,")
|
cc_str = cc_str .. table.concat(cc, ",,")
|
||||||
local date = type(message.time) == "number"
|
local date = type(message.time) == "number"
|
||||||
and minetest.formspec_escape(os.date(mail.get_setting(name, "date_format"), message.time)) or ""
|
and minetest.formspec_escape(os.date(mail.get_setting(name, "date_format"), message.time)) or ""
|
||||||
|
|
|
@ -5,15 +5,15 @@ local FORMNAME = "mail:selectcontact"
|
||||||
|
|
||||||
local select_contact_formspec = "size[8,9;]" .. mail.theme .. [[
|
local select_contact_formspec = "size[8,9;]" .. mail.theme .. [[
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0;3.5,9;contacts;]] .. mail.colors.header .. "," .. S("Name") .. "," .. S("Note") .. [[%s]
|
table[0,0;3.5,9;contacts;]] .. mail.get_color("h") .. "," .. S("Name") .. "," .. S("Note") .. [[%s]
|
||||||
button[3.55,2.00;1.75,0.5;toadd;→ ]] .. S("Add") .. [[]
|
button[3.55,2.00;1.75,0.5;toadd;→ ]] .. S("Add") .. [[]
|
||||||
button[3.55,2.75;1.75,0.5;toremove;← ]] .. S("Remove") .. [[]
|
button[3.55,2.75;1.75,0.5;toremove;← ]] .. S("Remove") .. [[]
|
||||||
button[3.55,6.00;1.75,0.5;ccadd;→ ]] .. S("Add") .. [[]
|
button[3.55,6.00;1.75,0.5;ccadd;→ ]] .. S("Add") .. [[]
|
||||||
button[3.55,6.75;1.75,0.5;ccremove;← ]] .. S("Remove") .. [[]
|
button[3.55,6.75;1.75,0.5;ccremove;← ]] .. S("Remove") .. [[]
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[5.15,0.0;2.75,4.5;to;]] .. mail.colors.header .. "," .. S("To") .. ":," .. S("Note") .. [[%s]
|
table[5.15,0.0;2.75,4.5;to;]] .. mail.get_color("h") .. "," .. S("To") .. ":," .. S("Note") .. [[%s]
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[5.15,4.6;2.75,4.5;cc;]] .. mail.colors.header .. "," .. S("CC") .. ":," .. S("Note") .. [[%s]
|
table[5.15,4.6;2.75,4.5;cc;]] .. mail.get_color("h") .. "," .. S("CC") .. ":," .. S("Note") .. [[%s]
|
||||||
button[3.55,8.25;1.75,0.5;back;]] .. S("Back") .. [[]
|
button[3.55,8.25;1.75,0.5;back;]] .. S("Back") .. [[]
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ function mail.show_settings(name)
|
||||||
tablecolumns[text]
|
tablecolumns[text]
|
||||||
table[0,0.775;3,4.5;groups;]] .. groups_str .. [[;]] .. group_index .. [[]
|
table[0,0.775;3,4.5;groups;]] .. groups_str .. [[;]] .. group_index .. [[]
|
||||||
|
|
||||||
box[3.5,0.8;3,0.45;]] .. mail.colors.highlighted .. [[]
|
box[3.5,0.8;3,0.45;]] .. mail.get_color("H") .. [[]
|
||||||
label[3.7,0.8;]] .. mail.settings_groups[group_index].label .. [[]
|
label[3.7,0.8;]] .. mail.settings_groups[group_index].label .. [[]
|
||||||
|
|
||||||
button[0,5.65;2.5,0.5;reset;]] .. S("Reset") .. [[]
|
button[0,5.65;2.5,0.5;reset;]] .. S("Reset") .. [[]
|
||||||
|
|
|
@ -16,7 +16,7 @@ local trash_formspec = "size[8.5,10;]" .. mail.theme .. [[
|
||||||
button_exit[6,9.5;2.5,0.5;quit;]] .. S("Close") .. [[]
|
button_exit[6,9.5;2.5,0.5;quit;]] .. S("Close") .. [[]
|
||||||
|
|
||||||
tablecolumns[color;text;text]
|
tablecolumns[color;text;text]
|
||||||
table[0,0.7;5.75,9.35;trash;]] .. mail.colors.header .. "," .. S("From/To") .. "," .. S("Subject")
|
table[0,0.7;5.75,9.35;trash;]] .. mail.get_color("h") .. "," .. S("From/To") .. "," .. S("Subject")
|
||||||
|
|
||||||
|
|
||||||
function mail.show_trash(name)
|
function mail.show_trash(name)
|
||||||
|
|
53
util/colors.lua
Normal file
53
util/colors.lua
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
local function get_base_color(id)
|
||||||
|
local colors = {
|
||||||
|
h = "#999", -- header
|
||||||
|
s = "#72FF63", -- selected
|
||||||
|
i = "#FFD700", -- important
|
||||||
|
a = "#CCCCDD", -- additional
|
||||||
|
H = "#608631", -- highlighted
|
||||||
|
n = "#00F529" -- new
|
||||||
|
}
|
||||||
|
return colors[id]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function hex2rgb(hex)
|
||||||
|
hex = hex:gsub("#","")
|
||||||
|
return {
|
||||||
|
r = tonumber("0x" .. hex:sub(1,2)),
|
||||||
|
g = tonumber("0x" .. hex:sub(3,4)),
|
||||||
|
b = tonumber("0x" .. hex:sub(5,6))
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rgb2hex(rgb)
|
||||||
|
return "#" .. string.format("%x", rgb.r) .. string.format("%x", rgb.g) .. string.format("%x", rgb.b)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function rgbColorsMix(colors)
|
||||||
|
local R = 0
|
||||||
|
local G = 0
|
||||||
|
local B = 0
|
||||||
|
for _, c in ipairs(colors) do
|
||||||
|
R = R + c.r
|
||||||
|
G = G + c.g
|
||||||
|
B = B + c.b
|
||||||
|
end
|
||||||
|
R = R / #colors
|
||||||
|
G = G / #colors
|
||||||
|
B = B / #colors
|
||||||
|
return {r=R,g=G,b=B}
|
||||||
|
end
|
||||||
|
|
||||||
|
function mail.get_color(mix)
|
||||||
|
if #mix == 1 then
|
||||||
|
return get_base_color(mix)
|
||||||
|
else
|
||||||
|
local colors = {}
|
||||||
|
for i = 1, #mix do
|
||||||
|
local c = mix:sub(i,i)
|
||||||
|
colors[#colors+1] = hex2rgb(get_base_color(c))
|
||||||
|
end
|
||||||
|
local mixed_color = rgbColorsMix(colors)
|
||||||
|
return rgb2hex(mixed_color)
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,6 +1,7 @@
|
||||||
-- sub files
|
-- sub files
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||||
dofile(MP .. "/util/normalize.lua")
|
dofile(MP .. "/util/normalize.lua")
|
||||||
|
dofile(MP .. "/util/colors.lua")
|
||||||
dofile(MP .. "/util/contact.lua")
|
dofile(MP .. "/util/contact.lua")
|
||||||
dofile(MP .. "/util/uuid.lua")
|
dofile(MP .. "/util/uuid.lua")
|
||||||
dofile(MP .. "/util/time_ago.lua")
|
dofile(MP .. "/util/time_ago.lua")
|
||||||
|
|
Loading…
Add table
Reference in a new issue