def list_menu_multi(self, options, title="<STR_LIT>", message="<STR_LIT>",<EOL>defaults: list=None, **kwargs):
if defaults is None:<EOL><INDENT>defaults = []<EOL><DEDENT>choices = []<EOL>optionNum = <NUM_LIT:0><EOL>for option in options:<EOL><INDENT>choices.append(str(optionNum))<EOL>choices.append(option)<EOL>if option in defaults:<EOL><INDENT>choices.append("<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>choices.append("<STR_LIT>")<EOL><DEDENT>optionNum += <NUM_LIT:1><EOL><DEDENT>return_code, output = self._run_kdialog(title, ["<STR_LIT>", "<STR_LIT>", message] + choices, kwargs)<EOL>results = output.split()<EOL>choices = [options[int(choice_index)] for choice_index in results]<EOL>return DialogData(return_code, choices)<EOL>
Show a multiple-selection list menu

Usage: C{dialog.list_menu_multi(options, title="Choose one or more values", message="Choose one or more values", defaults=[], **kwargs)}

@param options: list of options (strings) for the dialog
@param title: window title for the dialog
@param message: message displayed above the list
@param defaults: list of default values to be selected
@return: a tuple containing the exit code and user choice
@rtype: C{DialogData(int, List[str])}