Commit Graph

319 Commits

Author SHA1 Message Date
Florian Bruhin
36adaf0cf3 Simplify argument handling for DownloadManager. 2015-08-06 20:41:57 +02:00
Florian Bruhin
46f3be2df7 Add rapid hinting for downloads. 2015-08-06 19:09:21 +02:00
Florian Bruhin
0330adf284 Filter links for :navigate. 2015-08-03 23:21:20 +02:00
Florian Bruhin
7b8490b6c0 Fix 'an user' spelling. 2015-06-29 17:49:19 +02:00
Florian Bruhin
163bc2e12e Add GUIProcess.
This aims to unify the code which spawns a process and then shows statusbar
notifications when it exited, etc.
2015-06-11 20:30:03 +02:00
Florian Bruhin
17bb9fc21c Use QProcess instead of subprocess.
Closes #646.
Fixes #688.
2015-06-11 20:28:04 +02:00
Florian Bruhin
564a589bc6 Fix indent. 2015-05-06 23:36:01 +02:00
Florian Bruhin
9ceb43ec44 Make F (:hint tab) honour background-tabs.
Fixes #621.
2015-05-06 23:25:42 +02:00
Florian Bruhin
98596d439f Emit ClickTarget from HintManager.start_hinting.
This is much clearer than transmitting a string which must match the
ClickTarget enum.
2015-05-06 23:17:23 +02:00
Florian Bruhin
2f0b976bca Leave and re-enter hint mode when double-hinting.
See #613.
2015-05-06 22:38:08 +02:00
Florian Bruhin
7439586334 Move special params to cmdutils.register decorator
See #637.
2015-04-20 19:33:05 +02:00
Florian Bruhin
f93eef848c Store QUTE_TEXT/QUTE_HTML in files for userscripts.
Fixes #644.
2015-04-20 07:50:47 +02:00
Florian Bruhin
7160a89cb9 Fix NameError in hints.py. 2015-04-09 17:47:09 +02:00
Florian Bruhin
2d8df76609 Add $QUTE_HTML and $QUTE_TEXT for userscripts. 2015-04-09 17:45:16 +02:00
Florian Bruhin
8ebac8d38c Various spelling fixes. 2015-03-31 21:11:47 +02:00
Florian Bruhin
b2427701fa Handle element webFrame being None when hinting. 2015-03-29 19:52:30 +02:00
Florian Bruhin
565303ebcd Fix hinting when page has no URL set yet. 2015-03-20 08:35:33 +01:00
Florian Bruhin
d87a1bb2b4 Add a hints -> scatter option.
This is enabled by default to keep the same default behaviour which is like
Vimium - mixing e.g. single-char letters and double-char letters, and
scattering/shuffling the labels to have an uniform hint key distribution.

If disabled, the behaviour is more similiar to dwb, which has a fixed hint
string length and simply fills the string starting with the first possible hint
char.
2015-03-10 21:19:47 +01:00
Florian Bruhin
2f0522ebb0 Add a --rapid option to :hint, remove rapid target
This makes it possible to use rapid hinting for the run/hover/userscript/spawn
targets as well, and makes more sense anyways.
2015-03-10 19:40:30 +01:00
Florian Bruhin
a76868c0f4 Refactor how click/hint open targets are handled. 2015-02-26 20:41:04 +01:00
Florian Bruhin
a12dee8898 hints: Include button in buttons().
From the QMouseEvent::buttons documentation:

    For mouse move events, this is all buttons that are pressed down. For mouse
    press and double click events this includes the button that caused the
    event. For mouse release events this excludes the button that caused the
    event.
2015-02-26 20:12:48 +01:00
Florian Bruhin
ddb39275eb Simulate Ctrl-click when hinting in new tab/win.
This works around the fact some pages (e.g. github) load their content via AJAX
on a normal left click, so we'll never get acceptNavigationRequest and thus
can't open them in a new tab.

Fixes #488.
2015-02-26 20:11:13 +01:00
Florian Bruhin
0d9bf5e2c9 Fix lint. 2015-02-26 06:13:27 +01:00
Samir Benmendil
81af41d77f Add option to set minimum number of chars in hints 2015-02-26 00:49:50 +00:00
Florian Bruhin
0fcd016427 Move cursor to end of textboxes when hinting. 2015-02-25 19:56:03 +01:00
Florian Bruhin
56b0ae2b6e Get rid of mainwindow.MainWindow.spawn. 2015-02-16 22:56:12 +01:00
Florian Bruhin
18b58b2001 Set a higher z-index for hint labels.
This fixes hinting on the youtube top bar.

Fixes #496.
2015-02-02 06:35:45 +01:00
Florian Bruhin
aae33a0308 Handle another webelem.IsNullError with hints. 2015-01-16 09:09:12 +01:00
Florian Bruhin
77df4c7241 Add !important to all hint properties. 2015-01-06 17:10:54 +01:00
Error 800
82ee78b3db Added !important to hint styles
Prevents websites from overriding hint styles
2015-01-06 16:23:45 +01:00
Error 800
c008ee8dd7 Added !important to hint styles
Prevents websites from overriding hint styles
2015-01-06 16:13:28 +01:00
Error 800
ce5629eab3 Fixed uppercase hints option
Corrected CSS property from 'texttransform' to 'text-transform'
2015-01-05 16:20:45 +01:00
Florian Bruhin
efe96462c9 Pass more useful information to userscripts.
Closes #379.
2015-01-04 20:16:15 +01:00
Florian Bruhin
013f906c3b hints: Small cleanup (add _show_url_error method). 2015-01-04 20:15:45 +01:00
Florian Bruhin
450d1ab70d Update copyright years 2015-01-03 15:51:31 +01:00
Florian Bruhin
03ac8874ff Rewrite keymode handling to use only one mode.
Fixes #417.
Fixes #418.
See 4ab5d2df28.
2014-12-28 00:01:27 +01:00
Florian Bruhin
67001665a2 Cleanups in hint.py. 2014-12-13 00:30:35 +01:00
Johannes Altmanninger
d0bed460eb Hints: Use the src html attribute in addition to href in _resolve_url.
See issue #286
2014-12-12 18:40:12 +01:00
Johannes Altmanninger
582e3e57e9 Add hint target 'run' to execute a command based on a hint URL.
Fixes Issue #285.
The command is not preceded by a colon because there is no need to
distinguish between a search and a command.
2014-12-12 18:17:58 +01:00
Florian Bruhin
841e31283c hints: Store id() of destroyed frames.
Fixes #305. #152 should still be okay.
2014-12-12 01:38:13 +01:00
Florian Bruhin
aefa637bc5 Check if command text is valid when hinting. 2014-12-11 22:16:56 +01:00
Florian Bruhin
d0b5f2087a Fix un-hiding of hints. 2014-12-10 23:22:25 +01:00
Florian Bruhin
d94f848c82 Ignore isNullError while handling label elements.
Fixes #295 (hopefully for real this time!)
2014-12-02 21:27:06 +01:00
Florian Bruhin
99fb516aa3 Never disconnect signal from destroyed frames.
Fixes #152 - hopefully really this time!
2014-12-02 21:09:03 +01:00
Florian Bruhin
9fa036ecce Remove logging for #152.
This reverts a1ba05ff08.
2014-12-01 22:29:32 +01:00
Florian Bruhin
e8a6238028 Clean up hint labels and frames before clicking link.
Fixes #152.
Hopefully fixes #295.
2014-12-01 19:15:17 +01:00
Florian Bruhin
655115858c Handle OSError when using subprocess. 2014-11-23 18:07:05 +01:00
Florian Bruhin
ecbebba9e9 hints: Ignore TypeError when disconnecting contentsSizeChanged.
Fixes #263.
2014-11-16 00:05:20 +01:00
Florian Bruhin
b502280c06 Make download-manager a per-window object.
Fixes #228.
2014-11-11 21:36:47 +01:00
Florian Bruhin
326ce91eb7 Append hint elements inside body.
Fixes #226.
2014-11-09 22:02:08 +01:00
Florian Bruhin
c3a83bc412 Add hover description to docstring (#238) 2014-11-02 20:08:40 +01:00
Florian Bruhin
7b670b134d Small whitespace fix for #238 2014-11-02 20:04:41 +01:00
rikn00
4d101eea59 Improve hovering a hint 2014-11-02 16:37:34 +02:00
rikn00
84759a4928 Add support to hover mouse over a hint 2014-11-01 01:54:19 +02:00
Florian Bruhin
8e0e33e89a Use QWebElement API to set hint elem style.
See #225.
2014-10-29 22:50:29 +01:00
Florian Bruhin
2937fb9232 Use QWebElement API to set hint elem attributes.
Fixes #225.
2014-10-29 21:01:32 +01:00
Florian Bruhin
a1ba05ff08 Add some logging for #152 2014-10-29 07:09:43 +01:00
Florian Bruhin
0c8b9fe095 Add vdebug logging for hints.
This hopefully helps with #225.
2014-10-28 19:00:41 +01:00
Florian Bruhin
2d9425a0b7 Fix uppercase hint formatting. 2014-10-26 17:05:56 +01:00
Peter Vilim
ee875ba895 hints: Show uppercase hint chars #73 2014-10-26 03:04:48 -05:00
Florian Bruhin
c2daadf0bd Fix exception when element has no web frame. 2014-10-22 20:18:58 +02:00
Florian Bruhin
5a5ff70703 hints: fix replacing of {hint-url}.
Fixes #200.
2014-10-17 11:39:44 +02:00
Florian Bruhin
ee02f339d7 Draw hints correctly when page is zoomed.
Fixes #199.
2014-10-17 11:32:41 +02:00
Florian Bruhin
d9213ecf17 Prevent double-entering hint mode. Fixes #160. 2014-10-08 22:19:24 +02:00
Florian Bruhin
596afab1ac Fix lint 2014-10-07 23:10:58 +02:00
Florian Bruhin
f9dc9f4acd Fix rapid hinting. Closes #148. 2014-10-07 07:45:29 +02:00
Florian Bruhin
d2b3f89d78 Remove frame signal workaround for hints. See #152. 2014-10-07 07:15:14 +02:00
Florian Bruhin
105c25bc5f Merge branch 'multiwin'
Conflicts:
	qutebrowser/app.py
	qutebrowser/browser/commands.py
	qutebrowser/browser/hints.py
	qutebrowser/keyinput/modeman.py
	qutebrowser/network/networkmanager.py
	qutebrowser/widgets/mainwindow.py
	qutebrowser/widgets/statusbar/command.py
	qutebrowser/widgets/statusbar/prompt.py
	qutebrowser/widgets/statusbar/prompter.py
	qutebrowser/widgets/tabbedbrowser.py
2014-10-06 22:03:58 +02:00
Florian Bruhin
fd9a3fc5e7 Clean up mainwindow import mess. 2014-10-06 21:24:07 +02:00
Florian Bruhin
8eb0489357 Add rapid window hinting. 2014-10-06 19:39:48 +02:00
Florian Bruhin
52e72a8bec Fix window spawning with hints. 2014-10-06 18:47:55 +02:00
Florian Bruhin
6324751af6 More window support. 2014-10-06 17:58:40 +02:00
Florian Bruhin
85ead4273b Register tab registry under window registry with ID. 2014-10-06 07:41:05 +02:00
Florian Bruhin
4dcaa1fdec Be more forgiving when validating URLs. Fixes #141. 2014-10-03 16:58:30 +02:00
Florian Bruhin
d674b90240 Clean up FIXMEs and add github URLs 2014-10-01 22:23:27 +02:00
Florian Bruhin
36f7ff6154 Fix some objreg.get calls. 2014-09-28 23:23:02 +02:00
Florian Bruhin
dc7b32e460 Fix lint 2014-09-28 22:23:37 +02:00
Florian Bruhin
fb6cb62f93 First attempt at multi-window support. 2014-09-28 22:13:14 +02:00
Florian Bruhin
65d1d21d2e Always use a list for namedtuple. 2014-09-28 00:43:08 +02:00
Florian Bruhin
0fadf6b091 Use a list as items-argument for usertypes.enum 2014-09-28 00:42:53 +02:00
Florian Bruhin
c188c6986d Call on_mode_entered only once for hints. 2014-09-25 19:06:38 +02:00
Florian Bruhin
55e2ccabf5 Fix lint 2014-09-25 07:58:08 +02:00
Florian Bruhin
78949a8c1b Use object registry for hintmanager. 2014-09-25 07:49:45 +02:00
Florian Bruhin
4783df8c32 Avoid download_get signal. 2014-09-25 00:29:29 +02:00
Florian Bruhin
3f02451828 Move object registry to its own file. 2014-09-24 07:06:45 +02:00
Florian Bruhin
9aa65a2341 Fix lint and bugs 2014-09-23 23:17:36 +02:00
Florian Bruhin
2b60cdb64c Object names cleanup 2014-09-23 23:05:55 +02:00
Florian Bruhin
5f45d3de60 Use object registry for modeman. 2014-09-23 20:02:48 +02:00
Florian Bruhin
58be65f4f0 Use object registry for messagebridge. 2014-09-23 19:53:48 +02:00
Florian Bruhin
688b9a57cb Add missing is_visible check for hints. 2014-09-22 20:06:17 +02:00
Florian Bruhin
812a0fdd41 Merge branch 'newcmd'
Conflicts:
	.flake8
	pkg/PKGBUILD.qutebrowser-git
	qutebrowser/browser/commands.py
	qutebrowser/browser/hints.py
	qutebrowser/config/configdata.py
	qutebrowser/network/qutescheme.py
	qutebrowser/test/config/test_configtypes.py
	qutebrowser/utils/utils.py
2014-09-22 19:09:48 +02:00
Florian Bruhin
658053842e hints: Wrap elements after checking is_visible.
Wrapping thousands of elements is really slow (>3 seconds for hinting on a
reddit page, because we wrap ~2500 elements with 50 methods each), so we try to
filter the elements first before wrapping them, as the visible elements will be
much less.
2014-09-19 12:32:28 +02:00
Florian Bruhin
81aa08593b hints: Ignore invalid href's instead of crashing. 2014-09-15 06:54:05 +02:00
Florian Bruhin
ad2435fa0b hints: Small cleanup 2014-09-15 06:53:05 +02:00
Florian Bruhin
00193df99e hints: Fix URL resolving crash with new WebElement API. 2014-09-15 06:52:34 +02:00
Florian Bruhin
1fd8fb57a6 Use *args for commands where possible. 2014-09-14 23:10:51 +02:00
Florian Bruhin
1220f0c5fd Move webelem from utils to browser. 2014-09-08 10:30:05 +02:00
Florian Bruhin
0a094c6e58 Refactor HintManager.start 2014-09-08 07:36:17 +02:00
Florian Bruhin
57d51ad9bb Lots of fixes for new command system.
Squashed commit:

- Fix getting current URL
- Get rid of *args for hints.
- Make enums work.
- Fix moving commands to utilcmds.
- Fix enums in argparse
- Fix arg splitting for hints.
- Fix default enum args.
- Fix argument splitting for hints if None is given.
- Fix set_cmd_text with flags and fix {url}.
- Fix unittests
- Fix tuple types for arguments.
- Fix scroll-page.
- Fix lint
- Fix open_target.
- Others
2014-09-08 07:36:17 +02:00
Florian Bruhin
b856bf3a47 Improve webelement API 2014-09-04 20:30:59 +02:00
Florian Bruhin
b789d14513 Improve prev-page/next-page matching and logging. 2014-09-03 22:55:48 +02:00
Florian Bruhin
71796e9528 Fix statusbar text when entering insert mode via hints.
Before, hints cleaned the statusbar text delayed, clearing the "==== INSERT
MODE ====" in the statusbar.

Now we only reset the text if it wasn't changed.
2014-09-03 11:51:24 +02:00
Florian Bruhin
ccfc0b3c19 Get rid of most @property's.
They were problematic because they're executing hidden code, and also PyQt
hides exceptions happening inside them.
2014-09-02 23:37:47 +02:00
Florian Bruhin
c72bfff306 Rename commands.exceptions to commands.cmdexc. 2014-08-26 20:38:10 +02:00
Florian Bruhin
8bd64382bd Rename utils.qt to utils.qtutils. 2014-08-26 20:25:11 +02:00
Florian Bruhin
b4298c2922 Remove 'as logger' imports. 2014-08-26 20:15:41 +02:00
Florian Bruhin
e04b31eb90 Remove qt_ prefix from qtutils functions. 2014-08-26 19:23:06 +02:00
Florian Bruhin
d625cde28c Clean up imports 2014-08-26 19:10:14 +02:00
Florian Bruhin
3dc7a1b735 Lock mode while prompting. 2014-08-04 03:14:14 +02:00
Florian Bruhin
90f1d5851c Fix lint. 2014-08-03 00:58:59 +02:00
Florian Bruhin
acfc95e19d Simplify :hint by adding a 'fill' target. 2014-08-03 00:56:42 +02:00
Florian Bruhin
425a7fd7c4 Simplify userscript running. 2014-07-29 02:05:15 +02:00
Florian Bruhin
b83dd59469 Add userscript/spawn targets to hints. 2014-07-29 01:45:42 +02:00
Florian Bruhin
54246bacbe Add some type checking for enums 2014-07-29 00:23:20 +02:00
Florian Bruhin
7c8f9bec0f Use enum for keyboard modes. 2014-07-29 00:19:35 +02:00
Florian Bruhin
8d80ce2628 Switch to python 3.4 enums.
Our home-brewn enum wasn't really liked by pylint (many no-member errors), so
instead of adding some workaround, we just use the python 3.4 enum instead.

This however also means we need to depend on Python 3.4 and not 3.3. Maybe we
should use enum34 on Python < 3.3.
2014-07-28 20:41:42 +02:00
Florian Bruhin
1f3b39eb75 Get rid of prevnext_rel selector group 2014-07-16 09:17:59 +02:00
Florian Bruhin
fad22c63d9 Go back to using one NetworkManager per tab 2014-07-10 06:42:52 +02:00
Florian Bruhin
72b854049b Improvments for hints/page-prev/page-next 2014-07-09 21:14:15 +02:00
Florian Bruhin
92ff957543 Clean up message API 2014-06-26 07:58:00 +02:00
Florian Bruhin
81990f792f Avoid using QApplication for downloads 2014-06-23 17:30:28 +02:00
Florian Bruhin
8a8ca0c34f Split utils.misc into utils.{qt,misc} 2014-06-23 07:45:04 +02:00
Florian Bruhin
49fd08b30d Leave URLs encoded when setting commandline 2014-06-21 23:19:59 +02:00
Florian Bruhin
664079c728 Don't raise CommandError in HintManager.fire 2014-06-21 17:41:25 +02:00
Florian Bruhin
7a6e2b3242 Ensure validity of Qt objects 2014-06-21 17:02:30 +02:00
Florian Bruhin
0dc2ecef46 Check QUrl objects for validity 2014-06-20 23:57:52 +02:00
Florian Bruhin
2d2ee71bee Remove passwords from URLs going out via an insecure channel. 2014-06-20 22:57:04 +02:00
Florian Bruhin
8b6af23b13 Make sure we don't display passwords in URLs to the user 2014-06-20 19:50:44 +02:00
Florian Bruhin
0fd64419da Remove urlutils.{urlstring,qurl}.
The idea of treating an URL-string and a QUrl as essentially the same data type
got us into all kinds of problems. Now we use QUrl everywhere except at the
borders to the user interface.
2014-06-20 16:33:01 +02:00
Florian Bruhin
6b12572fb0 Add dwb download keybindings. 2014-06-19 17:58:46 +02:00
Florian Bruhin
d65587128f Add vim modelines to all files. 2014-06-19 09:04:37 +02:00
Florian Bruhin
6a81710c71 Use HintContext per invocation of hintmanager 2014-06-07 18:07:09 +02:00
Florian Bruhin
2f1cd43f9c Change lists to tuples for immutable values 2014-06-06 17:21:35 +02:00
Florian Bruhin
1e256699f8 Add topic-specific loggers 2014-05-23 16:11:55 +02:00
Florian Bruhin
7308fa97c5 Leave hinting mode when insert mode is entered 2014-05-22 17:49:18 +02:00
Florian Bruhin
d901fe69e6 Rename some commands 2014-05-16 23:01:40 +02:00
Florian Bruhin
326280f910 Fix consistency and spelling in docstrings/comments 2014-05-15 16:27:34 +02:00
Florian Bruhin
cf02330b42 Make hinting work again.
6b2d2713f7 broke this as we accidentally
iterate over self._frames before setting it.
2014-05-14 18:54:34 +02:00
Florian Bruhin
a045511962 Use exceptions for command errors 2014-05-14 18:00:40 +02:00
Florian Bruhin
651eab1032 Return after error when there's no hint to follow 2014-05-14 14:56:13 +02:00
Florian Bruhin
6b2d2713f7 Clean up HintManager.start() 2014-05-13 21:13:53 +02:00
Florian Bruhin
0b3854bff1 Work around segfault in hintmanager 2014-05-13 13:42:30 +02:00
Florian Bruhin
7b2961f23e Fix some backslash-quotes 2014-05-12 15:58:09 +02:00
Florian Bruhin
419caf7116 Rename rect_on_screen to rect_on_view 2014-05-12 10:05:00 +02:00
Florian Bruhin
50f31ca7cb Handle visibility of elements on screen correctly 2014-05-12 10:04:27 +02:00
Florian Bruhin
4eebe2dc57 First try at hinting with frames 2014-05-12 07:49:44 +02:00
Florian Bruhin
59a89d31fe Add reasons why modes are entered/left 2014-05-09 16:03:46 +02:00
Florian Bruhin
4eb6f896b0 Remove unused import in hints.py 2014-05-08 20:36:23 +02:00
Florian Bruhin
14873285e6 Fix enum bugs 2014-05-06 21:09:09 +02:00
Florian Bruhin
164dcfb6bd Always click elements in the center when hinting 2014-05-06 21:07:20 +02:00