1. 10 Jun, 2019 1 commit
  2. 16 Apr, 2019 1 commit
  3. 04 Apr, 2019 2 commits
  4. 06 Mar, 2019 1 commit
  5. 14 Nov, 2018 1 commit
    • David Thompson's avatar
      Many changes related to descriptive phrase views. · cf3795c8
      David Thompson authored
      + Implement `PhraseModel::handleCreated()`.
      + Hold expunged model entities rather than UUIDs.
        Change `smtk::model::Resource::deleteEntities()` so that the expunged
        container holds `Entity` shared-pointers rather than UUIDs;
        this keeps the entity records from going out of scope as they are
        removed from the model resource (long enough that the operation result
        can be processed to remove them from the UI).
      + Properly remove phrases of deleted components.
        This also removes overrides that ResourcePhraseModel provided for
        handling operation results; the base class implementation should
        do what is needed without further work by the subclass.
      + Provide a flatter (two-level) resource tree.
      + Documentation for views and phrases.
      + Improve sorting of descriptive phrases
        by comparing smtk::resource::Component subclasses and
        model entity types.
      + Show a valid icon for lists, not the invalid icon.
      + Eliminate some warnings from other parts of SMTK.
      + Make subphrase generator a user preference in the ParaView extensions.
      cf3795c8
  6. 08 Nov, 2018 1 commit
  7. 23 Oct, 2018 1 commit
  8. 08 Oct, 2018 1 commit
  9. 01 Oct, 2018 1 commit
    • T.J. Corona's avatar
      Refactor links to use link roles more consistently. · 035b8872
      T.J. Corona authored
      As the use cases for resource/component links has been fleshing out, the
      design for these links continues to refine to accommodate these cases. This
      commit more closely weaves the use of link roles into smtk::resource::Link's
      query methods, and it presents a uniform API for resource and component
      links. Also, a test has been added to validate/demonstrate resource and
      component linking.
      035b8872
  10. 07 Sep, 2018 1 commit
  11. 13 Jul, 2018 1 commit
    • 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
        deserialization).
      + 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.
      acddd098
  12. 09 Jul, 2018 1 commit
  13. 03 Jul, 2018 1 commit
  14. 18 Apr, 2018 1 commit
    • Haocheng LIU's avatar
      FEATURE: Add support for editing a rgg core and some auxiliary features · 0e04bcfb
      Haocheng LIU authored
      This commit also adds a feature that if user uses the create
      pin/duct/assembly op to create new rgg entity, CMB woud not only
      switch to the corresponding edit operator automtically and also
      assocate the newly created entity with the attribute association.
      
      SMTK now is able to reset the camera once rgg operation finishes.
      And operators can choose to hide unrelated entities which are not
      created, modified by the current operator.
      
      CMB side commit: fcd4b403ad5a764bc3f88789d7f4e48258ba90e0.
      
      SMTK can reset the camera once rgg operation finishes
      
      CMB side commit: fcd4b403ad5a764bc3f88789d7f4e48258ba90e0.
      0e04bcfb
  15. 02 Feb, 2018 1 commit
    • David Thompson's avatar
      Adapt to the new operator/resource classes. · ff5d9498
      David Thompson authored
      + Use the new resource/operator framework to load model files.
      + Check more pointers to avoid crashes.
      + Eliminate warning from vtkModelMultiBlockSource about model being unset
         because now each **resource** should have its own representation,
        so we should always render everything the resource has to offer
        rather than trying to traverse just one model.
      + Set up SMTK model representation properly: set both the resource and the
        vtkSMTKWrapper instance so that selections are properly synchronized.
      ff5d9498
  16. 30 Nov, 2017 1 commit
    • David Thompson's avatar
      Many changes to support resource and operation reorg. · d31e963f
      David Thompson authored
      + Add an abstract PhraseModel class and a concrete ResourcePhraseModel class.
        A PhraseModel owns a DescriptivePhrase hierarchy and the SubphraseGenerator
        instances attached to it. The PhraseModel class maintains the hierarchy as
        operations and selections are performed by users.
        A PhraseModel may be configured by an SMTK views.
        PhraseModel provides some methods for its children to override that
        make managing the hierarchy much simpler.
      + Add a JSON deserialization for smtk::view::View and test that it matches
        the equivalent XML description.
      + Add an observe() method to resource manager.
        Now it is possible to get notified when a resource is added/removed.
        Note that the notification comes *after* the operation that reads the
        resource has completed.
      + Track both resources and resource managers with pqProxy subclasses.
      + Add a ParaView plugin panel that presents resources in a model-tree view.
      + Provide minimal registration of the model manager to the resource manager.
      + Add DescriptivePhrase::visitChildren() method for traversing a phrase
        hierarchy in order to update it.
      + Fix issues with operator result creation.
        Model operators still need to use their Session's attribute collection to
        create the result while the new-style operators should use the operator
        manager. This will change again when the new operation manager is
        modified to use an attribute collection per operator rather than a single
        instance for the manager.
      + Implement more of ComponentItemDefinition and partially implement XML
        I/O of attributes with ComponentItems. The associated components of an
        attribute are still not synchronized/serialized/deserialized.
      + Provide some model-operator-specific code to copy result
        summary items from ModelEntityItems to ComponentItems with
        similar names (now also defined in Session.cxx).
        In the long term, ModelEntityItem should disappear.
      + Make Resource store a weak pointer to its manager,
        not a raw pointer. Since the manager may not hold the
        only shared pointer to a resource, the resource may outlive
        its manager and should still behave.
      d31e963f
  17. 18 Nov, 2017 1 commit
    • David Thompson's avatar
      Checkpoint on PV, resource, selection, and operation refactor. · 4e330ba2
      David Thompson authored
      + Implement some stubbed methods in smtk::operation classes
        and test them.
      + Add C++11 callbacks for listening to operator events (all
        of them, not just individual operators like the model-
        operator callbacks did).
      + Add behaviors to the ParaView extensions that do client-
        server communication of selections.
      + Add pqSMTKResourceManager proxy that gets created by
        pqSMTKResourceManagerBehavior upon plugin startup.
        All the selection management stuff in the behavior should
        eventually be moved into the proxy class.
      + Add pqSMTKResource proxy that registers itself with
        the VTK/PV-wrapping of SMTK's resource manager.
      + Fix documentation and add stubs for documenting the
        `smtk/extension` directory.
      + Add Qt extension classes that expose the new
        descriptive phrase classes in `smtk/view`.
      + Use the new qtDescriptivePhraseModel in a panel
        to show resources in ParaView as a behavior.
      + Eliminate client-server duality.
        For now, we work only with PV's built-in server,
        not separate client+server processes.
        This means that there is no need for operator
        forwarding, separate resources on the client and server,
        problems synchronizing the client-only attribute panels
        with models that are modified only on the server, etc.
      4e330ba2
  18. 31 Oct, 2017 1 commit
    • David Thompson's avatar
      Follow through on changes required by resource inheritance. · c57053cd
      David Thompson authored
      There are consequences to making everything (mostly) in SMTK
      inherit either Resource or Component.
      A bunch of stuff related to model entities needs to be generalized
      to deal with resource components of any type.
      This commit moves classes around and/or provides alternate versions
      to accomplish this.
      
      + Add a new top-level SMTK subsystem named **view** for dealing
        with presentation of resources and components to the user.
          + Note that smtk::common::`View` should move here at some point.
          + Make a new DescriptivePhrase and SubphraseGenerator in smtk::view.
            These are extremely similar to the versions in smtk::model
            but deal with components of any type.
            Eventually, the versions in smtk::model should disappear.
          + Add new phrase types to the view subsystem:
              + `PhraseList` which replaces `EntityListPhrase` and more
              + `ComponentPhrase` which replaces `EntityPhrase`
              + `ResourcePhrase` which displays the filename holding components.
          + Add the unitDescriptivePhrase test in `smtk/view/testing/cxx` that
            will print out a hierarchy that contains most of the information that
            was in the previous model-specific tree.
      + Add a new `ComponentItem` and `ComponentItemDefinition` to the attribute system.
      c57053cd
  19. 19 Oct, 2017 1 commit
    • David Thompson's avatar
      Add capabilities for SMTK inside ParaView. · e7886db8
      David Thompson authored
      + Create a new VTK source that reads SMTK model files.
      + Add a selection manager to smtk::resource that, unlike the
        smtk::extension::qt::qtSelectionManager, tracks ResourceComponents
        instead of EntityRefs, MeshSets, and DescriptivePhrases.
      + Add the husk of a ParaView stand-in for the resource manager,
        which does not yet exist, to act as a client-server glue layer
        for selection management.
      + Add a ParaView behavior to synchronize the selection
        (a) between ParaView's server-side per-block selections on SMTK
            representations; and
        (b) across the client-server connection using ParaView's pqSelectionManager.
      + Add a ParaView tool bar exposing buttons to filter the SMTK selection.
      + Rename the smtk::extension::SelectionModifier enum to smtk::resource::SelectionAction.
      + Change _all_ the `vtkModelMultiBlockSource` outputs to be multiblocks;
        The glyph mapper accepts multiblocks of vtkPolyData instances
        for the glyph points, so we should keep each instance's placements
        as a separate block. This makes it possible to use the new mapper
        pickability features with instance placements, too.
      e7886db8
  20. 10 Oct, 2017 1 commit
  21. 04 Oct, 2017 1 commit
  22. 15 Sep, 2017 2 commits
  23. 05 Sep, 2017 1 commit
  24. 14 Aug, 2017 1 commit
  25. 20 Jul, 2017 1 commit
    • David Thompson's avatar
      Add operator convention: "allow camera reset" · b63ebe6d
      David Thompson authored
      If operators have an enabled void item named "allow camera reset"
      then the camera _may_ automatically be reset by applications when
      processing the result. Otherwise, applications should not alter
      the camera in response to the operation.
      b63ebe6d
  26. 18 Jul, 2017 1 commit
  27. 12 Jul, 2017 1 commit
    • David Thompson's avatar
      Initial support for _instance_ entities in SMTK. · 809c5139
      David Thompson authored
      This commit
      
      + adds methods to `smtk::model::Instance` to generate its tessellation on
        demand from properties defined on it in the model manager.
      + provides a way to specify instance placements as properties on the instance;
        both tabular point coordinates and random placement generation are supported.
        In the future, we envision `smtk::common::Extension`s (see below) providing
        extensible ways to specify instance placements that are application-specific.
      + provides a way to specify that instance placements should be snapped to
        points on model-entity tessellations (including cells and auxiliary geometry).
      + adds `smtk::common::Extension`, a class to allow methods in the smtkCore
        library to invoke methods from other libraries (with additional dependencies)
        if they are present; immediate subclasses should be abstract and implemented
        by concrete children in other libraries.
          + adds a point-locator extension to SMTK and implements it in a new ParaView
            server-side plugin; this is used to snap instance placements to points in
            tessellations of other entities.
          + adds an auxiliary-geometry extension, `vtkAuxiliaryGeometryExtension`, to
            SMTK and implements it in the vtkSMTKSourceExt library; this is used to
            verify that URLs are valid during aux. geom construction, to fetch bounding
            box information of auxiliary geometry, and to allow the point-locator
            extension to perform snapping when loading SMTK files (before auxiliary
            geometry has a corresponding VTK dataset in the CMB application).
      + adds a new operator: `Model Entities - Create Instances` that provides a way
        for users to create an instance of a model entity or of auxiliary geometry;
        each instance may have many individual _placements_ (i.e., locations in space
        where the prototype entity is repeated).
      + adds transform properties to the `Model - Add Auxiliary Geometry` operator so
        that a rigid-body transform can be applied to data as it is read.
      + adds support for deleting Instances to the polygon-session
        `Model Entities - Delete` operator.
      + adds a new operator: `Model Entities - Group Auxiliary Geometry` operator to
        allow creation of hierarchical auxiliary geometry. These new, hierarchical
        auxiliary geometry instances may be instanced, allowing for complex scene
        construction.
      + adds a new templated method to `smtk::model::EntityRef` named `instances()`
        that you can use to ask any entity for a list of places it is duplicated
        in the model.
      + adds output ports to `vtkModelMultiBlockSource` that hold
          + a second multiblock dataset that holds references to each entity serving
            as a prototype to an instance; and
          + a polydata containing placement points for all instances in its vtkPoints.
            Instance tessellation points are assumed to be the origin of glyphs
            that reference blocks in the first output port (the multiblock of
            model and non-image auxiliary geometry).
        These two output ports can serve as inputs to a `vtkGlyph3DMapper` for rendering
        instances. Eventually, the polydata will be replaced with a multiblock of
        polydata point placements, one block for each instance entity (in order to
        allow block-selection in VTK/PV to translate into entity-selection in SMTK/CMB).
      + adds the ability to specify a transform when constructing auxiliary geometry.
        Note that the order of operations has not been thoroughly tested to be consistent
        with VTK, but that is the intent.
      + tracks all VTK-SMTK model/mesh-source objects as they are constructed/destroyed
        in order to make point-location and snapping possible in CMB.
      
      This commit does not:
      
      + provide ways to change the orientation of instance placements individually
      + provide a way to specify coloring of instances (per-placement or per-instance)
      
      Future merge requests are planned to implement these features.
      
      This commit also improves documentation for model operators by describing
      conventions for operator specifications (inputs) and results (outputs).
      809c5139
  28. 14 Dec, 2016 1 commit
  29. 12 Oct, 2016 1 commit
  30. 14 Sep, 2016 1 commit
  31. 11 May, 2016 1 commit
  32. 03 Dec, 2015 2 commits
  33. 30 Oct, 2015 1 commit
    • David Thompson's avatar
      Progress on a polygonal modeler. · f909bb60
      David Thompson authored
      New Modeling Kernel
      -------------------
      
      This commit adds a new modeling kernel based on
      [Boost.polygon](http://www.boost.org/doc/libs/1_58_0/libs/polygon/doc/index.htm).
      It currently supports a very limited set of operations:
      
      + Creation a model.
      + Creation of model vertices.
      + Creation of model edges.
      
      Internally, an edge split operation is provided but not yet exposed.
      
      Miscellany
      ----------
      
      + Fix a bug in attribute association.
        Because model entity items in attributes may have a membership mask,
        calling `setValue()` does not guarantee that the association will
        occur. Return the proper boolean or infinite recursion will occur
        inside `Attribute::associateEntity()`.
      + Add a Python-callable variant of ImportJSON::ofLog.
      + Have `smtk.simple` hang on to operator results so that scripts can access them if they need to.
      + Fix error log printout in `smtk.simple` API.
      + Have python test `addToScene()` method return pipeline objects.
      f909bb60
  34. 26 Oct, 2015 1 commit
  35. 25 Sep, 2015 1 commit
  36. 17 Sep, 2015 1 commit
  37. 29 Jul, 2015 1 commit