View Issue Details

IDProjectCategoryView StatusLast Update
0000410DarkRadiantGUIpublic07.09.2022 19:02
Reportertels Assigned Toorbweaver  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Fixed in Version3.3.0 
Summary0000410: Grey-out menu entries that are not applicable
DescriptionCurrently, all menu entries are always "active", even when they cannot be used. It would be more user-friendly if only menu entries are selctable that can actually do something.

One example are all entries in the Brush -> Clipper submenu. I puzzled forever what these do and how they work, until I found out by accident you have first to select something and create a clip plane and only then these menu entries are "working".

Another solution would be to pop up a warning if these menu entries are used in a non-working state.
TagsNo tags attached.

Activities

orbweaver

orbweaver

08.06.2022 19:36

developer   ~0014848

Last edited: 08.06.2022 19:39

I'm tempted to just remove the Brush -> Clipper menu. Who the hell is going to click on a second-level submenu item instead of just hitting ENTER or SHIFT+ENTER to perform a clip operation?

Nevertheless, there are several items in the Brush menu which remain active when a brush is not selected (e.g. Make Hollow, CSG Subtract etc) which is probably confusing.
orbweaver

orbweaver

07.09.2022 19:02

developer   ~0015235

Most (if not all) entries in Brush and Patch menus are now appropriately disabled if the required object(s) is not selected, so I think this will do for now. Other menu entries can be handled on a case-by-case basis, since the menu system now supports this.

Related Changesets

DarkRadiant: master f71deeb0

2022-06-15 19:18:04

orbweaver

Details Diff
0000410: initial mechanism to enable/disable Commands

The ICommandSystem interface now exposes methods to test whether a given
command is currently runnable. Currently only the CSG module is adding
commands with such a check. This is only a back-end mechanism; there is
not yet any support in the UI for showing the status of commands.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - radiantcore/brush/csg/CSG.cpp Diff File
mod - radiantcore/commandsystem/Command.h Diff File
mod - radiantcore/commandsystem/CommandSystem.cpp Diff File
mod - radiantcore/commandsystem/CommandSystem.h Diff File
mod - radiantcore/commandsystem/Executable.h Diff File

DarkRadiant: master 5739fc5e

2022-06-22 19:58:26

orbweaver

Details Diff
0000410: add mechanism to grey out invalid menu entries

Connect to the wxEVT_MENU_OPEN event to detect when a menu is about to
be opened, and use the event handler to enable or disable menu items
according to the value returned by ICommandSystem::canExecute().

Currently the only visible change is in the Brush/CSG submenu, since
these are the only items for which canExecute() is implemented.
Affected Issues
0000410
mod - radiant/eventmanager/EventManager.cpp Diff File
mod - radiant/eventmanager/EventManager.h Diff File
mod - radiantcore/commandsystem/CommandSystem.cpp Diff File

DarkRadiant: master 1f8842d0

2022-06-28 19:49:53

orbweaver

Details Diff
0000410: add support for greying out menu items based on Statements

Some menu items (such as Brush/Prism...) are based on Statements
(commands with arguments) rather than simple Commands. This change
implements the canExecute() method on Statement objects, allowing menu
items such as Prism to be disabled if the underlying command is not
runnable (ignoring arguments).

The only menu items this change currently affects are the first three
items in the Brush menu, which are all variants of the
QueryBrushPrefabSidesDialog command with different arguments.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - libs/selectionlib.h Diff File
mod - radiant/ui/UserInterfaceModule.cpp Diff File
mod - radiantcore/brush/csg/CSG.cpp Diff File
mod - radiantcore/commandsystem/CommandSystem.cpp Diff File
mod - radiantcore/commandsystem/CommandSystem.h Diff File
mod - radiantcore/commandsystem/Executable.h Diff File
mod - radiantcore/commandsystem/Statement.h Diff File

DarkRadiant: master 231ffcf4

2022-06-29 18:57:14

orbweaver

Details Diff
0000410: skeleton test suite for the CommandManager

Currently a single trivial test which confirms only that we can obtain
the CommandManager module.
Affected Issues
0000410
mod - libs/parser/Tokeniser.h Diff File
mod - test/CMakeLists.txt Diff File
add - test/CommandSystem.cpp Diff File

DarkRadiant: master ca727001

2022-06-29 19:08:19

orbweaver

Details Diff
0000410: add a simple test for adding and executing a Command

This simple command just increments a counter when it is called, so we
can confirm that the registration and callback mechanism is working.
Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master b21d09ac

2022-06-29 19:39:52

orbweaver

Details Diff
0000410: add unit test for ICommandSystem::addWithCheck()

Confirm that the canExecute() method returns the correct value based on
the check function.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master b7d87a44

2022-06-29 19:49:09

orbweaver

Details Diff
0000401: add unit test for a command sequence

Confirm that the execute() method can run a sequence of commands
separated by semicolons.
Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master e54c61d7

2022-07-05 19:12:51

orbweaver

Details Diff
0000401: test calling a Command with an int argument Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master a2b332e7

2022-07-05 19:45:29

orbweaver

Details Diff
0000401: expand command-with-args unit test

Test that we can receive both a string and an integer argument. Get rid
of the local struct since it's not adding any value. Also confirm that
the command is not called if the wrong argument types are provided.
Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 2c2dfdb8

2022-07-05 20:22:59

orbweaver

Details Diff
0000401: test calling a command with an argument list Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master cfca3659

2022-07-06 19:27:06

orbweaver

Details Diff
0000401: test calling a command with args as a statement string Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 5f4715f9

2022-07-12 19:33:21

orbweaver

Details Diff
0000401: refactor common code in CommandSystem test

Re-introduce a local struct (TestCommandReceiver) to encapsulate the
command name, run count and last received args, instead of needing to
explicitly declare these in each test function.
Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 57244bd3

2022-07-12 19:58:54

orbweaver

Details Diff
0000401: test passing Vector2 and Vector3 args to a command Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 403841f7

2022-07-13 19:09:03

orbweaver

Details Diff
0000401: executeCommand() overloads are no longer virtual

The executeCommand() overloads which accept 0-3 parameters do not need
separate back-end implementations, since they are just constructing an
ArgumentList and passing it on to the list-based overload. These are now
non-virtual utility functions implemented in ICommandSystem, while the
CommandSystem implementing class only needs to implement the list-based
method.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - radiantcore/commandsystem/CommandSystem.cpp Diff File
mod - radiantcore/commandsystem/CommandSystem.h Diff File

DarkRadiant: master dfaa3ec6

2022-07-13 19:26:44

orbweaver

Details Diff
0000401: 3-argument executeCommand() overload removed

Now that we have C++11 initializer lists, it is much easier to construct
an argument list inline as "{first, second, third}", making this
rarely-used overload less necessary.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - radiant/ui/modelselector/ModelSelector.h Diff File
mod - radiant/ui/ortho/OrthoContextMenu.cpp Diff File
mod - radiant/xyview/tools/BrushCreatorTool.cpp Diff File
mod - test/Brush.cpp Diff File
mod - test/Prefabs.cpp Diff File

DarkRadiant: master d2cc12a6

2022-07-13 19:45:39

orbweaver

Details Diff
0000401: 0-argument executeCommand() overload removed

This overload can be provided implicitly via a default empty argument
list parameter to the list-based method.
Affected Issues
0000410
mod - include/icommandsystem.h Diff File

DarkRadiant: master b899bf7f

2022-07-19 19:29:47

orbweaver

Details Diff
0000401: further unit tests for Command argument interpretation Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 1824db7e

2022-07-19 20:10:39

orbweaver

Details Diff
0000401: test constructing some cmd::Argument types Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 4a1b9edb

2022-07-20 19:08:59

orbweaver

Details Diff
0000401: further test Command argument parsing Affected Issues
0000410
mod - test/CommandSystem.cpp Diff File

DarkRadiant: master 4c3a5d69

2022-07-27 19:32:34

orbweaver

Details Diff
0000401: disable "Make Visportal" if no brushes selected Affected Issues
0000410
mod - radiantcore/brush/BrushModule.cpp Diff File
mod - radiantcore/selection/algorithm/Primitives.cpp Diff File
mod - radiantcore/selection/algorithm/Primitives.h Diff File

DarkRadiant: master fc7807da

2022-07-27 20:03:36

orbweaver

Details Diff
0000401: disable "Create Decal Patches" if no faces selected Affected Issues
0000410
mod - radiantcore/selection/algorithm/General.cpp Diff File
mod - radiantcore/selection/algorithm/Primitives.cpp Diff File
mod - radiantcore/selection/algorithm/Primitives.h Diff File

DarkRadiant: master 01b22c1f

2022-08-02 19:52:57

orbweaver

Details Diff
0000401: Brush/Clipper menu items require selected brush Affected Issues
0000410
mod - include/icommandsystem.h Diff File
mod - radiantcore/brush/BrushModule.cpp Diff File
mod - radiantcore/clipper/Clipper.cpp Diff File
mod - radiantcore/clipper/Clipper.h Diff File

DarkRadiant: master 22240e45

2022-08-02 20:10:03

orbweaver

Details Diff
0000401: document some commands in the Brush menu Affected Issues
0000410
mod - doc/manual.adoc Diff File

DarkRadiant: master 0468d49c

2022-08-03 19:03:11

orbweaver

Details Diff
0000401: Bind/Connect entities disabled without appropriate selection

These commands require exactly two selected entities (and nothing else).
Affected Issues
0000410
mod - libs/selectionlib.h Diff File
mod - radiantcore/selection/algorithm/Entity.cpp Diff File
mod - radiantcore/selection/algorithm/Entity.h Diff File
mod - radiantcore/selection/algorithm/General.cpp Diff File

DarkRadiant: master da2381b1

2022-08-03 19:14:22

orbweaver

Details Diff
0000401: document a few options in the Entity menu Affected Issues
0000410
mod - doc/manual.adoc Diff File

DarkRadiant: master 885342ed

2022-08-03 19:23:40

orbweaver

Details Diff
0000401: document Clipper commands in Brush menu Affected Issues
0000410
mod - doc/manual.adoc Diff File

DarkRadiant: master b30c3c2d

2022-08-03 19:48:54

orbweaver

Details Diff
0000401: Stim/Response editor disabled without selection Affected Issues
0000410
mod - plugins/dm.stimresponse/StimResponseEditor.cpp Diff File
mod - plugins/dm.stimresponse/StimResponseEditor.h Diff File
mod - plugins/dm.stimresponse/plugin.cpp Diff File

DarkRadiant: master 52d8545b

2022-08-09 19:23:43

orbweaver

Details Diff
0000401: some Patch menu items disabled without a selected patch Affected Issues
0000410
mod - libs/selectionlib.h Diff File
mod - radiant/ui/UserInterfaceModule.cpp Diff File

DarkRadiant: master 250f09ef

2022-08-09 19:43:01

orbweaver

Details Diff
0000401: remove hard size from Patch Thicken dialog

The inclusion of an explicit size for the main panel causes the dialog
to be displayed (on GTK/Linux) with an initial size that is too small
for all of the widgets to show.
Affected Issues
0000410
mod - install/ui/patchthickendialog.xrc Diff File

DarkRadiant: master 22851ca7

2022-08-09 19:56:05

orbweaver

Details Diff
0000401: remove hard size from Create Simple Patch dialog Affected Issues
0000410
mod - install/ui/patchcreatedialog.xrc Diff File

DarkRadiant: master ca5609ce

2022-08-10 19:02:46

orbweaver

Details Diff
0000401: Stitch Patch Textures disabled without selection Affected Issues
0000410
mod - libs/selectionlib.h Diff File
mod - radiant/ui/UserInterfaceModule.cpp Diff File
mod - radiantcore/brush/BrushModule.cpp Diff File
mod - radiantcore/brush/csg/CSG.cpp Diff File
mod - radiantcore/clipper/Clipper.cpp Diff File
mod - radiantcore/patch/PatchModule.cpp Diff File

DarkRadiant: master 032f59e3

2022-08-10 19:10:36

orbweaver

Details Diff
0000401: Weld Patches disabled without selection Affected Issues
0000410
mod - libs/selectionlib.h Diff File
mod - radiantcore/patch/PatchModule.cpp Diff File

DarkRadiant: master 73820959

2022-08-10 19:38:54

orbweaver

Details Diff
0000401: Patch/Insert options disabled without selection Affected Issues
0000410
mod - install/menu.xml Diff File
mod - radiantcore/patch/PatchModule.cpp Diff File
mod - radiantcore/patch/algorithm/General.cpp Diff File
mod - radiantcore/patch/algorithm/General.h Diff File
mod - radiantcore/selection/algorithm/Patch.cpp Diff File
mod - radiantcore/selection/algorithm/Patch.h Diff File

DarkRadiant: master fba9d09a

2022-08-21 05:29:57

greebo

Details Diff
0000410: Fix MRU items disappearing after first use Affected Issues
0000410
mod - radiant/eventmanager/EventManager.cpp Diff File

Issue History

Date Modified Username Field Change
04.11.2007 21:59 tels New Issue
04.11.2007 22:28 greebo Status new => confirmed
08.06.2022 19:32 orbweaver Assigned To => orbweaver
08.06.2022 19:32 orbweaver Status confirmed => assigned
08.06.2022 19:36 orbweaver Note Added: 0014848
08.06.2022 19:39 orbweaver Note Edited: 0014848
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master f71deeb0
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master 5739fc5e
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master 1f8842d0
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master 231ffcf4
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master ca727001
15.08.2022 06:12 orbweaver Changeset attached => DarkRadiant master b21d09ac
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 73820959
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 032f59e3
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master ca5609ce
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 22851ca7
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 250f09ef
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 52d8545b
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master b30c3c2d
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 885342ed
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master da2381b1
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 0468d49c
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 22240e45
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 01b22c1f
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master fc7807da
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 4c3a5d69
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 4a1b9edb
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 1824db7e
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master b899bf7f
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master d2cc12a6
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master dfaa3ec6
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 403841f7
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 57244bd3
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master 5f4715f9
15.08.2022 12:52 greebo Changeset attached => DarkRadiant master cfca3659
15.08.2022 12:53 greebo Changeset attached => DarkRadiant master 2c2dfdb8
15.08.2022 12:53 greebo Changeset attached => DarkRadiant master a2b332e7
15.08.2022 12:53 greebo Changeset attached => DarkRadiant master e54c61d7
15.08.2022 12:53 greebo Changeset attached => DarkRadiant master b7d87a44
21.08.2022 05:30 greebo Changeset attached => DarkRadiant master fba9d09a
07.09.2022 19:02 orbweaver Status assigned => resolved
07.09.2022 19:02 orbweaver Resolution open => fixed
07.09.2022 19:02 orbweaver Fixed in Version => 3.3.0
07.09.2022 19:02 orbweaver Note Added: 0015235