ID:92007
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Copied from BYOND Features forum by Airjoe

Background by Mobius Evalon at ID:586472

I was wondering how feasible it would be to actually implement this into the system. I think it would be a nice and simple alternative to having a whole window flash, or having sounds to signify when something changes. Currently what we have to do with Artemis is put an asterisk in front of the tab name, to show that something changes. However, most people have stated already that it's very difficult to notice.

As much as I hate to reference mIRC so often, it does do a nice job of this (notice the color changes in the tabs).
Our present tab control does not support different-colored tabs, but since it is owner-drawn we have the ability to add the feature (though not trivially). The primary question is how such a feature would be handled.

One consideration for instance would be the question of how, with skin parameters, a tab's color could be set. It could be something as simple as tab.current-tab-color, but that wouldn't address the issue of changing a non-current tab, nor making sure a tab has the right color when it is added. Another possibility might be pane.tab-color, which could be set to none for a default.

Other considerations include whether tab text colors should also be changeable, and whether individual tab fonts should be changeable. It would be easy to go overboard on such features.
perhaps tab color could be altered in a CSSy way like with Grids.
All that's really needed for me would be color, important tabs in red, not important tabs in green. However, I wasn't sure whether you could change tabs individually or not by this proposal.

Anyways, some sort of syntax could be.

winset(control,param,text of the tab to change,color)

basically it would be like winset("tabcontrol1","tab-color,"Owner","Red")

something like this, but of course, try and keep it alongside the winset format, but something like that would work if only one tab can have the text, and then, this would even be supporting multiple tab controls, if in the future this is possible, or it is already possible.
Dan, that syntax is completely incompatible with winset(). What we need on the design end is to find a smart means of setting tab color with parameters under the existing system.

There are ways we could set the tab color by going through the tab control, but the more I've thought about this the more I favor a pane-oriented approach. The big problem as I said though is that it'd be easy to go overboard with other per-tab specific changes like font. I think if the background color of the tab has to be settable then reasonably the foreground should be settable as well, for instance. It wouldn't take much for the list of new parameters to snowball, so we need a clean design.
Lummox JR wrote:
There are ways we could set the tab color by going through the tab control, but the more I've thought about this the more I favor a pane-oriented approach. The big problem as I said though is that it'd be easy to go overboard with other per-tab specific changes like font. I think if the background color of the tab has to be settable then reasonably the foreground should be settable as well, for instance. It wouldn't take much for the list of new parameters to snowball, so we need a clean design.

I feel that we really only need foreground and background color in this situation. I personally think it'd look terribly ugly to have different fonts per tab, however, I can see the possible need for enlarged font size to maybe signify one tab being important.

Foreground, background, and custom font changes are all I can see being used, then.
Lummox JR wrote:
One consideration for instance would be the question of how, with skin parameters, a tab's color could be set.


winset(usr,"tab1","title-color="#00FF00"
winset(usr,"tab1","background-color="#00FF00")
or something of the like?

DivineTraveller wrote:
Foreground, background, and custom font changes are all I can see being used, then.

Why would you change the font of individual tabs? That would look extremely choppy.
You attributed that second quote to the wrong person.
F0lak wrote:
Why would you change the font of individual tabs? That would look extremely choppy.

Well, I was thinking more along the lines of having a different font (if wanted), such as a header, that would be consistent across all tabs. Not one font per tab individually, because yeah, that'd look terrible.

It's quite possible you could base it on the pane that the tab displays as this would relieve most of the problems seen here thus far. A good example:

winset(src,"thatpanethetabshows","tab-color=\"#0f0f0f\"")
Lummox JR wrote:
I favor a pane-oriented approach. The big problem as I said though is that it'd be easy to go overboard with other per-tab specific changes like font. I think if the background color of the tab has to be settable then reasonably the foreground should be settable as well, for instance. It wouldn't take much for the list of new parameters to snowball, so we need a clean design.

Would it at all be possible to take the current pane set to the tab and use that as a reference to which specific tab you want to edit? Something like winset(source, "window.tab.pane1", "params") would edit the params of the individual tab related to "pane1".

[Edit]Or you know, what Tekken said...
Being able to highlight a tab is very important, in my opinion; having multi-colored tabs, less so. The simplest way to implement this would be to have a "highlight color" setting on tabs, and then use that color whenever a pane is flashed.
I've been wanting this for quite awhile... Get this up to the toplist!! :p
This has probably already been suggested but:

winset(src, "PaneName", "title-foreground = #Hexadec")
winset(src, "PaneName", "title-background = #Hexadec")
This really should be added, it's a pretty simple concept...