Skip to content
  • David Thompson's avatar
    Add a new "markup" resource and related changes. · 8402d848
    David Thompson authored
    The markup resource is focused on the annotation of geometric models
    (i.e., "marking up the geometry").
    
    Some related changes include:
    
    + Do not fail when geometry is not provided.
      Some resources inherit `smtk::geometry::Resource` but have
      no geometry and that's alright. Avoid VTK errors/warnings
      when this happens.
    + Graph-resource grammar improvements.
    
      + Accept `any` or `*` queries to mean that any object matches.
      + Ensure that an empty query is parsed properly (since now
        all of the query string must be consumed by a rule, provide a
        rule that matches zero or more spaces) and that it returns false
        for all components.
      + Fix the JSON node serializer to use a proper filter grammar
        (where previously parsing would fail, thus reporting every node
        as matching… but then the exact type-name check would filter
        the list down to what was needed).
      + Fix several tests that used improper query-filters.
    
    + Add component names and transforms to VTK geometry.
    + Add a `resourceAs<T>()` method to the JSON helper.
    + Add `smtk::string::Token`s as a supported property type.
      This also includes sets of tokens (not vectors since
      generally that makes less sense than sets).
      The changes to the filter grammars are because now
      the `smtk::string` namespace takes precedence over the
      `tao::pegtl::string` template-class. Without resolving
      the ambiguity, some compilers (f35 gcc 11.3.1) complain.
    + Improve graph-resource dump formatting.
    
      1. Fix arc-color lookup to use the instance of the Dump
         class that users explicitly provide rather than the
         automatically-created instance that can never have colors.
      2. Make the node class-names for use with `dot -Tsvg` into
         valid CSS descriptors by replacing colons with underscores.
      3. Add CSS class-names to arc types (in addition to node types).
    
    + Add `smtk::common::StringUtil::replaceAll()`.
    + Add `smtk::graph::Component::parentResourceAs<>()`
      as a convenience to cast `parentResource()` to a final type.
    + Add a method to convert an operation type-name to a type-index.
    + Add an event recorder/player for the operation toolbox.
      However, this is only a partial solution to testing.
    + Add utility functions to `smtk::common::Paths`.
    
      + Create directories along a path.
      + Test whether a path is relative or absolute.
    
    + Have `smtk::common::ThreadPool` report unhandled exceptions
      instead of silently failing.
    + Provide arc implementations with a `typeName()` method.
      This is useful for Python bindings and other situations where
      an arc type is not known at compile time.
    + Provide `generateFilename()` test helper on windows.
    + Add operation-groups for creating and dissolving groups.
    + Add Edit→group/ungroup menu items with shortcuts.
    + Fix problematic menu insertion.
      Many ParaView extensions that added menu items used a pattern
      where the action would not be inserted into the application
      until the menu was first clicked by the user. This delayed the
      registration of keyboard shortcuts until the user visited the
      menu; as a result, users were confused when shortcuts worked
      sometimes and not others.
      This delay is no longer required as ParaView now provides (and the
      applications already use) the ``pqApplicationCore::clientEnvironmentDone``
      signal to insert menu items once the base application has already
      prepared menu items. Thus, we remove the one-shot connection previously
      used to insert menu items into their correct position.
    + Add the concept of operation hints and ParaView UI operation-hint behavior
      that acts on these hints.
    + The `smtk::common::TypeContainer` now uses string hashes of the
      type-name of its contents to index them rather than
      `typeid().hash_code()`. This fixes issues on macos.
    8402d848