From 7cd90128add168a27fc6e9b93756fbc0a3c65f8f Mon Sep 17 00:00:00 2001 From: Jonathan McCrohan Date: Sat, 3 Aug 2013 01:23:32 +0100 Subject: Imported Upstream version 1.6.1 --- transmission-remote-cli | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'transmission-remote-cli') diff --git a/transmission-remote-cli b/transmission-remote-cli index bbb3ea9..1dcce92 100755 --- a/transmission-remote-cli +++ b/transmission-remote-cli @@ -16,10 +16,10 @@ # http://www.gnu.org/licenses/gpl-3.0.txt # ######################################################################## -VERSION = '1.6.0' +VERSION = '1.6.1' TRNSM_VERSION_MIN = '1.90' -TRNSM_VERSION_MAX = '2.80' +TRNSM_VERSION_MAX = '2.81' RPC_VERSION_MIN = 8 RPC_VERSION_MAX = 15 @@ -61,10 +61,11 @@ import curses.ascii from textwrap import wrap from subprocess import call, Popen import netrc -import glob import operator import urlparse +locale.setlocale(locale.LC_ALL, '') +ENCODING = locale.getpreferredencoding() or 'UTF-8' # optional features provided by non-standard modules features = {'dns':False, 'geoip':False, 'ipy':False} @@ -865,9 +866,6 @@ class Interface: self.compact_torrentlist = False # draw only one line for each torrent in compact mode self.exit_now = False - locale.setlocale(locale.LC_ALL, '') - self.encoding = locale.getpreferredencoding() or 'UTF-8' - self.keybindings = { ord('?'): self.call_list_key_bindings, curses.KEY_F1: self.call_list_key_bindings, @@ -990,7 +988,7 @@ class Interface: curses.endwin() def enc(self, text): - return text.encode(self.encoding, 'replace') + return text.encode(ENCODING, 'replace') def get_screen_size(self): time.sleep(0.1) # prevents curses.error on rapid resizing @@ -2788,6 +2786,8 @@ class Interface: win = self.window(height, width, message=message) win.keypad(True) show_cursor() + if not isinstance(input, unicode): + input = unicode(input, ENCODING) index = len(input) while True: # Cut the text into pages, each as long as the text field @@ -2798,7 +2798,7 @@ class Interface: color = (curses.color_pair(self.colors.id('dialog_important')) if self.highlight_dialog else curses.color_pair(self.colors.id('dialog'))) - win.addstr(height - 2, 2, displaytext.ljust(textwidth), color) + win.addstr(height - 2, 2, self.enc(displaytext.ljust(textwidth)), color) win.move(height - 2, displayindex + 2) c = win.getch() if c == 27 or c == curses.KEY_BREAK: @@ -2834,15 +2834,23 @@ class Interface: hide_cursor() return input elif c >= 32 and c < 127: - input = input[:index] + chr(c) + (index < len(input) and input[index:] or '') + input = input[:index] + unicode(chr(c), ENCODING) + (index < len(input) and input[index:] or '') index += 1 if on_change: on_change(input) elif c == ord('\t') and tab_complete: - possible_choices = glob.glob(tilde2homedir(input)+'*') + (dirname, filename) = os.path.split(tilde2homedir(input)) + if not dirname: + dirname = unicode(os.getcwd()) + try: + possible_choices = [ choice for choice in os.listdir(dirname) + if choice.startswith(filename) ] + except OSError: + continue; if tab_complete == 'dirs': - possible_choices = [ d for d in possible_choices if os.path.isdir(d) ] + possible_choices = [ d for d in possible_choices + if os.path.isdir(os.path.join(dirname, d)) ] if(possible_choices): - input = os.path.commonprefix(possible_choices) + input = os.path.join(dirname, os.path.commonprefix(possible_choices)) if len(possible_choices) == 1 and os.path.isdir(input) and input.endswith(os.sep) == False: input += os.sep input = homedir2tilde(input) @@ -3308,7 +3316,7 @@ def ljust_columns(text, max_width, padchar=' '): def len_columns(text): """ Returns the amount of columns that would occupy. """ if type(text) == type(str()): - text = unicode(text) + text = unicode(text, ENCODING) columns = 0 for character in text: columns += 2 if unicodedata.east_asian_width(character) in ('W', 'F') else 1 -- cgit v1.2.3