Commit Graph

59 Commits

Author SHA1 Message Date
Ryan Schultz 03b3d3f627 Make Type Attributes panel values select_similar buttons
Each attribute value in BIM_PT_type_attributes is now a
bim.select_similar button with key "type.<Attribute>" (the selector
walks type. natively), mirroring the object Attributes panel pattern.
This gives type attributes the full modifier scheme - select, SHIFT
remove, CTRL filter, CTRL+SHIFT sum, ALT unhide, CTRL+ALT regex
dialog - with no operator changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 09:30:59 -05:00
Ryan Schultz e6697d0956 Replace select_products flags with a mode enum and consolidate loops
Spatial.select_products now takes mode="ADD"|"REMOVE"|"FILTER" instead
of the mutually exclusive remove / filter_selection booleans, matching
the regex dialog's action enum; helper.selection_mode() maps each
operator's two flag properties to it. core.select_by_material updated
accordingly. Upstream callers pass only products/unhide and are
unaffected.

select_ifc_class, select_similar_type, select_aggregate and
select_linked_aggregates now collect elements and delegate to
select_products instead of hand-rolling unhide/select/filter loops;
select_aggregate's manual IsDecomposedBy recursion is replaced with
get_parts/get_decomposition. Only select_similar keeps a bespoke loop
(tolerance-based value matching).

Intentional behavior deltas (also in the dev note): remove mode uses
plain select_set(False), so select_ifc_class no longer re-anchors the
active object; select_similar_type drops its O(n^2) visible_objects
gate and can latently select hidden occurrences like the other
operators; select_ifc_class and select_similar_type write the
clipboard query in every mode.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 09:09:52 -05:00
Ryan Schultz 69486b7d1d Refactor select operators onto shared scaffolding in bim.helper
- RegexSelectMixin owns the CTRL+ALT+Click regex dialog (properties,
  draw, pattern compilation, verb/clipboard/report tail) with two
  strategies: apply_regex_by_value for per-object matching and
  select_regex_products for union-of-products operators. The five
  regex operators now implement only apply_regex, get_regex_prefill
  and their clipboard key / count noun.
- decode_select_click(event) centralizes the modifier scheme (unhide /
  remove / filter / legacy / regex_dialog); all nine select operators
  use it. Per-operator LEFTMOUSE type guards were dropped, so keyboard
  invocation now honors modifiers uniformly.
- Tooltips compose from shared constants, fixing casing drift;
  SelectIfcClass and SelectSimilarType switch from docstrings to
  bl_description to allow composition.
- Delete core.select_similar_container, dead since the #7940 merge
  made SelectSimilarContainer call Spatial.select_products directly.

No behavior changes besides the keyboard-invocation and tooltip-text
normalization noted above.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 08:52:58 -05:00
Ryan Schultz 7a7bc75cba Add CTRL+ALT+Click regex-search dialog to five select operators
Opens a props dialog prefilled with the active object's value (key
value, type name, material name, group name, or aggregate name), then
matches it as an unanchored Python regex (entering foo behaves like
.*foo.*) with an Add / Remove / Filter action dropdown and an "Also
Unhide Hidden Objects" checkbox. Applied to select_similar,
select_similar_type, select_by_material, select_group_elements and
select_aggregate.

Multi-match operators (groups, aggregates) union their matches before
a single Spatial.select_products call so Filter cannot wrongly
intersect per-match. select_aggregate matches only IfcElement
aggregates, excluding spatial decomposition, and exposes Also Select
Parts / One Level Deep in the dialog. The equivalent selector query
(e.g. material = /.*foo.*/) is copied to the clipboard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 08:21:27 -05:00
Ryan Schultz 6c97b6fa5e Add dev-notes doc for Additional_Selection_and_Deselection_Tools
Generated with the assistance of an AI coding tool.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:38:58 -05:00
Andrej730 dbb4e91d55 apply cmake file formatting 2026-01-26 17:10:03 +05:00
Andrej730 13be6ccd45 Sort imports 2025-12-19 18:53:14 +05:00
Dirk Olbrich 7806dc1d6a docs: include doxygen-awesome as git submodule 2024-04-16 11:28:55 +02:00
Dirk Olbrich 9f0a781d05 docs: add README with instructions 2024-04-16 11:27:33 +02:00
Dirk Olbrich 15d58e32d1 docs: modify doxygen config to new folder 2024-04-16 11:27:33 +02:00
Dirk Olbrich 05b3a55e08 docs: move C++ API docs to subfolder 2024-04-16 11:27:33 +02:00
Dirk Olbrich b298f24275 docs: include doxygen-awesome theme 2024-04-16 11:27:31 +02:00
Dirk Olbrich 97a261ba54 docs: remove duplicate cmake for Sphinx setup 2024-04-16 11:26:47 +02:00
Dirk Olbrich fcfaa5238e docs: remove geom setting docs and images
- these are duplicated in /src/ifcopenshell-python/docs/ifcopenshell/
2024-04-16 11:26:47 +02:00
Dirk Olbrich d7d1198a1a docs: update doxygen file to 1.9.8 2024-04-16 11:26:47 +02:00
Dirk Olbrich 576bd6742e docs: set LOOKUP_CACHE_SIZE 2024-04-16 11:26:47 +02:00
Dirk Olbrich 3db3e93d87 docs: update Doxyfile to v1.9.4
- specify ./output/doxygen as main path for output
- use relative paths for subfolder output
2024-04-16 11:26:47 +02:00
aothms 27eb9d340a sphinx theme 2021-02-06 15:24:17 +00:00
aothms af6aed80da Documentation changes 2021-02-06 15:10:41 +00:00
aothms ea34c3de85 Changes to docs 2021-02-05 12:01:57 +00:00
Thomas Krijnen 6aeddcabc0 Delete file 2021-02-05 11:54:03 +01:00
Thomas Krijnen 2703dce209 Small changes 2021-02-05 11:52:05 +01:00
Thomas Krijnen 8648b16e00 Small changes to script 2021-02-05 11:41:44 +01:00
johltn 30fa59960d Clean branch 2021-01-16 14:42:34 +01:00
johltn 6444376ecd Script to generate docs outside CMake 2021-01-15 07:30:09 +01:00
johltn 6e4bb95e82 Update 2021-01-03 13:10:57 +01:00
johltn efea9d429e Verbose 2021-01-02 15:48:34 +01:00
johltn 424069893e Include ifcparse 2020-12-28 06:38:06 +01:00
johltn b6cf97a291 Change RST file title 2020-12-21 09:32:52 +01:00
johltn f8e57b04b0 Update 2020-11-08 11:30:40 +01:00
johltn 3ca2a8be39 Update 2020-11-08 10:42:17 +01:00
johltn 1eaa2ca8b4 Update Doxyfile 2020-11-07 19:30:51 +01:00
johltn e366c15dde Update conf.py 2020-11-07 19:12:33 +01:00
johltn 63f0c87920 Try to fix index.rst and also incude python docs 2020-11-07 18:55:39 +01:00
johltn 247a285b68 Test customized Doxyfile 2020-11-07 18:41:15 +01:00
johltn a75ced62ce Try first commit 2020-11-02 12:43:17 +01:00
johltn c263012287 Modify conf 2020-11-01 12:13:54 +01:00
johltn 5aae70875d Change doxygen output directory abd try to commit generated docs 2020-11-01 12:03:49 +01:00
johltn 0fb6d5a903 Re Comment python doc generation in CMake 2020-11-01 11:09:00 +01:00
johltn 9d6468bbf6 Install sphinx with apt-get 2020-11-01 08:12:01 +01:00
johltn cb0a5c90e3 Test sphinx directly from Travis 2020-10-31 20:02:04 +01:00
johltn 6267187950 New test 2020-10-31 19:44:09 +01:00
johltn 3575aff235 Comment test section 2020-10-31 19:15:24 +01:00
johltn 54d5d4cc63 Try pip install for sphinx 2020-10-31 16:35:35 +01:00
johltn f2bdcda369 Try without python docs generation 2020-10-31 15:31:23 +01:00
johltn 4020e9a1ce Update conf.py 2020-10-31 15:20:35 +01:00
johltn 1d51d6cac0 Update conf.py 2020-10-31 15:03:30 +01:00
johltn d1f8832af6 Cleaner RST file 2020-10-31 11:21:30 +01:00
johltn 6e589527db Update CMakeLists.txt 2020-10-29 20:55:42 +01:00
johltn cac5203523 Find Sphinx module 2020-10-29 20:43:24 +01:00