Revamping the KoLmafia Toolbar

Bale

Minion
I really want a Synthesize Candy button on the mafia toolbar. I'm calling it up all the time, but I don't want to have to add it as one of my default tabs either. I think it's a great candidate for the toolbar so it will always be within easy one click access like the coinmaster.

However there are already many other buttons. I think it's time to reconsider which buttons belong on the main mafia interface's toolbar. Some of those are never used by me and I suspect never used by anyone else.

There are two approaches. We could make the toolbar user configurable. If a dev actually wants to do that... awesome! Otherwise let's consider the current buttons...

WGICHob.png


Buttons that need to remain are Browser, gCLI and Preferences. Everything else is optional.

Buttons of dubious use: Council, Clan, Mushrooms, Radio KoL and Alamanc. Do people use them? At least the Almanac has value, but I've bookmarked this calendar and use it exclusively.

I'm also curious how many people use mafia mail and the buff frame. I never do, but perhaps someone else's experience is different? The familiar trainer is useful, but I use it so rarely that it seems a waste to have a toolbar button instead of just being in the drop-down menu with other tools.

While we're at it, another super-common tool people would want in the toolbar is the Maximizer. Seriously. I bet that is the single most clicked on tool in the menu.
 

Veracity

Developer
Staff member
I use Clan all the time. Never use Council, Mushrooms, Radio KoL, or Almanac.

I mean, I use the Almanac now and then, but I didn't even know there was a button for it.
 

lostcalpolydude

Developer
Staff member
Radio KoL seems to load a dead page, and no one reported that it stopped working, so that one can clearly go.

Council, Mushrooms, and Almanac seem fine to remove. Familiar Trainer probably gets used more by Veracity than anyone else.
 

Bale

Minion
Do people use KoLmafia's mail?

I mean, I use the Almanac now and then, but I didn't even know there was a button for it.

Exactly! There's no reason for a button that you'd only click rarely. For that it people can just go into the menu. Exactly why I created this thread to discuss the matter.

Familiar Trainer probably gets used more by Veracity than anyone else.

A low priority button if its a priority for only one person.
 
Last edited:

Veracity

Developer
Staff member
We used to have a built-in Mail client. Hola turned it into "open Mail in the Relay Browser" soon after we added the Relay Browser.

Ironic, since Mail is now available via api.php, specifically to support non-Browser Mail clients, we assume.
 

zarqon

Well-known member
The only button I ever use is the button that opens the relay browser. I have also thought from time to time when using KoLmafia on devices with small screens that being able to completely hide the toolbar would be nice.
 

AlbinoRhino

Active member
I don't use the toolbar, just the menus.

But I would probably turn it back on, if it got updated to be more useful. Seems that was the reason I turned it off in the first place.

Edit: Thinking on this further, I think that the panels I use most frequently are the ones that I have open as tabs. The toolbar buttons that would be most useful to me would be the ones I use regularly but less frequently. Which lead me to the thought that the toolbar should be user-configurable. For instance, I would never use a maximizer button, if it were in the toolbar, because I have it open as a tab when I start mafia. Though I definitely agree the maximizer should be one of the pre-defined starting buttons.
 
Last edited:

fronobulax

Developer
Staff member
Clan Manager, Almanac and Preferences are the only ones I can recall using. I too have everything I use often open in Tabs. If every button had an equivalent menu item then I could could easily give up the Toolbar.

I could make a case for User Configuration although I am not sure how I would get from "here" to "there". I think I would make everything have a spot in drop-down menu. Then I would allow items from the drop-down to be optionally displayed in either a tab or as a Toolbar icon. I'll think harder.

If anyone else does look at this, pay attention to the button icons. Before I gave up on making KoLmafia behave better in a high DPI display environment, one of the unsolved issues was that the icons seemed to be of a fixed size and nothing I could figure out made them scale.
 

ckb

Minion
Staff member
Button I use regularly:
Item manager, Store manager, Purchase Buffs, Preferences

Buttons I never use:
Read Kolmail, Chat, Familiar Trainer, Mushroom plot, Radio KoL, Almanac

Buttons I wish existed:
Modifier Maximizer
 

fronobulax

Developer
Staff member
If that is not already the case, it is a bug.

Preferences is the one I could not find when I wrote that. And it is under General so if I had persisted in my belief it would have been operator error ;-)

I'm thinking Radio KoL doesn't count and Collect Garbage and the memory usage bar might be a special case so no BR.
 

Veracity

Developer
Staff member
My tabs:

Adventure
Graphical CLI
Purchases
Skill Casting
Preferences

Toolbar Buttons I use:

Relay Browser
KoLmafia Chat
Clan Manager
Daily Deeds
Item Manager
Equipment Manager
Store Manager
Coin Masters
Purchase Buffs
Familiar Trainer

Toolbar Buttons I never use:

Council
Read KoLmail
Mushroom Plot
Radio KoL
Farmer's Almanac
Preferences

Menu Bar frames I use:

Meat Manager
Museum Display
Sweet Synthesis
Modifier Maximizer
Request a Fax
Encyclopedia

Menu Bar Frames I never use

Mini-Browser
Trophy Arranger

And a bunch of dialogs that I didn't even know we had. "Untinker item", "Wand-Zap Item", "Monster Level" - all of which I just use the CLI for. Ditto for "Rest in Chateau", "Rest in House", and "Sleep in Sofa". Not that I use anything but the Chateau, these days.

"Loot the Hermit" and "Visit the Trapper" are both subsumed by Coinmasters. Why do they still exist?
 

Veracity

Developer
Staff member
Regarding making the toolbar configurable:

There are several kinds of buttons:

- Those that open a Frame of the sort that you can put into a tab (most of them)
- Those that open a Frame that displays a response to a KoL request (Council)
- Those that open the Relay Browser with a request (Relay Browser, Read Kmail. Radio KoL)

Which are the frames you can put in tabs? KoLCionstants.FRAME_NAMES lists them:

Code:
	public static final String[][] FRAME_NAMES =
	{
		{
			"Adventure",
			"AdventureFrame"
		},
		{
			"Mini-Browser",
			"RequestFrame"
		},
		{
			"Relay Server",
			"LocalRelayServer"
		},
		{
			"Purchases",
			"MallSearchFrame"
		},
		{
			"Graphical CLI",
			"CommandDisplayFrame"
		},
		{
			"Daily Deeds",
			"CharSheetFrame"
		},
		{
			"Item Manager",
			"ItemManageFrame"
		},
		{
			"Gear Changer",
			"GearChangeFrame"
		},
		{
			"Store Manager",
			"StoreManageFrame"
		},
		{
			"Coin Masters",
			"CoinmastersFrame"
		},
		{
			"Museum Display",
			"MuseumFrame"
		},
		{
			"Hall of Legends",
			"MeatManageFrame"
		},
		{
			"Skill Casting",
			"SkillBuffFrame"
		},
		{
			"Contact List",
			"ContactListFrame"
		},
		{
			"Buffbot Manager",
			"BuffBotFrame"
		},
		{
			"Purchase Buffs",
			"BuffRequestFrame"
		},
		{
			"Request a Fax",
			"FaxRequestFrame"
		},
		{
			"Mushroom Plot",
			"MushroomFrame"
		},
		{
			"Familiar Trainer",
			"FamiliarTrainingFrame"
		},
		{
			"Loathing Chat",
			"ChatManager"
		},
		{
			"Clan Management",
			"ClanManageFrame"
		},
		{
			"Farmer's Almanac",
			"CalendarFrame"
		},
		{
			"Encyclopedia",
			"DatabaseFrame"
		},
		{
			"Coin Toss Game",
			"MoneyMakingGameFrame"
		},
		{
			"Preferences",
			"OptionsFrame"
		},
		{
			"Sweet Synthesis",
			"SynthesisFrame"
		},
		{
			"Modifier Maximizer",
			"MaximizerFrame"
		}
	};
Observations:

"Mini-Browser" -> "RequestFrame"

Is this still useful? KoL itself is so dependent on Javascript that this is a very deficient version of the Browser experience

"Relay Server" -> "LocalRelayServer"

This is not really a "Frame". It is a directive to start the Relay Browser on startup. Does it work?

"Contact List" -> "ContactListFrame"

Is this one available on the Menu?

"Buffbot Manager" -> "BuffBotFrame"

This one is. It is for those handful of users who are actually running a buffbot

"Coin Toss Game" -> "MoneyMakingGameFrame"

Seriously? This still exists? Is it available on the Menu?

If we support putting a Frame in a tab or opening it on startup, it MUST be on the menu somewhere.

KoLDesktop says that these are the buttons:

Code:
		toolbarPanel.add( new DisplayFrameButton( "Council", "council.gif", "CouncilFrame" ) );
		toolbarPanel.add( new RelayBrowserButton( "Load in Web Browser", "browser.gif", null ) );

		toolbarPanel.add( new DisplayFrameButton( "Graphical CLI", "command.gif", "CommandDisplayFrame" ) );

		toolbarPanel.add( Box.createHorizontalStrut( 10 ) );

		toolbarPanel.add( new RelayBrowserButton( "Read KoLmail", "mail.gif", "game.php?mainpane=messages" ) );
		toolbarPanel.add( new DisplayFrameButton( "KoLmafia Chat", "chat.gif", "ChatManager" ) );
		toolbarPanel.add( new DisplayFrameButton( "Clan Manager", "clan.gif", "ClanManageFrame" ) );

		toolbarPanel.add( Box.createHorizontalStrut( 10 ) );

		toolbarPanel.add( new DisplayFrameButton( "Daily Deeds", "hp.gif", "CharSheetFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Item Manager", "inventory.gif", "ItemManageFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Equipment Manager", "equipment.gif", "GearChangeFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Store Manager", "mall.gif", "StoreManageFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Coin Masters", "coin.gif", "CoinmastersFrame" ) );

		toolbarPanel.add( Box.createHorizontalStrut( 10 ) );

		toolbarPanel.add( new DisplayFrameButton( "Purchase Buffs", "buff.gif", "BuffRequestFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Familiar Trainer", "arena.gif", "FamiliarTrainingFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Mushroom Plot", "mushroom.gif", "MushroomFrame" ) );

		toolbarPanel.add( Box.createHorizontalStrut( 10 ) );

		toolbarPanel.add( new RelayBrowserButton( "Radio KoL", "radsword.gif", "http://209.9.238.5:8794/listen.pls" ) );
		toolbarPanel.add( new DisplayFrameButton( "Farmer's Almanac", "calendar.gif", "CalendarFrame" ) );
		toolbarPanel.add( new DisplayFrameButton( "Preferences", "preferences.gif", "OptionsFrame" ) );
Observations:

As noted, Relay Browser and Read Mail and Radio KoL go to the Relay Browser.

Everything else opens a Frame. All of those frames - except Council - can be set up as a tab. Council would make no sense for that, since it visits the Council and tells you what they say right now; there is no interaction, and it does not update.

I suggest:

Every frame that can be in a tab or opened at startup should have an icon to be used on the toolbar, should you choose to place it there.

Relay Browser requests - Relay Browser, Read Mail, Radio KoL (does it still exist? It seems so - but we should use radio-kol.com, rather than a raw IP address) - should have icons and also be in the Menu.

RequestFrames - things that show the current result of a KoL request, like Council Frame - should have icons and also be in the Menu.

We have the following instances of RequestFrames:

CouncilFrame.java:39: extends RequestFrame
DescriptionFrame.java:44: extends RequestFrame
ProfileFrame.java:39: extends RequestFrame
RequestSynchFrame.java:41: extends RequestFrame

CouncilFrame shows a visit to council.php
DescriptionFrame is how we show desc_xxx.php
ProfileFrame shows a user profile from chat, clan manager, ...

RequestSynchFrame is used if you have "showAllRequests" set to true. It lets you watch, round by round, as you automate. I remember wanting that many years ago - and hola did it - but I have long since lost interest. I wouldn't mind simplifying our code and trashing it.

So, for configuring the toolbar:

It could/should work in combination with how you configure tabs.

Provide a palette of icons, each associated with a frame, with a Relay Browser link, or with a request frame (currently only Council)

You can drag a button to your set of Tabs - if it is a standalone Frame
You can drag a button of any sort to the toolbar.
If a button is in the Tabs, it doesn't need to be on the Toolbar (right?)

You can reorder Tabs to suit your fancy.
You can reorder the Toolbar to suit your fancy.

Restart KoLmafia to see your new tabs and toolbar buttons.

Short of a configurable toolbar:

We could move some buttons to the menu: Radio KoL, Read Mail, Council
We could add some default toolbar buttons: Modifier Maximizer, Sweet Synthesis
We could suppress adding a toolbar button if you have the corresponding Frame in a tab, although that might be controversial: you can press a button to switch tabs, currently, and perhaps people depend on that. We could make that UI decision configurable.
 

Bale

Minion
My tabs: (So many that I am opposed to having any more)
Adventure
Graphical CLI
Gear Changer
Item Manager
Modifier Maximizer
Daily Deeds
Skill Casting
Purchases
Store Manager

Toolbar Buttons I use: (Only a few because I use most of these as tabs)
Relay Browser
Coin Masters
Preferences

Toolbar Buttons I never use: All the others

Menu Bar frames I use:
Meat Manager
Museum Display
Sweet Synthesis
Request a Fax
Encyclopedia
Trophy Arranger
Wand-Zap Item

Menu Bar Frames I never use:
Mini-Browser
Untinker item
Monster Level

I use the button for free rests on the Daily Deeds for "Rest in Chateau", "Rest in House", and "Sleep in Sofa". Not that I use anything but the Chateau, these days.


"Loot the Hermit" and "Visit the Trapper" are both subsumed by Coinmasters. Why do they still exist?

I have no idea! It's clear the UI needs a small overhaul.

"Mini-Browser" -> "RequestFrame"

Is this still useful? KoL itself is so dependent on Javascript that this is a very deficient version of the Browser experience

I say it should be killed. There was a time when I found it useful. That time is long gone.

"Relay Server" -> "LocalRelayServer"

This is not really a "Frame". It is a directive to start the Relay Browser on startup. Does it work?

It works very well. It doesn't actually start the relay browser, but it does start the relay server so that my browser can open the relay. Without this I need to use the button on the toolbar first. For me it removes some awkwardness from the process.

I suggest:
(common-sense obvious stuff follows)

So, for configuring the toolbar:
(more good stuff)

Definitely! You're actually suggesting a bit more than I hoped.

Short of a configurable toolbar:

We could move some buttons to the menu: Radio KoL, Read Mail, Council
We could add some default toolbar buttons: Modifier Maximizer, Sweet Synthesis
We could suppress adding a toolbar button if you have the corresponding Frame in a tab, although that might be controversial: you can press a button to switch tabs, currently, and perhaps people depend on that. We could make that UI decision configurable.

That is the best minimalistic approach. I'd recommend changing the tooboar buttons you suggest first.

I'm not sure about toolbar button suppression myself, but that is something to discuss only if toolbar customization isn't created.
 
Last edited:

AlbinoRhino

Active member
I do remember times in the past when I had enough tabs open on start that they exceeded the allowed width. The options to get to unshown tabs were to repeatedly click the tiny scroll button that is provided or more simply to use the menus (or a toolbar button) to quickly change to an unshown tab. I've since constrained my tabs to only those that will appear on the screen without scrolling or clicking, but I could see the case for allowing a button push or menu selection to switch tabs in that situation. Mafia has so many great features, they can amount to a lot of tabs.

I guess another option would be to make the actual "tabs" smaller so they would all fit if many were used.
 

AlbinoRhino

Active member
One thing I use the mini-browser for is that it easily provides the exact link you need for any particular use of visit_url(). It even already has the password hash replaced with "pwd" for you. I doubt that's a reason to keep it around though. Sometimes the actual link needed is obscured from the relay browser since the address never changes from "game.php" and things like choice buttons aren't even links that you can use "copy address" with.
 

Veracity

Developer
Staff member
Yeah, I've heard people say they use it for that. I just get the URLs out of DEBUG logs, which is pretty cumbersome, but doesn't require you to actually click on the link.

A smaller and more succinct log would be "debug trace on" which makes a TRACE log, rather than a full DEBUG log; just the request & response URLs, without the full response text and header fields and such.
 

Bale

Minion
The whole use the mini-browser for the link thing... that fails on all the more difficult links because the mini-browser fails so often. Using the mini-browser just isn't a good idea anymore.

In comparison, the DEBUG TRACE trick always works.

Edit: Ninja'ed by AlibinoRhino's enthusiastic embrace of the concept.
 
Top