@@ -745,85 +745,65 @@ def _rename_results_in_clipboard(self, prefix: str) -> None:
745745 Args:
746746 prefix: Prefix to add to result titles
747747 """
748- # Handle geometry results
748+ # Handle geometry results (new unified format)
749749 geometry_keys = [
750750 k
751- for k in self .__metadata_clipboard .keys ()
752- if k . startswith ( "Geometry_" ) and k . endswith ( "_array" )
751+ for k , v in self .__metadata_clipboard .items ()
752+ if GeometryAdapter . match ( k , v )
753753 ]
754754
755- for array_key in geometry_keys :
755+ for dict_key in geometry_keys :
756756 try :
757- # Extract title from key: "Geometry_title_array" -> "title"
758- title = array_key [9 :- 6 ] # Remove "Geometry_" and "_array"
757+ # Get the geometry data
758+ geometry_data = self .__metadata_clipboard [dict_key ]
759+
760+ # Update the title in the geometry data
761+ if isinstance (geometry_data , dict ) and "title" in geometry_data :
762+ new_title = prefix + geometry_data ["title" ]
763+ geometry_data = geometry_data .copy () # Don't modify original
764+ geometry_data ["title" ] = new_title
765+
766+ # Create new key with updated title
767+ new_dict_key = (
768+ f"{ GeometryAdapter .META_PREFIX } { new_title } "
769+ f"{ GeometryAdapter .SUFFIX } "
770+ )
759771
760- # Find all related keys for this geometry result
761- title_key = f"Geometry_ { title } _title"
762- shape_key = f"Geometry_ { title } _shape"
772+ # Remove old entry and add new one
773+ del self . __metadata_clipboard [ dict_key ]
774+ self . __metadata_clipboard [ new_dict_key ] = geometry_data
763775
764- if (
765- title_key in self .__metadata_clipboard
766- and shape_key in self .__metadata_clipboard
767- ):
768- # Get the values
769- array_val = self .__metadata_clipboard [array_key ]
770- title_val = self .__metadata_clipboard [title_key ]
771- shape_val = self .__metadata_clipboard [shape_key ]
772-
773- # Create new keys with prefix
774- new_title = prefix + title_val
775- new_array_key = f"Geometry_{ new_title } _array"
776- new_title_key = f"Geometry_{ new_title } _title"
777- new_shape_key = f"Geometry_{ new_title } _shape"
778-
779- # Remove old entries
780- del self .__metadata_clipboard [array_key ]
781- del self .__metadata_clipboard [title_key ]
782- del self .__metadata_clipboard [shape_key ]
783-
784- # Add new entries
785- self .__metadata_clipboard [new_array_key ] = array_val
786- self .__metadata_clipboard [new_title_key ] = new_title
787- self .__metadata_clipboard [new_shape_key ] = shape_val
788-
789- except (KeyError , ValueError , IndexError ):
776+ except (KeyError , ValueError , IndexError , TypeError ):
790777 # If we can't process this geometry result, leave it as is
791778 continue
779+ continue
792780
793- # Handle table results (similar logic )
781+ # Handle table results (new unified format )
794782 table_keys = [
795- k
796- for k in self .__metadata_clipboard .keys ()
797- if k .startswith ("Table_" ) and k .endswith ("_array" )
783+ k for k , v in self .__metadata_clipboard .items () if TableAdapter .match (k , v )
798784 ]
799785
800- for array_key in table_keys :
786+ for data_key in table_keys :
801787 try :
802- # Extract title from key: "Table_title_array" -> "title"
803- title = array_key [6 :- 6 ] # Remove "Table_" and "_array"
804-
805- # Find all related keys for this table result
806- title_key = f"Table_{ title } _title"
807-
808- if title_key in self .__metadata_clipboard :
809- # Get the values
810- array_val = self .__metadata_clipboard [array_key ]
811- title_val = self .__metadata_clipboard [title_key ]
812-
813- # Create new keys with prefix
814- new_title = prefix + title_val
815- new_array_key = f"Table_{ new_title } _array"
816- new_title_key = f"Table_{ new_title } _title"
817-
818- # Remove old entries
819- del self .__metadata_clipboard [array_key ]
820- del self .__metadata_clipboard [title_key ]
788+ # Get the table data
789+ table_data = self .__metadata_clipboard [data_key ]
790+
791+ # Update the title in the table data
792+ if isinstance (table_data , dict ) and "title" in table_data :
793+ new_title = prefix + table_data ["title" ]
794+ table_data = table_data .copy () # Don't modify original
795+ table_data ["title" ] = new_title
796+
797+ # Create new key with updated title
798+ new_data_key = (
799+ f"{ TableAdapter .META_PREFIX } { new_title } { TableAdapter .SUFFIX } "
800+ )
821801
822- # Add new entries
823- self .__metadata_clipboard [new_array_key ] = array_val
824- self .__metadata_clipboard [new_title_key ] = new_title
802+ # Remove old entry and add new one
803+ del self .__metadata_clipboard [data_key ]
804+ self .__metadata_clipboard [new_data_key ] = table_data
825805
826- except (KeyError , ValueError , IndexError ):
806+ except (KeyError , ValueError , IndexError , TypeError ):
827807 # If we can't process this table result, leave it as is
828808 continue
829809
@@ -845,17 +825,17 @@ def paste_metadata(self, param: PasteMetadataParam | None = None) -> None:
845825 metadata [ROI_KEY ] = self .__metadata_clipboard [ROI_KEY ]
846826 if param .keep_geometry :
847827 for key , value in self .__metadata_clipboard .items ():
848- if key . startswith ( "Geometry_" ):
828+ if GeometryAdapter . match ( key , value ):
849829 metadata [key ] = value
850830 if param .keep_tables :
851831 for key , value in self .__metadata_clipboard .items ():
852- if key . startswith ( "Table_" ):
832+ if TableAdapter . match ( key , value ):
853833 metadata [key ] = value
854834 if param .keep_other :
855835 for key , value in self .__metadata_clipboard .items ():
856836 if (
857- not key . startswith ( "Geometry_" )
858- and not key . startswith ( "Table_" )
837+ not GeometryAdapter . match ( key , value )
838+ and not TableAdapter . match ( key , value )
859839 and key not in (ROI_KEY ,)
860840 ):
861841 metadata [key ] = value
0 commit comments