예제 #1
0
 def set(self, the_input):
     """Completion for /set"""
     args = common.shell_split(the_input.text)
     n = the_input.get_argument_position(quoted=True)
     if n >= len(args):
         args.append('')
     if n == 1:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return Completion(the_input.new_completion, [], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = ['%s|%s' % (plugin_name, section) for section in plugin.config.sections()]
         else:
             end_list = set(config.options('Poezio'))
             end_list.update(config.default.get('Poezio', {}))
             end_list = list(end_list)
             end_list.sort()
     elif n == 2:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return Completion(the_input.new_completion, [''], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = set(plugin.config.options(section or plugin_name))
             if plugin.config.default:
                 end_list.update(plugin.config.default.get(section or plugin_name, {}))
             end_list = list(end_list)
             end_list.sort()
         elif not config.has_option('Poezio', args[1]):
             if config.has_section(args[1]):
                 end_list = config.options(args[1])
                 end_list.append('')
             else:
                 end_list = []
         else:
             end_list = [str(config.get(args[1], '')), '']
     elif n == 3:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return Completion(the_input.new_completion, [''], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = [str(plugin.config.get(args[2], '', section or plugin_name)), '']
         else:
             if not config.has_section(args[1]):
                 end_list = ['']
             else:
                 end_list = [str(config.get(args[2], '', args[1])), '']
     else:
         return False
     return Completion(the_input.new_completion, end_list, n, quotify=True)
예제 #2
0
 def set(self, the_input):
     """Completion for /set"""
     args = common.shell_split(the_input.text)
     n = the_input.get_argument_position(quoted=True)
     if n >= len(args):
         args.append('')
     if n == 1:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return the_input.new_completion([], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = ['%s|%s' % (plugin_name, section) for section in plugin.config.sections()]
         else:
             end_list = set(config.options('Poezio'))
             end_list.update(config.default.get('Poezio', {}))
             end_list = list(end_list)
             end_list.sort()
     elif n == 2:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return the_input.new_completion([''], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = set(plugin.config.options(section or plugin_name))
             if plugin.config.default:
                 end_list.update(plugin.config.default.get(section or plugin_name, {}))
             end_list = list(end_list)
             end_list.sort()
         elif not config.has_option('Poezio', args[1]):
             if config.has_section(args[1]):
                 end_list = config.options(args[1])
                 end_list.append('')
             else:
                 end_list = []
         else:
             end_list = [str(config.get(args[1], '')), '']
     elif n == 3:
         if '|' in args[1]:
             plugin_name, section = args[1].split('|')[:2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 return the_input.new_completion([''], n, quotify=True)
             plugin = self.core.plugin_manager.plugins[plugin_name]
             end_list = [str(plugin.config.get(args[2], '', section or plugin_name)), '']
         else:
             if not config.has_section(args[1]):
                 end_list = ['']
             else:
                 end_list = [str(config.get(args[2], '', args[1])), '']
     else:
         return False
     return the_input.new_completion(end_list, n, quotify=True)
예제 #3
0
 def set_default(self, the_input):
     """ Completion for /set_default
     """
     args = common.shell_split(the_input.text)
     n = the_input.get_argument_position(quoted=True)
     if n >= len(args):
         args.append('')
     if n == 1 or (n == 2 and config.has_section(args[1])):
         return Completion(self.set, the_input)
     return False
예제 #4
0
 def set_default(self, the_input):
     """ Completion for /set_default
     """
     args = common.shell_split(the_input.text)
     n = the_input.get_argument_position(quoted=True)
     if n >= len(args):
         args.append('')
     if n == 1 or (n == 2 and config.has_section(args[1])):
         return Completion(self.set, the_input)
     return False
예제 #5
0
 def set(self, args):
     """
     /set [module|][section] <option> [value]
     """
     if args is None or len(args) == 0:
         config_dict = config.to_dict()
         lines = []
         theme = get_theme()
         for section_name, section in config_dict.items():
             lines.append(
                 '\x19%(section_col)s}[%(section)s]\x19o' % {
                     'section': section_name,
                     'section_col': dump_tuple(
                         theme.COLOR_INFORMATION_TEXT),
                 })
             for option_name, option_value in section.items():
                 lines.append(
                     '%s\x19%s}=\x19o%s' %
                     (option_name, dump_tuple(
                         theme.COLOR_REVISIONS_MESSAGE), option_value))
         info = ('Current  options:\n%s' % '\n'.join(lines), 'Info')
     elif len(args) == 1:
         option = args[0]
         value = config.get(option)
         if value is None and '=' in option:
             args = option.split('=', 1)
         info = ('%s=%s' % (option, value), 'Info')
     if len(args) == 2:
         if '|' in args[0]:
             plugin_name, section = args[0].split('|')[:2]
             if not section:
                 section = plugin_name
             option = args[1]
             if plugin_name not in self.core.plugin_manager.plugins:
                 file_name = self.core.plugin_manager.plugins_conf_dir
                 file_name = os.path.join(file_name, plugin_name + '.cfg')
                 plugin_config = PluginConfig(file_name, plugin_name)
             else:
                 plugin_config = self.core.plugin_manager.plugins[
                     plugin_name].config
             value = plugin_config.get(option, default='', section=section)
             info = ('%s=%s' % (option, value), 'Info')
         else:
             possible_section = args[0]
             if config.has_section(possible_section):
                 section = possible_section
                 option = args[1]
                 value = config.get(option, section=section)
                 info = ('%s=%s' % (option, value), 'Info')
             else:
                 option = args[0]
                 value = args[1]
                 info = config.set_and_save(option, value)
                 self.core.trigger_configuration_change(option, value)
     elif len(args) == 3:
         if '|' in args[0]:
             plugin_name, section = args[0].split('|')[:2]
             if not section:
                 section = plugin_name
             option = args[1]
             value = args[2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 file_name = self.core.plugin_manager.plugins_conf_dir
                 file_name = os.path.join(file_name, plugin_name + '.cfg')
                 plugin_config = PluginConfig(file_name, plugin_name)
             else:
                 plugin_config = self.core.plugin_manager.plugins[
                     plugin_name].config
             info = plugin_config.set_and_save(option, value, section)
         else:
             if args[0] == '.':
                 name = safeJID(self.core.current_tab().name).bare
                 if not name:
                     self.core.information(
                         'Invalid tab to use the "." argument.', 'Error')
                     return
                 section = name
             else:
                 section = args[0]
             option = args[1]
             value = args[2]
             info = config.set_and_save(option, value, section)
             self.core.trigger_configuration_change(option, value)
     elif len(args) > 3:
         return self.help('set')
     self.core.information(*info)
예제 #6
0
파일: commands.py 프로젝트: louiz/poezio
 def set(self, args):
     """
     /set [module|][section] <option> [value]
     """
     if args is None or len(args) == 0:
         config_dict = config.to_dict()
         lines = []
         theme = get_theme()
         for section_name, section in config_dict.items():
             lines.append(
                 '\x19%(section_col)s}[%(section)s]\x19o' % {
                     'section': section_name,
                     'section_col': dump_tuple(
                         theme.COLOR_INFORMATION_TEXT),
                 })
             for option_name, option_value in section.items():
                 lines.append(
                     '%s\x19%s}=\x19o%s' %
                     (option_name, dump_tuple(
                         theme.COLOR_REVISIONS_MESSAGE), option_value))
         info = ('Current  options:\n%s' % '\n'.join(lines), 'Info')
     elif len(args) == 1:
         option = args[0]
         value = config.get(option)
         if value is None and '=' in option:
             args = option.split('=', 1)
         info = ('%s=%s' % (option, value), 'Info')
     if len(args) == 2:
         if '|' in args[0]:
             plugin_name, section = args[0].split('|')[:2]
             if not section:
                 section = plugin_name
             option = args[1]
             if plugin_name not in self.core.plugin_manager.plugins:
                 file_name = self.core.plugin_manager.plugins_conf_dir / (
                     plugin_name + '.cfg')
                 plugin_config = PluginConfig(file_name, plugin_name)
             else:
                 plugin_config = self.core.plugin_manager.plugins[
                     plugin_name].config
             value = plugin_config.get(option, default='', section=section)
             info = ('%s=%s' % (option, value), 'Info')
         else:
             possible_section = args[0]
             if config.has_section(possible_section):
                 section = possible_section
                 option = args[1]
                 value = config.get(option, section=section)
                 info = ('%s=%s' % (option, value), 'Info')
             else:
                 option = args[0]
                 value = args[1]
                 info = config.set_and_save(option, value)
                 self.core.trigger_configuration_change(option, value)
     elif len(args) == 3:
         if '|' in args[0]:
             plugin_name, section = args[0].split('|')[:2]
             if not section:
                 section = plugin_name
             option = args[1]
             value = args[2]
             if plugin_name not in self.core.plugin_manager.plugins:
                 file_name = self.core.plugin_manager.plugins_conf_dir / (
                     plugin_name + '.cfg')
                 plugin_config = PluginConfig(file_name, plugin_name)
             else:
                 plugin_config = self.core.plugin_manager.plugins[
                     plugin_name].config
             info = plugin_config.set_and_save(option, value, section)
         else:
             if args[0] == '.':
                 name = safeJID(self.core.tabs.current_tab.name).bare
                 if not name:
                     self.core.information(
                         'Invalid tab to use the "." argument.', 'Error')
                     return
                 section = name
             else:
                 section = args[0]
             option = args[1]
             value = args[2]
             info = config.set_and_save(option, value, section)
             self.core.trigger_configuration_change(option, value)
     elif len(args) > 3:
         return self.help('set')
     self.core.information(*info)