Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Entire forum
➜ MUSHclient
➜ Miniwindows
➜ MW Hotspot tooltip... function with x/y location?
MW Hotspot tooltip... function with x/y location?
|
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Kovarid
(15 posts) Bio
|
Date
| Fri 09 Jan 2015 07:25 PM (UTC) |
Message
| I don't /think/ it's currently possible,
but I'll ask here just to be sure.
I'm looking for a way to change the tooltip of a mw depending on the location of the mouse as it hovers.
Why?
I am using a heavily modified version of this:
http://www.gammon.com.au/forum/?id=10728
For a few games, and I'd like to be able to get rid of timestamps as regular text, and instead be able to hover over
text in the MW and have it pull the line timestamp from there.
This would most likely require the ability to call a function with the hotspot tooltip, and the function would need be given the current mouse x/y coordinates as well.
Thoughts? | Top |
|
Posted by
| Nick Gammon
Australia (23,121 posts) Bio
Forum Administrator |
Date
| Reply #1 on Fri 09 Jan 2015 08:09 PM (UTC) |
Message
| GetInfo (283) and 284 return the current mouse location.
You should be able to use WindowHotspotTooltip to change the tooltip, for example, when the mouse moves. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Nick Gammon
Australia (23,121 posts) Bio
Forum Administrator |
Date
| Reply #2 on Fri 09 Jan 2015 08:10 PM (UTC) |
Message
| What seems the simplest to me is to just make each line of text in the window have its own hotspot, and make the mouseover text be the date/timestamp. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Kovarid
(15 posts) Bio
|
Date
| Reply #3 on Sat 10 Jan 2015 12:50 PM (UTC) |
Message
| Hmm.. I'll play with it see if I can do that.
I'm not certain how to accomplish it because of how the lines can be split up to fit into the window, but sounds like a fun experiment! | Top |
|
Posted by
| Fiendish
USA (2,533 posts) Bio
Global Moderator |
Date
| Reply #4 on Sun 11 Jan 2015 03:33 AM (UTC) Amended on Sun 11 Jan 2015 03:35 AM (UTC) by Fiendish
|
Message
| So off the top of my head...
Observe where it says "-- inject timestamp if wanted".
Instead of inserting a styled timestamp string into the styles table, skip down to the next part where it says "-- store the raw lines for use during resizing".
Replace " table.insert(rawlines, styles)" with something like " table.insert(rawlines, {styles, os.date (date_format)}), which then requires you to remember that now rawlines contains a list of pairs of two things, one of which is a raw line, instead of just a list of raw lines. Likewise change " fillBuffer(styles)" to " fillBuffer({styles, os.date(date_format)})"
Note that this now means that "for _,styles in ipairs(rawlines)" in init will be passing a table of both styles and a timestamp to fillBuffer.
Then at the top of fillBuffer, add "local timestamp = rawstyles[2]; local rawstyles = rawstyles[1]" to split them apart and get everything back to functioning.
Then inside fillBuffer change " add_line( line_styles, beginning )" to " add_line( line_styles, beginning, timestamp )".
Then go change the add_line function to take a third argument "timestamp".
Then in add_line, change " table.insert (lines, {line, false} )" to " table.insert (lines, {line, is_beginning_of_message, timestamp} )".
Note here how silly I was when adding the next line, doing an assignment after insertion instead of just inserting the right thing in the first place. Oops. No matter; it doesn't hurt anything.
Finally...
Notice how we find the right line in GetBufferedMessage. (" windowline = math.floor(((ypos-theme.TITLE_HEIGHT)/line_height)+1)-1"; if (#lines > windowline) then local line = windowline+lineStart)").
Thus, lines[windowline+lineStart][3] should give the timestamp you want with WindowInfo(Win,15) as ypos. |
https://github.com/fiendish/aardwolfclientpackage | Top |
|
Posted by
| Kovarid
(15 posts) Bio
|
Date
| Reply #5 on Thu 15 Jan 2015 04:06 AM (UTC) |
Message
| Ah, I went ahead and implemented a different way before
seeing your reply Fiendish.
Figured I'd go ahead and share the whole plugin, since I've added some enhancements that may be useful to others.
Some of this is only useful to the MUSH it was meant but, but eh.
* Supports slave windows (unlimited number of them) -- each trigger must be setup in the code though.
* Last 500 lines in each window is saved across sessions
* You can now rename the windows
* Spam filtering for subspace messages: If you get an updated 'status' message, it replaces the old line instead of adding additional spam to your window.
* Toggle-able tooltip timestamps (timestamps show as tooltips when you hover, instead of always visible). You can switch it on the fly.
* You can now search the window for matching text (using lua regex-style matches), it will hilite matching lines and display them.
http://pastebin.com/Xcz4AJTg
Feel free to give me feedback on my crappy code! | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
19,017 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top