Tabbed Chat

by Unknown

Back to Mechanic's Corner.

Unknown2011-05-19 15:07:04
LATEST VERSION

Edit: Now V2.2 Someone informed me I had failed to handle gmcp.Char.Items.Update and provided a handler for doing so. I have added it, as well as an event for any time the room item list is updated. The event name is "rilist updated". For most of you, this won't effect much.

Edit: Now V2.1. I created just one download link at the top now, keeping multiple versions going isn't particularly viable. This adds timestamping functionality, as well as some configuration options to go with it. I updated the config options page below, it has my own config options at present.

Edit: Now V2, link for 2.0rc5+ has been updated. I have not updated for < 2.0rc5, as everyone now has at least rc5 available. Fixed a few minor issues, now comes with the echo interface by default.

Edit: Added link to new xml file for echo interface to tabbed chats.
USAGE

Here's v1 of the full rewrite for the tabbed chat.
There are now two versions of this. One for the latest 2.0rc as of the time of this edit, rc5, and one which I have tested to be compatible with 2.0rc1 . The only real difference is that I've taken the Geyser code from rc5 and package it in a new pair of script objects. One to bind it to the window resize event (as rc1 does not have the registerAnonymousEventHandler() function) and in the other I've simply merged the lua files for Geyser together in the order they're loaded by Mudlet. All I had to change in the Geyser code was commenting out the one call to registerAnonymousEventHandler()




Only one alias for right now:

dblink
Toggles blinking on and off temporarily. If you want to make the change permanent, follow the on-screen instructions I print out when you use the alias.

Configuration options are as follows:



--]

--This is where you tell it to use tabbed chat.
demonnic.chat.use = true

--http://wiki.mudlet.o...nctions#getTime for information
how to format the string
]]
demonnic.chat.config.timestamp = "HH:mm:ss"

--]
demonnic.chat.config.timestampCustomColor = false
--http://wiki.mudlet.o.../ShowColors.png for available colors)
demonnic.chat.config.timestampFG = "slate_grey"

Or you can use a table of R,G,B values.
demonnic.chat.config.timestampFG = {
255,
0,
0,
}
then the foreground for the timestamp would be 255 read, 100 green, and 0 blue
]]
demonnic.chat.config.timestampFG = "red"

--and background? Same rules as for the foreground above
demonnic.chat.config.timestampBG = "blue"

--]--
demonnic.chat.config.location = "topright"

--]

demonnic.chat.config.channels = {
"All",
"Org",
"Guild",
"Clans",
"Tells",
"Says",
"Misc",
}


--Set this to the name of the channel you want to have everything sent to.
--Per the default, this would be the "All" channel. If you have a different name for it:
--
--demonnic.chat.config.Alltab = "Bucket"
--
--And if you don't want it turned on at all:
--
--demonnic.chat.config.Alltab = false

demonnic.chat.config.Alltab = "All"



---------------------------------------------------------------------------------
-- --
--The infamous blinking stuff!!! --
-- --
---------------------------------------------------------------------------------

--]
demonnic.chat.config.blink = true

--How long (in seconds) between blinks? For example, 1 would mean a 1 second pause in between blinks.
demonnic.chat.config.blinkTime = 3

--Blink if the bucket tab ("All" by default, but configured above) is in focus?
demonnic.chat.config.blinkFromAll = false




--Font size for the chat messages

demonnic.chat.config.fontSize = 9

--]

demonnic.chat.config.preserveBackground = false

--]

demonnic.chat.config.gag = true

--]

demonnic.chat.config.lines = 45

--]

demonnic.chat.config.width = 60

--]

demonnic.chat.config.activeColors = {
r = 0,
g = 180,
b = 0,
}

--]

demonnic.chat.config.inactiveColors = {
r = 60,
g = 60,
b = 60,
}

--]

demonnic.chat.config.windowColors = {
r = 0,
g = 0,
b = 0,
}

--]

demonnic.chat.config.activeTabText = "purple"

--]

demonnic.chat.config.inactiveTabText = "white"

--]
demonnic.chat.currentTab = demonnic.chat.currentTab or demonnic.chat.config.Alltab or demonnic.chat.config.channels



To show the difference between preserveBackground true and false, here's a picture:



Top is false, bottom is true.
Zynna2011-05-19 18:42:49
Huge rave for Demonnic and this script!

I was able to install it, and after rebooting Mudlet, the tabs automatically appeared and it works great. It was easy to edit the labels for the chat tabs and to set up the triggers, following the Org example he provided, to send various chats to the desired tabs.

For those of you with small screen real estate and the mudlet mapper, Demonnic also showed me how you can undock the mapper from the right side and make it smaller, so there is room to fit everything!

Thanks again!



Lilia2011-05-19 20:22:00
I can't see the window. Where is it placed by default? What version of mudlet do you need? According to the error window something to do with Geyser doesn't work.
When I try to run the create function on its own, I get: 'attempt to index field 'HBox' (a nil value)' It doesn't seem to run on start up like its supposed to.
Zynna2011-05-19 20:23:23
QUOTE (Lilia @ May 19 2011, 03:22 PM) <{POST_SNAPBACK}>
I can't see the window. Where is it placed by default? What version of mudlet do you need? According to the error window something to do with Geyser doesn't work. attempt to index field 'HBox' (a nil value)


I couldn't see the window either until I exited out of Mudlet completely and restarted. Then it appeared on the upper right hand side of the screen. I'm not sure what version of Mudlet is required, but I am using 2.0-rc4.
Lilia2011-05-19 20:24:47
QUOTE (Zynna @ May 19 2011, 03:23 PM) <{POST_SNAPBACK}>
I couldn't see the window either until I exited out of Mudlet completely and restarted. Then it appeared on the upper right hand side of the screen. I'm not sure what version of Mudlet is required, but I am using 2.0-rc4.

I've done that several times now. I'm on 2.0-rc1
Unknown2011-05-19 20:34:48
QUOTE (Lilia @ May 19 2011, 04:24 PM) <{POST_SNAPBACK}>
I've done that several times now. I'm on 2.0-rc1


hmm, I coded and tested on rc5. I was not aware of any bugs with the HBox container type in earlier versions though. I'll see if I can download rc1 tonight and troubleshoot.
Vadi2011-05-19 21:36:42
HBox was introduced only in rc4 I think.
Unknown2011-05-19 21:50:10
QUOTE (Vadi @ May 19 2011, 05:36 PM) <{POST_SNAPBACK}>
HBox was introduced only in rc4 I think.



Aha... well, I suppose that means you need rc4 or rc5... if I get time tonight I'll put up a version compatible with rc1.

this is what happens when I take a hiatus, I miss all that nit picky detail.
Lilia2011-05-19 22:12:10
The latest mac version is rc1, so that would be greatly appreciated. Thank you for all the coding work you've done for other stuff, by the way. Most of what I've learned about coding has been through taking apart stuff you've done and then trying to make it work again. You're my coding mentor, whether you knew it or not. wink.gif
Unknown2011-05-19 22:33:39
QUOTE (Lilia @ May 19 2011, 06:12 PM) <{POST_SNAPBACK}>
The latest mac version is rc1, so that would be greatly appreciated. Thank you for all the coding work you've done for other stuff, by the way. Most of what I've learned about coding has been through taking apart stuff you've done and then trying to make it work again. You're my coding mentor, whether you knew it or not. wink.gif



I'm flattered. Feel free to ask direct questions if you like. If I'm online I'm generally available in the irc mudlet channels for helping folks.

I may just rip the HBox stuff out of the source file for Geyser and include it in the tabbed chat xml. One of my goals for this weekend is to see if I can crank out a newer OSX app bundle, so the Mac people can use the newer release candidates.

We'll see how much time I get. May do it hungover on Sunday.
Unknown2011-05-20 05:21:58
Ok, added a link to a 2.0rc1 compatible version of this to the top post. More detailed explanation in the top post, but essentially I just packaged the Geyser code from 2.0rc5 into some script objects with the tabbed chat stuff and it works fine. Tested it myself not 5 minutes ago.
Lilia2011-05-21 02:48:39
I got it working with the new version, thank you! There's just two small problems.

The tabs don't blink when you have the 'All' tab is in focus (which is awesome, thanks), but they do blink if any other window is in focus, even if its the one with the new message. So, if I'm looking at the 'City' tab, and someone says something on the city channel, the city tab will blink until I click on another tab and then click back to the city tab.

Second thing, I was able to move the window by adjusting the y position in the create function, but I can't seem to figure out the x position. I want to move it slightly to the left, but everything I do moves it to the right. I can't figure out how to move the tabs either, so they're just hanging out at the top, covering up part of my map, while the windows are all below the map. If you're planning on adding the ability to move it around, I'll leave it alone for now, but if not, could you point me towards where to learn about this Geyser stuff? It's new to me.
Vadi2011-05-21 03:55:16
Unknown2011-05-21 04:14:22
I plan to add a few stock locations (Top-right, bottom-right, etc) but anything more configurable than that is really going to require learning a bit about Geyser. It's quite simple, and the link Vadi posted above is quite helpful.
Unknown2011-05-25 05:56:37
Added echo functionality in its own xml up top. I will be including it in the next release (which will fix the tab blinking bug pointed out above) but the rest of the code is in a bit of a state of flux right now, as I finish working in the influencer/etc. I added 4 functions:

demonnic.chat:echo("Tabname", "message")
demonnic.chat:cecho("Tabname", "message")
demonnic.chat:decho("Tabname", "message")
demonnic.chat:hecho("Tabname", "message")


These work exactly like the Mudlet functions of similar names, except it will preserve the exact same blinking functionality as you currently have. That is to say, if the tab would blink when something is sent to it from a trigger, then it will blink when you echo something to it as well. And if you have a bucket tab setup, it will echo to the bucket tab also.

If you have any suggestions for other options to add let me know and I may put them in. These were added because someone asked me in PM how to echo to the chat panels. So keep the feedback and requests coming, please =)
Unknown2011-05-25 13:58:19
Somehow, I missed this thread. This looks awesome, thank you. smile.gif
Unknown2011-05-25 16:49:27
QUOTE (Kayte @ May 25 2011, 09:58 AM) <{POST_SNAPBACK}>
Somehow, I missed this thread. This looks awesome, thank you. smile.gif


You're welcome smile.gif

Posts like this fuel my narcissistic tendencies and keep the code flowing. hehe


in all seriousness though, I'm glad folks are getting use out of it
vorld2011-05-26 15:09:30
is there a way to move it?
Edit: I got the older version of it I think
Edit: Opps that infotabs I got.
Unknown2011-05-26 15:41:52
QUOTE (vorld @ May 26 2011, 11:09 AM) <{POST_SNAPBACK}>
is there a way to move it?
Edit: I got the older version of it I think
Edit: Opps that infotabs I got.



There are ways to move the tabbed chat, but nothing particularly easy at the moment. The infotabs would probably actually be easier to move around.

If I can tonight I'll code in something for the tabbed chat to shuffled it between corners. That shouldn't be too difficult. The infotabs I'll have to look into again, I've not reinstalled them since I came back from dormancy. Been working on rewriting the influencer, but that should be done before long and then the infotabs get attacked.
Aison2011-05-26 15:59:44
I've got 2.0rc4, will this work with that?