fix some unicode errors in unrepr, show help

message when there are no command arguments
This commit is contained in:
Dimitur Kirov 2006-02-12 16:04:45 +00:00
parent 02124ea2e8
commit d19ce874ee
1 changed files with 21 additions and 19 deletions

View File

@ -308,10 +308,10 @@ class GajimRemote:
if command in self.commands: if command in self.commands:
command_props = self.commands[command] command_props = self.commands[command]
arguments_str = self.make_arguments_row(command_props[1]) arguments_str = self.make_arguments_row(command_props[1])
str = _('Usage: %s %s %s \n\t') % (BASENAME, command, str = _('Usage: %s %s %s \n\t %s') % (BASENAME, command,
arguments_str) arguments_str, command_props[0])
if len(command_props[1]) > 0: if len(command_props[1]) > 0:
str += command_props[0] + '\n\n' + _('Arguments:') + '\n' str += '\n\n' + _('Arguments:') + '\n'
for argument in command_props[1]: for argument in command_props[1]:
str += ' ' + argument[0] + ' - ' + argument[1] + '\n' str += ' ' + argument[0] + ' - ' + argument[1] + '\n'
return str return str
@ -349,8 +349,10 @@ class GajimRemote:
for val in prop_dict: for val in prop_dict:
if val is None: if val is None:
ret_str +='\t' ret_str +='\t'
elif isinstance(val, (unicode, int, str)): elif isinstance(val, (str, int)):
ret_str +='\t' + str(val) ret_str +='\t' + str(val)
elif isinstance(val, unicode):
ret_str +='\t' + val
elif isinstance(val, (list, tuple)): elif isinstance(val, (list, tuple)):
res = '' res = ''
for items in val: for items in val:
@ -373,13 +375,17 @@ class GajimRemote:
for items in val: for items in val:
res += self.print_info(level+1, items) res += self.print_info(level+1, items)
if res != '': if res != '':
if isinstance(res, str):
res = res.decode('utf-8')
ret_str += '%s%s: \n%s' % (spacing, key, res) ret_str += '%s%s: \n%s' % (spacing, key, res)
elif isinstance(val, dict): elif isinstance(val, dict):
res = self.print_info(level+1, val) res = self.print_info(level+1, val)
if res != '': if res != '':
ret_str += '%s%s: \n%s' % (spacing, key, res) ret_str += '%s%s: \n%s' % (spacing, key, res)
if isinstance(ret_str, unicode):
return ret_str.encode(locale.getpreferredencoding()) return ret_str.encode(locale.getpreferredencoding())
else:
return ret_str
def unrepr(self, serialized_data): def unrepr(self, serialized_data):
''' works the same as eval, but only for structural values, ''' works the same as eval, but only for structural values,
@ -472,6 +478,10 @@ class GajimRemote:
if not next or next[0] != ':': if not next or next[0] != ':':
send_error('Wrong string: %s' % (value)) send_error('Wrong string: %s' % (value))
val, next = self.unrepr(next[1:]) val, next = self.unrepr(next[1:])
if isinstance(key, str):
key = key.decode('utf-8')
if isinstance(val, str):
val = val.decode('utf-8')
_dict[key] = val _dict[key] = val
next = next.strip() next = next.strip()
if not next: if not next:
@ -494,6 +504,8 @@ class GajimRemote:
next = next.strip() next = next.strip()
if not next: if not next:
send_error('Wrong string: %s' % val) send_error('Wrong string: %s' % val)
if isinstance(val, str):
val = val.decode('utf-8')
_tuple.append(val) _tuple.append(val)
next = next.strip() next = next.strip()
if not next: if not next:
@ -537,22 +549,12 @@ Type "%s help %s" for more info') % (args[argv_len][0], BASENAME, self.command))
INTERFACE, SERVICE, OBJ_PATH) INTERFACE, SERVICE, OBJ_PATH)
self.loop.quit() self.loop.quit()
# FIXME - didn't find more clever way for the below method.
# method(sys.argv[2:]) doesn't work, cos sys.argv[2:] is a tuple
def call_remote_method(self): def call_remote_method(self):
''' calls self.method with arguments from sys.argv[2:] ''' ''' calls self.method with arguments from sys.argv[2:] '''
try: try:
if self.argv_len == 2: sys.argv.pop(0)
res = self.method() sys.argv.pop(0)
elif self.argv_len == 3: res = self.method(*sys.argv)
res = self.method(sys.argv[2])
elif self.argv_len == 4:
res = self.method(sys.argv[2], sys.argv[3])
elif self.argv_len == 5:
res = self.method(sys.argv[2], sys.argv[3], sys.argv[4])
elif self.argv_len == 6:
res = self.method(sys.argv[2], sys.argv[3], sys.argv[4],
sys.argv[5])
return res return res
except Exception, e: except Exception, e:
print str(e) print str(e)