displayColors - a slightly more configurable showColors()

Share your scripts and packages with other Mudlet users.
Post Reply
User avatar
demonnic
Posts: 884
Joined: Sat Dec 05, 2009 3:19 pm

displayColors - a slightly more configurable showColors()

Post by demonnic »

So, showColors() is handy, but I sometimes wish it did a bit more. But I don't know that we want to keep adding options to the function in mudlet core.

Enter displayColors(options), a showColors() derivative I worked up based on what I learned while making showColors() sort based on color rather than just randomly. So, displayColors(options) takes a table of... well, options. You can replicate default showColors() behaviour using displayColors({columnSort = false, removeDupes = false}) . cols, search, and sort work the same as the arguments to the current showColors(), just as keys in the options table now.

Valid options are
Code: [show] | [select all] lua
--option defaults
options = {
  cols = 4, --number of columns to display colors in

  search = "", --filter the colors using a simple string.find search, defaults of "" means it doesn't filter (shows all eligible colors)

  sort = false, --sort alphabetically rather than by color if true

  echoOnly = false, --just echo to the screen, do not make them clickable.

  window = "main", --where to echo the colors to. can be any miniconsole or userwindow, or 'main'. Can take Geyser objects as well as string names

  removeDupes = true, --removes the duplicate snake_case colors, as well as the gray versions of grey.

  columnSort = true, --prints by column not by row (showColors is by row)

  justText = false, --instead of the bars showColor uses, just put colored text on black background

  color_table = color_table, --by default it displays color_table, but you can feed it a custom table of colors to display instead. Must use the same format as color_table

}
So, some examples:

All defaults:
displayColors-defaults.png
displayColors({columnSort = false}) :
displayColors-columnSortOff.png

I made a test table called test_colors which has just extreme red, green, and blue in it to demonstrate custom color tables:
displayColors({color_table = test_colors})
displayColors-customcolors.png
displayColors-customcolors.png (3.76 KiB) Viewed 4030 times

For the following screenshot, the main window contains displayColors({columnSort = false, removeDupes = false}) which is essentially the same as showColors(), and I created the miniconsole using testMC = Geyser.MiniConsole:new({x="-600", y=0, width = 600, height = 600}), before displaying to it with displayColors({window = testMC})
displayColors-window.png

And a new option, displayColors({justText = true})
displayColors-justText.png
Attachments
displayColors.xml
(6.1 KiB) Downloaded 288 times

User avatar
demonnic
Posts: 884
Joined: Sat Dec 05, 2009 3:19 pm

Re: displayColors - a slightly more configurable showColors()

Post by demonnic »

Updated the xml with new option, justText. Updated post to reflect new option. Fixed copypasta error where sometimes it would printCmdLine instead of appendCmdLine.

Redownload from the original post to get the update.

User avatar
demonnic
Posts: 884
Joined: Sat Dec 05, 2009 3:19 pm

Re: displayColors - a slightly more configurable showColors()

Post by demonnic »

OP updated with better, more DRY code and the echoOnly option which if true will just echo the info out, and not make it clickable.

Post Reply