View Issue Details

IDProjectCategoryView StatusLast Update
0003844Slicer4Core: GUIpublic2017-06-10 08:51
Reporterpinter Assigned Topinter  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
Product VersionSlicer 4.4.0 
Target VersionSlicer 4.5.0-1Fixed in VersionSlicer 4.5.0-1 
Summary0003844: Extension module categories are added on the bottom
Description

In the past when a user installed an extension, its category was added on the top. I think it makes sense, because Slicer contains a lot of tools that a particular user doesn't want to use, but they install an extension explicitly, because they need those features.

There are things in the category list above the extensions that are not needed for sure. Many people don't need Developer tools, Legacy, Testing, Utilities or even Endoscopy. Also, BRAINS has 3 categories! Registration (makes sense, widely used), BRAINS (only the one Label statistics module in it), and Unspecified (only BRAINSDWICleanup in it).

It would be nice to make the job of the user slightly easier if those categories went to the top. Please also consolidate the BRAINS categories to one or to other existing categories.

Additional Information

It would be great if this was addressed for 4.4.1. I can do the implementation if we have a consensus. Thanks!

TagsNo tags attached.

Activities

pinter

pinter

2015-09-01 11:02

developer   ~0013252

Has this been considered unnecessary then? See "Additional information" field.

jcfr

jcfr

2015-09-08 06:33

administrator   ~0013259

Note: I will work on consolidating the category for BRAINS

Otherwise, to allow user to easily find the installer extension categories and associated modules, you will find some suggestions at the end.

First, here is an attempt to describe in more details the current problem:

Currently modules provided by freshly installer extensions are either "dispatched" into existing categories or new category are added (alphabetical order).

For a user that do not know which category extensions module are associated with, it can be hard to find the module of an extensions.

To help the user, we should provide some "clues". There are few options:

(1) textual: After installing an extension ... popup a dialog explaining where to find the modules.

(2) visual: After clicking on the module menu, user can easily identify the new categories and modules.

I think implementing option (2) will be the most helpful for the user.

As suggested by Csaba, new categories and modules could be listed after the favourite modules and before the categories.

Without extensions installed:

###################

Annotations

Data

DataStore

DICOM

Editor

Markups

Models

Scene Views

Subject Hierarchy

Transforms

View Controllers

Volume Rendering

Volumes

Welcome to Slicer

--------------------

Wizzard

Informatics

Registration

[...]

#####################

With extensions installed, new categories and modules will be listed at before the builtin categories:

###################

Annotations

Data

DataStore

DICOM

Editor

Markups

Models

Scene Views

Subject Hierarchy

Transforms

View Controllers

Volume Rendering

Volumes

Welcome to Slicer

--------------------

SlicerRT

--------------------

Wizzard

Informatics

Registration

[...]

#####################

If an extension adds module to an already existing category (for example Registration), what should we do ?

pinter

pinter

2015-09-08 11:56

developer   ~0013261

Thanks for the comment!

What did you mean by that the newly added categories are ordered alphabetically? The categories don't seem to be ordered like that to me.

I like the idea of adding the extension modules between the main module list and the other categories by a separator. I can work on this part.

Good question about extension modules added in existing categories. If a developer specifies an existing category for their extension module, it is a conscious decision, so I think the best we can do is make sure the extension modules are on top within that category.

gregsharp

gregsharp

2015-09-10 07:09

developer   ~0013268

Just my two cents.

  1. Separator is a great idea.

  2. If I add module path in application settings (without installing extension), does it go into extension section?

  3. Extension writers should be discouraged from adding to Registration section. IMO, can even be disallowed. It is not helpful for users; they won't easily find where it got added.

  4. Ability to add a extension icon to menu branch (SlicerRT entry in your example) would make a nice visual cue.

pinter

pinter

2015-09-26 18:50

developer   ~0013308

I implemented the built-in module concept, and the categories defined by external modules appear separately between the top-level modules and the built-in categories in the modules list (see screenshot attached to pull request)
https://github.com/Slicer/Slicer/pull/356

What I didn’t implement for this round:

  • Adding external modules without any category (top-level) to the separated section
  • Adding extension icon to the category created by an extension
  • Adding additional clues/icons to all external modules
    I’m not sure whether any of these are needed, but these are the ideas that were thrown in at the discussion. I can implement the ones that prove necessary later.
lassoan

lassoan

2015-09-27 17:34

developer   ~0013311

I just see these comments now. I agree that showing new categories on top is good because they are likely to be used frequently. However, I'm very surprised by Greg's idea of prohibiting extensions from adding modules to existing categories.

My assumption is that Slicer is a single product and extensions seamlessly integrate into this product. I don't want to know about how modules are implemented, where they are downloaded from, who developed them. If I'm interested in registration then I would prefer to see all registration features in one place.

What do you think? What would be the reasons for quarantining modules that are provided by extensions?

fedorov

fedorov

2015-09-27 18:27

developer   ~0013312

I agree with Andras. If I install an extension that belongs to category X, I expect to find it in that category after it is installed. I am puzzled by Greg's comment as well.

pinter

pinter

2015-09-28 05:28

developer   ~0013314

I also think that existing categories should be used when adding new modules through extensions or custom path. I think Greg's comment was about easy access of these modules. This is why my implementation is not fully comprehensive, because it facilitates access only for external modules that have their own new category. Steve's suggestion was an icon on the right side of the module name, similar to Andras' "NEW" postfix. Eventually something like this would be needed. In the meantime, the developer either assigns it to a new category, or trusts that the user finds it without extra pointers.

jcfr

jcfr

2015-09-28 06:00

administrator   ~0013315

existing categories should be used when adding new modules through extensions or custom path

Agreed.

Steve's suggestion was an icon on the right side of the module name, similar
to Andras' "NEW" postfix
In the meantime, the developer either assigns it to a new category, or trusts
that the user finds it without extra pointers.

Makes sense

gregsharp

gregsharp

2015-09-28 07:04

developer   ~0013316

The difference of opinion is that I do want to know which module comes from an extension.

So for me, it is more organized if they are not intermingled.

lassoan

lassoan

2015-09-28 07:16

developer   ~0013317

Greg, what are the reasons you want to know if a module is in the default Slicer installation package or installed by an extension?

gregsharp

gregsharp

2015-09-28 08:18

developer   ~0013318

When I install any software, I like to easily find and understand what was installed. Using separate menu items is one method to achieve this.

Anyway, whatever the group decides is fine with me.

pinter

pinter

2015-09-28 08:24

developer   ~0013319

The reason why I want to know if a module comes from an extension is explained in the issue decsription above. I install an extension because I know I'll need those features. As Slicer has more than a hundred built-in modules, it is not obvious what modules the extension added.

fedorov

fedorov

2015-09-28 08:51

developer   ~0013320

@greg: note that listing a module at the top level does not mean it disappears from the menu sections corresponding to the category/categories it is assigned to. As you can see, Editor shows up at the top level, as well as under Segmentation. So if you install a new extension that does some form of registration, you could potentially list it at the top and under Registration.

jcfr

jcfr

2015-10-02 16:21

administrator   ~0013333

Fixed in r24594
See http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24594

Related Changesets

Import 2017-06-07 23:51:09: master 8be913c8

2015-10-02 19:44:49

jcfr

Details Diff
ENH: Built-in module categories are listed separately in modules list

Modules that are loaded from the Slicer build/install tree are marked
as built-in, modules from different folders are not built-in. If a
non-built-in module adds a category, then it is shown above the built-in
categories, divided by a separator.

Fixes 0003844

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

Reviewed-by: Andras Lasso <lasso@queensu.ca>
Reviewed-by: Andriy Fedorov <fedorov@bwh.harvard.edu>
Reviewed-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Reviewed-by: Sharp, Gregory C. <GCSHARP@mgh.harvard.edu>
Reviewed-by: Nicole Aucoin <nicole@bwh.harvard.edu>
Reviewed-by: Steve Pieper <pieper@isomics.com>

From: Csaba Pinter <csaba.pinter@queensu.ca>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24594 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/Logic/vtkSlicerApplicationLogic.cxx Diff File
mod - Base/Logic/vtkSlicerApplicationLogic.h Diff File
mod - Base/QTCLI/qSlicerCLIExecutableModuleFactory.cxx Diff File
mod - Base/QTCLI/qSlicerCLILoadableModuleFactory.cxx Diff File
mod - Base/QTCLI/qSlicerCLIModuleFactoryHelper.cxx Diff File
mod - Base/QTCLI/qSlicerCLIModuleFactoryHelper.h Diff File
mod - Base/QTCore/Testing/Cxx/qSlicerUtilsTest1.cxx Diff File
mod - Base/QTCore/qSlicerAbstractCoreModule.cxx Diff File
mod - Base/QTCore/qSlicerAbstractCoreModule.h Diff File
mod - Base/QTCore/qSlicerLoadableModuleFactory.cxx Diff File
mod - Base/QTCore/qSlicerUtils.cxx Diff File
mod - Base/QTCore/qSlicerUtils.h Diff File
mod - Base/QTGUI/qSlicerModulesMenu.cxx Diff File
mod - Base/QTGUI/qSlicerScriptedLoadableModuleFactory.cxx Diff File

Issue History

Date Modified Username Field Change
2014-09-11 11:59 pinter New Issue
2014-11-01 19:12 jcfr Target Version => Slicer 4.5.0-1
2014-11-01 19:12 jcfr Target Version Slicer 4.5.0-1 => Slicer 4.4.1
2014-11-01 19:12 jcfr Status new => acknowledged
2015-01-28 09:40 pinter Product Version Slicer 4.3.1-2 => Slicer 4.4.0
2015-01-28 09:40 pinter Additional Information Updated
2015-09-01 10:32 jcfr Target Version Slicer 4.4.1 =>
2015-09-01 11:02 pinter Note Added: 0013252
2015-09-08 06:33 jcfr Note Added: 0013259
2015-09-08 11:56 pinter Note Added: 0013261
2015-09-10 07:09 gregsharp Note Added: 0013268
2015-09-26 18:50 pinter Note Added: 0013308
2015-09-26 18:50 pinter Status acknowledged => resolved
2015-09-26 18:50 pinter Fixed in Version => Slicer 4.5.0-1
2015-09-26 18:50 pinter Resolution open => fixed
2015-09-26 18:50 pinter Assigned To => pinter
2015-09-27 17:34 lassoan Note Added: 0013311
2015-09-27 18:27 fedorov Note Added: 0013312
2015-09-28 05:28 pinter Note Added: 0013314
2015-09-28 06:00 jcfr Note Added: 0013315
2015-09-28 07:04 gregsharp Note Added: 0013316
2015-09-28 07:16 lassoan Note Added: 0013317
2015-09-28 08:18 gregsharp Note Added: 0013318
2015-09-28 08:24 pinter Note Added: 0013319
2015-09-28 08:51 fedorov Note Added: 0013320
2015-10-02 16:21 jcfr Note Added: 0013333
2015-10-02 16:21 jcfr Status resolved => closed
2015-10-02 16:21 jcfr Target Version => Slicer 4.5.0-1
2017-06-10 08:51 jcfr Changeset attached => Slicer master 8be913c8