@@ -485,6 +485,54 @@ def result(self):
485485 def result (self , value ):
486486 self ._result = value
487487
488+ class CheckBoxField :
489+ """
490+ ``CheckBoxField`` prompts the user to choose a yes/no option in a checkbox.
491+ Result is stored in self.result as a boolean value.
492+
493+ :param str prompt: Prompt to be presented to the user
494+ :param Optional[bool]: Optional boolean value for the default setting of the checkbox. \
495+ by default set to 'false'
496+ """
497+ def __init__ (self , prompt , default = None ):
498+ self ._prompt = prompt
499+ self ._default = default
500+ self ._result = None
501+
502+ def _fill_core_struct (self , value ):
503+ value .type = FormInputFieldType .CheckBoxFormField
504+ value .prompt = self ._prompt
505+ value .hasDefault = self ._default is not None
506+ if self ._default is not None :
507+ value .boolDefault = self ._default
508+
509+ def _fill_core_result (self , value ):
510+ self ._boolResult = value .result
511+
512+ @property
513+ def prompt (self ):
514+ return self ._prompt
515+
516+ @prompt .setter
517+ def prompt (self , value ):
518+ self ._prompt = value
519+
520+ @property
521+ def result (self ):
522+ return self ._result
523+
524+ @result .setter
525+ def result (self , value ):
526+ self ._result = value
527+
528+ @property
529+ def default (self ):
530+ return self ._default
531+
532+ @default .setter
533+ def default (self , value ):
534+ self ._default = value
535+
488536
489537class InteractionHandler :
490538 _interaction_handler = None
@@ -505,6 +553,7 @@ def __init__(self):
505553 self ._cb .getOpenFileNameInput = self ._cb .getOpenFileNameInput .__class__ (self ._get_open_filename_input )
506554 self ._cb .getSaveFileNameInput = self ._cb .getSaveFileNameInput .__class__ (self ._get_save_filename_input )
507555 self ._cb .getDirectoryNameInput = self ._cb .getDirectoryNameInput .__class__ (self ._get_directory_name_input )
556+ self ._cb .getCheckboxInput = self ._cb .getCheckboxInput .__class__ (self ._get_checkbox_input )
508557 self ._cb .getFormInput = self ._cb .getFormInput .__class__ (self ._get_form_input )
509558 self ._cb .showMessageBox = self ._cb .showMessageBox .__class__ (self ._show_message_box )
510559 self ._cb .openUrl = self ._cb .openUrl .__class__ (self ._open_url )
@@ -714,6 +763,12 @@ def _get_form_input(self, ctxt, fields, count, title):
714763 default = fields [i ].stringDefault if fields [i ].hasDefault else None
715764 )
716765 )
766+ elif fields [i ].type == FormInputFieldType .CheckBoxFormField :
767+ field_objs .append (
768+ CheckBoxField (
769+ fields [i ].prompt , default = fields [i ].boolDefault if fields [i ].hasDefault else None
770+ )
771+ )
717772 else :
718773 field_objs .append (LabelField (fields [i ].prompt ))
719774 if not self .get_form_input (field_objs , title ):
@@ -1361,6 +1416,19 @@ def get_directory_name_input(prompt: str, default_name: str = ""):
13611416 core .free_string (value )
13621417 return result .decode ("utf-8" )
13631418
1419+ def get_checkbox_input (prompt : str , title : str ):
1420+ """
1421+ ``get_checkbox_input`` prompts the user for a checkbox input, and returns True if the checkbox is checked, otherwise returns False.
1422+ :param prompt: String to prompt with
1423+ :param title: Title of the window when executed in the UI
1424+ :rtype: bool indicating the state of the checkbox
1425+ """
1426+ value = ctypes .c_bool ()
1427+ if not core .BNGetCheckboxInput (value , prompt , title ):
1428+ return None
1429+ result = value .value
1430+ assert result is not None
1431+ return result
13641432
13651433def get_form_input (fields , title ):
13661434 """
0 commit comments