Favorites
PythonPart favorite files (.pyv) can contain parameters of a certain PythonPart (all of them or just a selection) together with their values. A typical use case for it is, when the user wants to place the PythonPart in DF with the same parameters over and over again, but wants to save time by not having to input the same values every time.
The three buttons on the bottom left side of a property palette are responsible for saving and loading a favorite file as well as resetting the values in the palette to the defaults defined in the .pyp file.
In a standard PythonPart this functionality works without further actions. In an Interactor the handling of favorite files must be implemented by the developer with the appropriate functions.
Favorite file in Interactor
The class BuildingElementListService provides methods for managing the favorite files. Use these methods inside special functions to properly handle the favorite files.
Example
The complete implementation of the favorites handling in an interactor PythonPart is shown in the example Line2DInteractor located in:
- ..\etc\PythonPartsExampleScripts\InteractorExamples\Line2DInteractor.py
- ..\etc\Examples\PythonParts\InteractorExamples\Line2DInteractor.pyp
Save favorite
To save the parameter values in the favorite file, implement the method execute_save_favorite in your interactor class. This method is called after the user have selected the saving path of the favorite file.
Example
def execute_save_favorite(self, file_name):
""" save the favorite data """
BuildingElementListService.write_to_file(file_name, self.build_ele_list)
The member function write_to_file reads the data from build_ele_list and writes it into the favorite file.
Note
Parameter persistency is being considered,
when saving the favorite file. Only parameters with the <Persistent>
tag
set to Favorite
or ModelAndFavorite
are being saved.
Read favorite
To read the parameter values from the favorite file, implement the function execute_load_favorite into your interactor class. This function is called after the user have selected the favorite file.
Example
def execute_load_favorite(self, file_name):
""" load the favorite data """
BuildingElementListService.read_from_file(file_name, self.build_ele_list)
self.palette_service.update_palette(-1, True) #(1)!
- Directly after reading the parameters the palette must be updated to see the new values
The method read_from_file reads the data from the favorite file and stores it into the build_ele_list.
Reset parameter values
When the user presses the reset button the function reset_param_values is called. To actually reset the values in the property palette to the defaults from the .pyp file, this method must be implemented into the Interactor class.
Example
def reset_param_values(self, _build_ele_list): #(1)!
""" reset the parameter values """
BuildingElementListService.reset_param_values(self.build_ele_list) #(2)!
palette_service.update_palette(-1, True) #(3)!
- Note that the old values from the property palette are being passed to the function...
- ... but we are not using them here as an argument for the reset function. We are resetting the actual building_element instead...
- ...and updating the palette directly afterwards.
Update parameter values
When the PythonPart is created as an interactor and the .pyp file is read outside the interactor in the PythonParts framework, saving and reading the favorite data is also executed in the framework.
To execute some additional functionality after reading the favorite data, the method update_after_favorite_read must be implemented into the Interactor class. This method is called after the name of the favorite file has been entered in the favorite file dialog and the data are read from the favorite file.
Example
def update_after_favorite_read(self):
"""
Update the data after a favorite read
"""
self.palette_service.update_palette(-1, True) #(1)!
- At least the update of the property palette should be done here
Default favorite file
The default favorite file of a PythonPart is saved under the following path:
..\Usr\local 1\tmp\_PythonPart_name_.pyv
Save default favorite
To save the current parameter values into the default favorite file in an Interactor PythonPart, use the method write_to_default_favorite_file.
Tip
We recommend implementing the saving of the current parameter values in a default favorite file
in the _del_
function of the interactor class, as this function is called after the
PythonPart is terminated. Here is an example:
Read default favorite
To read the parameter values from the default favorite file in an Interactor PythonPart, use the method read_from_default_favorite_file.
Tip
The best place to implement this method is directly after reading the data from the .pyp file.
result, build_ele_script, build_ele_list, control_props_list, \
build_ele_composite, part_name, file_name = \
build_ele_service.read_data_from_pyp(pyp_path + "\\Line2DInteractor.pal", str_table_service.str_table, False,
str_table_service.material_str_table)
if not result:
return
BuildingElementListService.read_from_default_favorite_file(build_ele_list)
Read last input
In a standard PythonPart, it is possible to save the parameter values from the currently
created PythonPart and use it as default values when accessing the PythonPart the next time.
To enable this functionality, the tag <ReadLastInput>
must be set to True in the <Script>
section
of the .pyp file:
In this case, when starting a PythonPart, the framework looks for the default favorite file. If it exists, the parameter values from the file are used. Otherwise the defaults from the .pyp file are used. When terminating the PythonPart, the .pyv file with the current parameter values is saved automatically in this directory, overriding the old one.
In an interactor PythonPart this feature must be implemented by the developer.
-
In a network installation expect here a username instead of
local
↩