diff --git a/rtv/config.py b/rtv/config.py index 844c375..8f97d67 100644 --- a/rtv/config.py +++ b/rtv/config.py @@ -80,6 +80,9 @@ def build_parser(): help='Open external links using programs defined in the mailcap config') parser.add_argument( '-V', '--version', action='version', version='rtv '+__version__) + parser.add_argument( + '--no-flash', dest='flash', action='store_const', const=False, + help='Disable screen flashing') return parser @@ -264,7 +267,8 @@ class Config(object): 'oauth_redirect_port': partial(config.getint, 'rtv'), 'oauth_scope': lambda x: rtv[x].split(','), 'max_comment_cols': partial(config.getint, 'rtv'), - 'hide_username': partial(config.getboolean, 'rtv') + 'hide_username': partial(config.getboolean, 'rtv'), + 'flash': partial(config.getboolean, 'rtv') } for key, func in params.items(): diff --git a/rtv/templates/rtv.cfg b/rtv/templates/rtv.cfg index d52909e..e9794d6 100644 --- a/rtv/templates/rtv.cfg +++ b/rtv/templates/rtv.cfg @@ -16,6 +16,9 @@ ascii = False ; Turn on monochrome mode to disable color. monochrome = False +; Flash when an invalid action is executed. +flash = True + ; Enable debugging by logging all HTTP requests and errors to the given file. ;log = /tmp/rtv.log diff --git a/rtv/terminal.py b/rtv/terminal.py index 08febfe..8f71e99 100644 --- a/rtv/terminal.py +++ b/rtv/terminal.py @@ -118,12 +118,14 @@ class Terminal(object): self._display = display return self._display - @staticmethod - def flash(): + def flash(self): """ Flash the screen to indicate that an action was invalid. """ - return curses.flash() + if self.config['flash']: + return curses.flash() + else: + return None @staticmethod def curs_set(val): diff --git a/tests/test_config.py b/tests/test_config.py index 45a05ba..15075e5 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -91,7 +91,8 @@ def test_config_get_args(): '--copy-config', '--enable-media', '--theme', 'molokai', - '--list-themes'] + '--list-themes', + '--no-flash'] with mock.patch('sys.argv', ['rtv']): config_dict = Config.get_args() @@ -115,6 +116,7 @@ def test_config_get_args(): assert config['enable_media'] is True assert config['theme'] == 'molokai' assert config['list_themes'] is True + assert config['flash'] is False def test_config_link_deprecated(): @@ -148,7 +150,8 @@ def test_config_from_file(): 'enable_media': True, 'max_comment_cols': 150, 'hide_username': True, - 'theme': 'molokai'} + 'theme': 'molokai', + 'flash': True} bindings = { 'REFRESH': 'r, ', diff --git a/tests/test_terminal.py b/tests/test_terminal.py index cb7c2a0..831de36 100644 --- a/tests/test_terminal.py +++ b/tests/test_terminal.py @@ -93,6 +93,13 @@ def test_terminal_functions(terminal): terminal.stdscr.addch.assert_called_with(3, 5, 'ch', 'attr') +def test_terminal_no_flash(terminal): + + terminal.config['flash'] = False + terminal.flash() + assert not curses.flash.called + + def test_terminal_clean_ascii(terminal): terminal.config['ascii'] = True @@ -662,4 +669,4 @@ def test_set_theme_no_colors(terminal, stdscr): assert not terminal.theme.use_color terminal.set_theme(Theme(use_color=True)) - assert not terminal.theme.use_color \ No newline at end of file + assert not terminal.theme.use_color