• David Thompson's avatar
    Add an operations panel for SMTK/CMB... · acddd098
    David Thompson authored
    ... in which we
    + Add an operations panel UI.
    + Add a new smtk::view::AvailableOperators class that tracks
      a selection and an operation manager, calling observers when
      the list of operations changes (some work TBD).
    + Add `{observe,unobserve}Metadata` to smtk::operation::Manager so
      that new observers can be immediately passed the list of extant
      operation metadata.
    + Respond to selections in modelbuilder.
    + Add a `primaryAssociation()` method to operation metadata
      that returns the smtk::attribute::ReferenceItem for each
      operation (or nullptr if the operation's parameters don't
      support association).
    + Fix logic in AvailableOperators to test whether each
      operator accepts **all** the selected items and that
      the **number** of selected items is appropriate.
    + Remove some debug printouts and use the available-ops observer
      to print when the list changes.
    + Add a new subsystem to SMTK: **workflow**.
      The workflow system will host a task-dag used to provide
      suggestions to users. Currently, it exists only to
      filter+sort the list of applicable operations for
      presentation to the user.
    + Work on the AvailableOperations class in smtk/view to
      own an use the workflow operation filter.
    + Remove use of qtModelOperationWidget from custom operator views.
      This is in preparation for removal of qtModelOperationWidget,
      qtOperationDockWidget, qtOperationView, and qtModelView entirely.
      The qtModelView is replaced by the pqSMTKResourcePanel and the
      others will be replaced by the pqSMTKOperationPanel.
    + Add operation and resource managers to the qtUIManager.
      There may be a better place to put these that is not specific to Qt.
    + Test the workflow OperationFilterSort object (at least JSON
    + Operation panel now lists available operations on the first selection change.
      The fact that it doesn't list an initial set of operations is a bug.
    + Fixed AvailableOperations so you can set its workflow filter.
    + Added methods to AvailableOperations to provide access to the
      user-facing data on operations that OperationFilterSort::Data provides.
    + Added the qtAvailableOperations widget. It is a subclass of QWidget
      and owns a QListWidget, which it populates with operations based on
      an AvailableOperations instance().
    + Add `createParameters` method to SpecificationOps.
    + When asked for operation parameters, always call `createParameters`
      rather than `extractParameters` so that operations always have unique
      parameters rather than sharing them.
    + Create a top-level view in the UI manager when none exists in order to
      display operators.
    + Listen for click events in the operation list widget and respond
      by showing a view of the matching operation.
    + Fix the XML reader to handle `AssociationDefs` that contain a
      `MembershipMask` tag.
    + Switch a bunch of operators to use `Accepts` entries instead of
      `MembershipMask`s in their associations (to be more specfic about what
      types of resources they accept).
    + Instantiate the pqPluginSMTKViewBehavior class inside
      pqSMTKAppComponentsAutoStart. Otherwise, custom views
      are not registered to the Qt UI manager.
    + The "name" of the assign colors operation has changed
      from "assign colors" to "smtk::model::AssignColors".
      Partially fix the custom view so that the UI is created.
    + Fix misspelled method.
    + Fix polygon "split edge" operation (only 1 edge can be split at a time).
    + Remove debug cruft.
    + Improve operator availability logic.
    + Refactor qtUIManager and pqSMTKOperationPanel.
      Now a qtUIManager may be constructed with an Operation instance
      whose attribute collection will be rendered as its view.
      Furthermore, applications can ask the qtUIManager to find/create a
      default view of its operation.
      This greatly simplifies the operation panel's job.
    + Rename `displayOperation()` methods in the operation panel to
      `editOperation()`, which is more accurate.
    + Fix `qtUIManager::initializeUI()` to create the proper type of
      view info when constructed with an operation.
    + Have the operation panel associate the current selection to the
      chosen operation when double-clicking.
    + Add an option to show **all** operations (or only those
      that match the current selection) to the AvailableOperations
      object. Also, expose it in the operation panel.
    + Have the operation view actually execute the operation,
      not just signal that it wants the operation run.
    + Make the polygon Write operation use associations
      for the resource it will write rather than an Item.
    + Make `smtk::view::Selection` hold `smtk::resource::PersistentObject::Ptr`s
      instead of component pointers. This will allow the operation
      panel to expose operations such as polygon::Write.
    + Add some example "workflow" files.
qtAvailableOperations.h 1.8 KB