Florian Bruhin
f93b92cca8
adblock: Fix getting filename from URL
...
On Windows, we would end up with /C:/foo as "path".
2017-07-10 21:36:34 +02:00
Yashar Shahi
7da6908850
Check for interval being positive.
...
Check for interval being positive instead of checking for it to be
non-zero. So if somehow some unexpected thing happend and made
message-timeout negative, the bug doesn't cascade.
2017-07-10 21:14:55 +04:30
Yashar Shahi
1cb23f1193
Change timer interval after appending to _messages
2017-07-10 21:11:38 +04:30
Florian Bruhin
1f4012cc1e
Merge branch 'master' of https://github.com/iordanisg/qutebrowser
2017-07-10 18:33:46 +02:00
Florian Bruhin
135fb042da
Make settings from qute://settings persistent
2017-07-10 18:04:39 +02:00
Yashar Shahi
9574549798
Merge https://github.com/qutebrowser/qutebrowser
2017-07-10 19:58:03 +04:30
Florian Bruhin
045831f3c7
Fix coverage check
2017-07-10 16:57:26 +02:00
Yashar Shahi
cb0bd2c52d
Do not call _set_timer_interval() at constructor
...
No need to call _set_timer_interval() at constructor since it's called
every time timer is going to be started.
2017-07-10 19:21:35 +04:30
Iordanis Grigoriou
9c83ea4717
Refactor _back_forward
2017-07-10 15:58:11 +02:00
Iordanis Grigoriou
6ab49fdf1d
Move back/forward logic to AbstractHistory, fix method names
2017-07-10 15:43:35 +02:00
Yashar Shahi
3c1b05c81e
Show messages longer if there are multiple of them
2017-07-10 18:05:35 +04:30
Florian Bruhin
e81dcccace
Add a test for a None currentWidget with backforward widget
2017-07-10 09:29:45 +02:00
Florian Bruhin
5fb6cb713b
Hide back/forward widget when there's no text
2017-07-10 07:59:56 +02:00
Iordanis Grigoriou
bf074d14de
Adjust back/forward method arguments in AbstractHistory class
2017-07-10 01:00:48 +02:00
Iordanis Grigoriou
c6ed4fe4f9
Skip intermediate pages with :back/:forward and a count
2017-07-10 00:28:47 +02:00
Jay Kamat
28a2482cf7
Merge branch 'master' into jay/prompt-on-click
2017-07-09 14:17:03 -07:00
Daniel Hahler
b3a9e09d6c
Add statusline widget for back/forward indicator
...
Fixes https://github.com/qutebrowser/qutebrowser/issues/2737 .
2017-07-09 22:38:44 +02:00
Florian Bruhin
bb567a61b6
Fix ipc test coverage
2017-07-09 22:09:31 +02:00
Florian Bruhin
84c2289aa5
Merge branch 'master' of https://github.com/iordanisg/qutebrowser
2017-07-09 12:56:52 +02:00
Florian Bruhin
6a2163d36f
ipc: Remove support for connecting to legacy servers
2017-07-09 12:49:47 +02:00
Florian Bruhin
cfb169b5f0
Remove unused import
2017-07-09 12:40:16 +02:00
Florian Bruhin
9e7f2e470f
Move OpenGL workaround import
...
OpenGL.GL gets imported in earlyinit already anyways, so we can move everything
there.
2017-07-09 11:57:06 +02:00
Florian Bruhin
915cd5f016
Fix long lines
2017-07-09 11:51:22 +02:00
Florian Bruhin
fcf5158258
Recommend QT_XCB_FORCE_SOFTWARE_OPENGL
...
This won't disable OpenGL for stuff started from qutebrowser.
See #2368 .
2017-07-08 17:36:14 +02:00
Florian Bruhin
b81474d2fd
Improve earlyinit check for PyOpenGL
...
Importing OpenGL alone doesn't actually load libgl, it only checks that the
package is here. If libgl is missing, we'd later get an exception.
2017-07-08 17:33:50 +02:00
Iordanis Grigoriou
c9fd182dba
Adjust suggested_fn_from_title, add tests
2017-07-08 16:28:58 +02:00
Ryan Roden-Corrent
f9f8900fe9
More sql code review fixes.
...
- remove outdated comment
- fix sql init error message
- clean up history text import code
- fix test_history file path in coverage check
- use real web history, not stub, for completion model tests
- use qtmodeltester in sql/list_category tests
- test url encoding in history tests
- fix test_clear by using a callable mock
- remove test_debug_dump_history_oserror as the check is now the same as
for the file not existing
- rename nonempty to data in test_completionmodel
- add more delete_cur_item tests
- test empty option/value completion
2017-07-08 09:57:32 -04:00
Florian Bruhin
ad615941a2
Replace OS X with macOS
2017-07-08 11:12:43 +02:00
Florian Bruhin
0de0bbfa71
Fix :restart with private browsing mode
2017-07-08 10:46:08 +02:00
Ryan Roden-Corrent
515e82262d
Merge remote-tracking branch 'upstream/master' into really_complete
2017-07-07 20:42:21 -04:00
Florian Bruhin
f80fd2a27c
Merge branch 'pr/2782'
2017-07-07 18:38:29 +02:00
Christian Helbling
6d9e5dc931
avoid too long lines
2017-07-07 11:30:18 +02:00
Florian Bruhin
6a8d2ac826
Disable search workaround for Qt 5.9.2
2017-07-06 23:18:29 +02:00
Iordanis Grigoriou
82d194cf2e
Improve function docstring, add more tests
2017-07-06 21:37:11 +02:00
Iordanis Grigoriou
3bfafb5e50
Refactor suggested_fn_from_title, add unit tests
2017-07-06 17:41:54 +02:00
Christian Helbling
d179450c29
:fullscreen, enter video fullscreen, :fullscreen, exit video fullscreen should not go into video fullscreen
2017-07-06 15:35:52 +02:00
Ryan Roden-Corrent
1dd5f06a4f
Fix debug-dump-history behavior.
...
Ensure the file is closed before printing the success message. This will
hopefully fix the AppVeyor tests.
2017-07-06 08:02:16 -04:00
Ryan Roden-Corrent
cee0aa3adc
Show error dialog is sql isn't available.
...
If creating the sql database fails, show an error dialog assuming sqlite
is not installed.
This removes the isDriverAvailable check as it was true even with sqlite
uninstalled.
sql.version now inits itself if sql is not already initialized and
prints 'UNAVAILABLE (<error message>)' if init fails. This is to avoid
cascading errors, where one error would create a crash dialog, which
calls sql.version, which would create another error.
2017-07-06 07:36:59 -04:00
Florian Bruhin
911e59b0f4
Improve version output without SSL support
2017-07-06 12:23:08 +02:00
Iordanis Grigoriou
57e4d4978b
Use page title only for whitelisted extensions
2017-07-06 11:59:02 +02:00
Florian Bruhin
3c9de92d58
Add Gentoo instructions to backend warning
2017-07-06 00:41:06 +02:00
Florian Bruhin
a4833fcc46
Merge branch 'pr/2747'
2017-07-05 22:14:07 +02:00
Florian Bruhin
a8120a23c4
Update comment for TabBarStyle
2017-07-05 22:13:24 +02:00
Ryan Roden-Corrent
dc4472470e
Merge remote-tracking branch 'upstream/master' into really_complete
2017-07-05 08:45:57 -04:00
Christian Helbling
361251bf53
mark public attribute as public, fix debug output
2017-07-04 23:30:06 +02:00
Christian Helbling
20db65e430
preserve window state when exiting video fullscreen
2017-07-04 22:56:44 +02:00
Florian Bruhin
28410b8533
Release v0.11.0
2017-07-04 18:02:34 +02:00
Christian Helbling
7ea7a2f3fd
restore maximized state on :fullscreen and when exiting video fullscreen
2017-07-04 17:50:07 +02:00
Florian Bruhin
45b1285402
Merge pull request #2765 from jgkamat/jay/tab-crashes
...
Refactor set_tab_pinned to take a tab widget.
2017-07-04 17:24:10 +02:00
Florian Bruhin
0cdd3ff82f
Update some more references to old config options
2017-07-04 16:46:02 +02:00
Florian Bruhin
cff61fa0bc
Fix pylint
...
This also reverts commit 8df0b063be
.
2017-07-04 15:34:10 +02:00
Florian Bruhin
88b878098d
Implement pretty-printing of configtypes for the doc
...
This is also needed to make the docs environment work on Travis - as otherwise,
doc generation wasn't deterministic because of changing dict key order.
2017-07-04 15:09:23 +02:00
Florian Bruhin
397ca47efb
Fix vulture
2017-07-04 15:09:23 +02:00
Florian Bruhin
9ac2dbcc80
Disallow surrogate escapes in dicts and lists in the config
...
In Dict.to_str() and List.to_str() we use json.dump to get a value. However,
JSON includes surrogate escapes in the dumped values, which breaks round trips.
>>> yaml.load(json.dumps({'\U00010000': True}))
{'\ud800\udc00': True}
>>> yaml.load(json.dumps({'\U00010000': True}, ensure_ascii=False))
yaml.reader.ReaderError: unacceptable character #x10000: special characters are not allowed
See:
https://stackoverflow.com/a/38552626/2085149
https://news.ycombinator.com/item?id=12798032
2017-07-04 15:09:23 +02:00
Florian Bruhin
0528a800f2
Fix config things relying on dict order
2017-07-04 15:08:04 +02:00
Florian Bruhin
91cd6c6288
Fix Python 3.4 circular imports
2017-07-04 15:08:04 +02:00
Florian Bruhin
b42265212b
Update test_keyhints for new config
...
This also makes the keyhint display things sorted
2017-07-04 15:08:04 +02:00
Florian Bruhin
1663280f53
Update test_shared for new config
...
Also, make accept_language none_ok=True like it was in the old configdata.py
2017-07-04 15:08:04 +02:00
Florian Bruhin
78d7ac311f
Use fonts.monospace properly
2017-07-04 15:08:04 +02:00
Florian Bruhin
4562a3574b
Allow a list for content.user_stylesheets
2017-07-04 15:08:04 +02:00
Florian Bruhin
afb3b496e8
Add missing backend: QtWebKit for content.pdfjs
2017-07-04 15:08:04 +02:00
Florian Bruhin
a36f5bafc1
Rename content.javascript.can_*_windows to _tabs
2017-07-04 15:08:04 +02:00
Florian Bruhin
be94098597
Improve more docs
2017-07-04 15:08:04 +02:00
Florian Bruhin
5ada3606d8
Allow to not send the DNT header
2017-07-04 15:08:04 +02:00
Florian Bruhin
040be60697
Improve more docs
2017-07-04 15:08:04 +02:00
Florian Bruhin
202b8445f6
Move content.accept_language under headers
2017-07-04 15:08:04 +02:00
Florian Bruhin
f546cbe934
Clarify some docs
2017-07-04 15:08:04 +02:00
Florian Bruhin
d7036fe8a8
Clarify history_session_interval and rename it to _gap_interval
...
"session" is already overloaded enough.
2017-07-04 15:08:04 +02:00
Florian Bruhin
8712fc6fd3
Move new_instance_open_target out of url.
...
It doesn't really fit there really...
See 3cf028db23cbfe256e499d8881c3c2856f224d94
2017-07-04 15:08:04 +02:00
Florian Bruhin
d641652a92
More test_config improvements
2017-07-04 15:08:04 +02:00
Florian Bruhin
c214acd899
Remove config from objreg
2017-07-04 15:08:04 +02:00
Florian Bruhin
1a492e9f4a
Re-add backend checks to new config
2017-07-04 15:08:04 +02:00
Florian Bruhin
556f49d367
Add PACFetcher.fetch
...
Let's not try to download proxies during tests...
2017-07-04 15:08:04 +02:00
Florian Bruhin
2b9b54cf6b
Tests and improvements for ConfigContainer
2017-07-04 15:08:03 +02:00
Florian Bruhin
4495e721d8
Tests and fixes for config.Config
2017-07-04 15:08:03 +02:00
Florian Bruhin
e259293f83
Always copy config objects
...
If we mutate the value we get from the config, we want to make sure the value in
the config always stays the same (especially when it's the default!).
2017-07-04 15:08:03 +02:00
Florian Bruhin
2c3981e57e
Get rid of Config.read_configdata()
...
No need for this indirection
2017-07-04 15:08:03 +02:00
Florian Bruhin
252c5396f3
Apply proxy changes from master
...
This are the same changes as done in 629038632c
,
but only the part related to the config. This is so we don't forget this when
merging them.
2017-07-04 15:08:03 +02:00
Florian Bruhin
07d0ea6a54
Unit tests and improvements for :bind/:unbind
2017-07-04 15:08:03 +02:00
Florian Bruhin
3edebce833
Add tests for :set
2017-07-04 15:08:03 +02:00
Florian Bruhin
31b999ea59
Tests and improvements for KeyConfig
2017-07-04 15:08:03 +02:00
Florian Bruhin
725ffef5f3
Use a real config object in unit tests
2017-07-04 15:08:03 +02:00
Florian Bruhin
5aac991446
Remove unnecessary sip.isdeleted line
...
Now that the StyleSheetObserver is a child of the object it observes, it should
get cleaned up properly when the object is deleted.
This means this is hopefully not needed anymore, even on Qt 5.2.
2017-07-04 15:08:03 +02:00
Florian Bruhin
978013e750
Fix CommandParser and don't use a generator
2017-07-04 15:08:03 +02:00
Florian Bruhin
a8c7e8ba05
Add first config tests
2017-07-04 15:08:03 +02:00
Florian Bruhin
28670f8e48
Move config.style into config.config and refactor it
2017-07-04 15:08:03 +02:00
Florian Bruhin
a2f62238f1
Change default binding to leave passthrough mode to Ctrl-V
...
Also, display the binding in the statusbar
2017-07-04 15:08:03 +02:00
Florian Bruhin
df1685905e
Add content.headers and content.cache groups
2017-07-04 15:08:03 +02:00
Florian Bruhin
50602cbf26
Add an url. group to settings
2017-07-04 15:08:03 +02:00
Florian Bruhin
5c08c6c930
Add conditional backend infos to docs
2017-07-04 15:08:03 +02:00
Florian Bruhin
034d727a2c
Clean up configdata
2017-07-04 15:08:03 +02:00
Florian Bruhin
25ab3b30c2
Initial doc update with new settings
2017-07-04 15:08:03 +02:00
Florian Bruhin
94ac2ca56c
Merge :wq into :quit and add an alias
2017-07-04 15:08:03 +02:00
Florian Bruhin
065f82f485
Fix endless recursion while validating aliases
2017-07-04 15:08:03 +02:00
Florian Bruhin
ac78039171
Use aliases for :w and :q
2017-07-04 15:08:03 +02:00
Florian Bruhin
ac64ea287a
Rename tabs.new_position/_explicit to .related/.unrelated
2017-07-04 15:08:03 +02:00
Florian Bruhin
441b3a4df4
Allow missing fixed_keys for configtypes.Dict
...
We just fill them up with a None value for the value type, so we can e.g. only
specify a subset of modes for bindings and the rest is {}.
2017-07-04 15:08:03 +02:00
Florian Bruhin
9d8b76e497
Simplify _none_value for List/Dict configtypes
...
We don't need to check for fixed_keys/required_keys in get_obj (only get_py),
and we don't need to care about mutability in get_py.
2017-07-04 15:08:03 +02:00
Florian Bruhin
da0a2b8578
Handle {} and [] with none_ok for configtypes.Dict/List
2017-07-04 15:08:03 +02:00
Florian Bruhin
2ba637891a
Add required_keys for configtypes.Dict
2017-07-04 15:08:03 +02:00
Florian Bruhin
bc526cf0ce
Remove some FIXMEs
2017-07-04 15:08:03 +02:00
Florian Bruhin
7ee222af88
Return [] for none-values for configtypes.List
2017-07-04 15:08:03 +02:00
Florian Bruhin
c141c33b32
Clean up start_pages setting
...
The value is now of type FuzzyUrl, and the setting is renamed to start_pages.
2017-07-04 15:08:03 +02:00
Florian Bruhin
9cbacf3264
Use {} for none-dicts and fix keybindings
2017-07-04 15:08:03 +02:00
Florian Bruhin
0115285a84
Initial update for better bindings management
2017-07-04 15:08:03 +02:00
Florian Bruhin
127db2fe42
Be a bit more relaxed about values for Perc
...
We now allow float/int for objects, and strings without a trailing % sign.
2017-07-04 15:08:03 +02:00
Florian Bruhin
cbf6e4287f
Rename fonts.tabbar to fonts.tabs
2017-07-04 15:08:03 +02:00
Florian Bruhin
e7ba56cb2c
Read YAML config after config.val is ready
...
This means we can (at least somewhat) validate aliases in configtypes.Command.
2017-07-04 15:08:03 +02:00
Florian Bruhin
0ed0a6db57
Clean up code
2017-07-04 15:08:03 +02:00
Florian Bruhin
67cb6a9802
Implement initial reading from YAML
2017-07-04 15:08:03 +02:00
Florian Bruhin
70f6d0e305
Add qutebrowser.config.configfiles
2017-07-04 15:08:03 +02:00
Florian Bruhin
78434a330c
Remove old stub FIXMEs
2017-07-04 15:08:03 +02:00
Florian Bruhin
fda4fd4888
Rename NewConfigManager.set to set_obj
2017-07-04 15:08:03 +02:00
Florian Bruhin
ad0a961a5f
Add an lru_cache for configdata.is_valid_prefix()
...
This gets called a lot, and caused some :bind calls to take ~3s.
Stats after starting with a bit of :bind:
CacheInfo(hits=25917, misses=139, maxsize=256, currsize=139)
2017-07-04 15:08:03 +02:00
Florian Bruhin
45e7e35233
Detect mutated values in new config
...
This will allow config.py to get a value and then mutate it, and we can also
make things easier for :bind and :unbind.
2017-07-04 15:08:03 +02:00
Florian Bruhin
2577b2c5e3
Validate configtypes.Command correctly
2017-07-04 15:08:03 +02:00
Florian Bruhin
23d30d4fc0
Fix remaining :bind/:unbind issues
2017-07-04 15:08:03 +02:00
Florian Bruhin
f434f955c2
Improve exception handling for :bind/:unbind
2017-07-04 15:08:02 +02:00
Florian Bruhin
ba1bc29a97
Initial :bind/:unbind implementation
2017-07-04 15:08:02 +02:00
Florian Bruhin
290d27a064
Add a cmdexc.Error
2017-07-04 15:08:02 +02:00
Florian Bruhin
a6c629899e
Split CommandRunner into runner/parser
2017-07-04 15:08:02 +02:00
Florian Bruhin
d4cbd4ace4
Fix getting the scrollbar option
2017-07-04 15:08:02 +02:00
Florian Bruhin
ed5bea6e3f
Call int() for zoom level messages
2017-07-04 15:08:02 +02:00
Florian Bruhin
3c2d568a2e
Add an ID for qute://settings inputs
2017-07-04 15:08:02 +02:00
Florian Bruhin
d7f1ebedbf
Fix toggling options
2017-07-04 15:08:02 +02:00
Florian Bruhin
44e4816cbb
Use get_opt in NewConfigManager.set
2017-07-04 15:08:02 +02:00
Florian Bruhin
5081e4f201
Fix NewConfigManager.get_str
2017-07-04 15:08:02 +02:00
Florian Bruhin
5e4675b34a
Fix ignore_case handling
2017-07-04 15:08:02 +02:00
Florian Bruhin
340a62869d
Fix javascript.prompt default
2017-07-04 15:08:02 +02:00
Florian Bruhin
ceca99a99c
Fix :help with new config
2017-07-04 15:08:02 +02:00
Florian Bruhin
e752f87876
Add Shift-Delete mapping for :completion-item-del
...
This seems to be what Chromium and Firefox use for the same purpose.
2017-07-04 15:08:02 +02:00
Florian Bruhin
75798bebb0
Normalize bindings correctly when checking key_mappings
2017-07-04 15:08:02 +02:00
Florian Bruhin
383968d948
Add a Key config type
...
Make sure any key we get from the config is normalized).
2017-07-04 15:08:02 +02:00
Florian Bruhin
e894ad4ab0
Improve :set --temp docs
2017-07-04 15:08:02 +02:00
Florian Bruhin
6aafaca329
Fix invalid default_page replacement
2017-07-04 15:08:02 +02:00
Florian Bruhin
ae6cc543ed
Fix shared.feature_permission
2017-07-04 15:08:02 +02:00
Florian Bruhin
089e1ee91b
Rewrite various references to old settings
2017-07-04 15:08:02 +02:00
Florian Bruhin
88fb5bbd82
tests: Fix various issues with new config
2017-07-04 15:08:02 +02:00
Florian Bruhin
198040b2e2
Fix setting descriptions
2017-07-04 15:08:02 +02:00
Florian Bruhin
f27978e268
Rename input.insert_mode.auto_focused to _load
2017-07-04 15:08:02 +02:00
Florian Bruhin
3470e9bf5d
Fix invocation with -s
2017-07-04 15:08:02 +02:00
Florian Bruhin
471755d370
Fix old config access in hints
2017-07-04 15:08:02 +02:00
Florian Bruhin
3aa7f771c1
Fix dirbrowser.html for stricter jinja env
2017-07-04 15:08:02 +02:00
Florian Bruhin
d0904a9f67
Adjust test settings
2017-07-04 15:08:02 +02:00
Florian Bruhin
c2a2845ee7
Remove the tabs.movable setting
2017-07-04 15:08:02 +02:00
Florian Bruhin
85bee4a7d2
Rename completion background settings to .odd/.even
2017-07-04 15:08:02 +02:00
Florian Bruhin
bc8176ff21
Remove most legacy config code
2017-07-04 15:08:02 +02:00
Florian Bruhin
785de9fb99
Add dump_userconfig
2017-07-04 15:08:02 +02:00
Florian Bruhin
b5eac744b5
Remove old caching code
...
Not deleting debug_cache_stats as we'll soon re-add stuff there.
2017-07-04 15:08:02 +02:00
Florian Bruhin
46d0fee11b
Bring back :set
2017-07-04 15:08:02 +02:00
Florian Bruhin
30f1970850
Fix key-config usage
2017-07-04 15:08:02 +02:00
Florian Bruhin
aa75262fe4
Fix keyhintwidget
2017-07-04 15:08:02 +02:00
Florian Bruhin
22f096088b
Fix alias handling
2017-07-04 15:08:02 +02:00
Florian Bruhin
f5d2c48bbb
Fix new keyconfig issues
2017-07-04 15:08:02 +02:00
Florian Bruhin
056edcfed3
More keyconfig work
2017-07-04 15:08:02 +02:00
Florian Bruhin
67afc06d79
Initial work on new keyconfig
2017-07-04 15:08:02 +02:00
Florian Bruhin
e4278a69ac
Re-activate aliases
2017-07-04 15:08:02 +02:00
Florian Bruhin
82102279bc
Get rid of configdata.SECTION_DESC
2017-07-04 15:08:02 +02:00
Florian Bruhin
624c6777ff
Reorder configdata.yml
2017-07-04 15:08:02 +02:00
Florian Bruhin
94b200835a
Hack in setting a value to NewConfigManager
2017-07-04 15:08:02 +02:00
Florian Bruhin
dc74a55b84
Fix remaining configtypes issues
2017-07-04 15:08:02 +02:00
Florian Bruhin
72d4421ac8
Make ShellCommand a List subclass
...
Also, let's not require a list in Command (which is used for aliases).
2017-07-04 15:08:02 +02:00
Florian Bruhin
ecba175b16
Test and fix configtypes to_str.
2017-07-04 15:08:02 +02:00
Florian Bruhin
4c2f65819b
Try to fix qute://settings
2017-07-04 15:08:02 +02:00
Florian Bruhin
5414744439
Clean up NewConfigManager
2017-07-04 15:08:02 +02:00
Florian Bruhin
d69c6d0c66
Reorganize how configtypes store their data
...
Now the "object" kind of value (like in YAML) is stored internally, and that's
the canonical value. The methods changed their meaning slightly, see the
docstring in configtypes.py for details.
2017-07-04 15:08:02 +02:00
Florian Bruhin
1cbb4ece4b
Force configtype.Dict keys to be strings
2017-07-04 15:08:02 +02:00
Florian Bruhin
41655e7852
Fix handling of none_ok in List/Dict
...
We now always return None (and '' as string) when the user configured an empty
list or dict.
2017-07-04 15:08:01 +02:00
Florian Bruhin
8ea3d92697
Initial implementation of to_str for configtypes
2017-07-04 15:08:01 +02:00
Florian Bruhin
ffc29ee043
Make qute://settings work with QtWebEngine and new config
...
Fixes #2332
2017-07-04 15:08:01 +02:00
Florian Bruhin
18eb133811
configdata: Make sure default values are valid
2017-07-04 15:08:01 +02:00
Florian Bruhin
0857a45b0a
configtypes: parse regex flags properly
2017-07-04 15:08:01 +02:00
Florian Bruhin
a7c3bb0d55
Initial qute://settings upgrade
2017-07-04 15:08:01 +02:00
Florian Bruhin
3a6bcb3dd0
Remove icon from base.html
2017-07-04 15:08:01 +02:00
Florian Bruhin
36a5614c61
Add "FIXME"
2017-07-04 15:08:01 +02:00
Florian Bruhin
a1ed81f790
Patch out setting completion
...
Let's bring it back with the completion refactoring
2017-07-04 15:08:01 +02:00
Florian Bruhin
6733e92b50
Handle files correctly in utils.yaml_dump
2017-07-04 15:08:01 +02:00
Florian Bruhin
001312ca82
Disallow Booleans for configtypes.Int.from_py
2017-07-04 14:42:56 +02:00
Florian Bruhin
dfee857466
Make utils.yaml_dump return str
2017-07-04 14:42:56 +02:00
Florian Bruhin
ffd1a91467
Fix Directory conftype
2017-07-04 14:42:56 +02:00
Florian Bruhin
61ba92ae18
configtypes: Separate str/py basic validation
...
This also ensures the behavior for none_ok is consistent.
2017-07-04 14:42:56 +02:00
Florian Bruhin
51a29468be
configtypes: Use YAML for loading List/Dict from a string
...
This allows for a more lightweight syntax (like "{a: b}").
2017-07-04 14:42:56 +02:00
Florian Bruhin
41565fcfd4
configtypes: Use from_py for List/Dict values from a string
2017-07-04 14:42:56 +02:00
Florian Bruhin
7ddce62cd6
Refactor most of remaining config.get() calls
2017-07-04 14:42:56 +02:00
Florian Bruhin
51474724e5
Refactor objreg.get('config') calls
2017-07-04 14:42:56 +02:00
Florian Bruhin
cc0e66fe7b
More config fixes
2017-07-04 14:42:56 +02:00
Florian Bruhin
6a451b37d7
re-raise NoOptionError
2017-07-04 14:42:56 +02:00
Florian Bruhin
52f15c84a6
Get rid of config sections
2017-07-04 14:42:56 +02:00
Florian Bruhin
7e7fbf106b
Fix lint and old config options
2017-07-04 14:42:56 +02:00
Florian Bruhin
ce7597b3f6
Fix various configtypes issues found while writing tests
2017-07-04 14:42:56 +02:00
Florian Bruhin
d751539a25
Add __eq__ and __repr__ for PACFetcher
...
This makes it possible to use it in comparisons during tests easily.
2017-07-04 14:42:56 +02:00
Florian Bruhin
3cee9cdcd7
Fix JS logging
2017-07-04 14:42:56 +02:00
Florian Bruhin
45ce7efc71
Adjust feature permissions
2017-07-04 14:42:56 +02:00
Jakub Klinkovský
7eacea1057
Preserve fullscreen when exiting video fullscreen
...
Fixes #2778
2017-07-04 14:12:21 +02:00
Ryan Roden-Corrent
1e1335aa5e
Make various SQL code review changes.
...
- Fix outdated comments
- Use mock specs when possible
- More precise error message check in test_import_txt_invalid.
- Fix copyright message
- Tweak missing pyqt error message
- Dead code: remove group_by and where from sqlcategory.
With the new separate completion table, these are no longer used.
- Move test_history out of webkit/. History is no longer purely webkit
related, it could be webengine.
2017-07-03 09:45:08 -04:00
Ryan Roden-Corrent
25c79bec67
Check correct SQL driver in earlyinit.
2017-07-03 08:15:06 -04:00
Ryan Roden-Corrent
a34df34208
Fix various test/flake8/pylint errors.
2017-07-03 08:12:47 -04:00
Ryan Roden-Corrent
f2dbff92f4
Check for PyQt.QtSql and sqlite in earlyinit.
...
Show a graphical error box with install instructions if PyQt.QtSql is
not found, rather than failing with CLI errors. Also show an error box
if the sqlite driver is not available.
2017-07-03 07:57:55 -04:00
Florian Bruhin
629038632c
Add proxy support for QtWebEngine and Qt 5.7.1
...
This used to give us crashes in libproxy:
https://github.com/libproxy/libproxy/issues/45
https://bugreports.qt.io/browse/QTBUG-56852
However, trying again with Qt 5.7.1 on Debian and from PyPI, this doesn't happen
anymore, so it was probably something with how Archlinux handled things.
See #2082 , #2775 .
Reverts fd29528e4f
2017-07-03 10:29:28 +02:00
Florian Bruhin
e828f5b812
Fix most config changed handlers
2017-07-02 22:17:33 +02:00
Florian Bruhin
c25022f549
Fix LimitLineParser
2017-07-02 22:17:33 +02:00
Florian Bruhin
1022b7ea32
Make jinja templating more strict
...
This ensures we actually know when an AttributeError happens.
It also changes most external code to use the correct environment, rather than
simply creating a jinja2.Template, which wouldn't use the more tightened
environment.
2017-07-02 22:17:33 +02:00
Florian Bruhin
4b4acc5f5a
Minor config fixes
2017-07-02 22:17:33 +02:00
Florian Bruhin
c8c9536beb
Fix completion stuff
2017-07-02 22:17:33 +02:00
Florian Bruhin
8c1b5f0581
Fix up background_tabs, favicon_show and some custom config magic
2017-07-02 22:17:33 +02:00
Florian Bruhin
1f508d9d8f
Fix config getters
2017-07-02 22:17:33 +02:00
Florian Bruhin
b9aa5d0e4e
Fix valid_values initing from configdata
2017-07-02 22:17:33 +02:00
Florian Bruhin
fcc0b3e8c0
Fix tab indicator width
2017-07-02 22:17:33 +02:00
Florian Bruhin
269e9d69e0
Improve typechecking message
2017-07-02 22:17:33 +02:00
Florian Bruhin
500ad8b00f
Use strings for Perc configtypes
2017-07-02 22:17:33 +02:00
Florian Bruhin
e6275ab561
Fix startpage
2017-07-02 22:17:33 +02:00
Florian Bruhin
298553d48d
Fix QssColor
2017-07-02 22:17:33 +02:00
Florian Bruhin
61fe40f4a1
Initial stylesheet refactoring for new config
2017-07-02 22:17:33 +02:00
Florian Bruhin
e2b0fdf8aa
Fix VerticalPosition and NewTabPosition
...
Make them string so they have to_py() defined.
2017-07-02 22:17:33 +02:00
Florian Bruhin
a3d4822b9f
Fix up adblock settings
2017-07-02 22:17:33 +02:00
Florian Bruhin
26bf588fad
Fix _validate_valid_values
2017-07-02 22:17:33 +02:00
Florian Bruhin
231b7303f5
Use null for empty config values.
2017-07-02 22:17:33 +02:00
Florian Bruhin
af134eb861
Refactor websettings for new config
2017-07-02 22:17:33 +02:00
Florian Bruhin
129ee33ffb
Refactor former network section
2017-07-02 22:17:33 +02:00
Florian Bruhin
f1d81d86aa
Fix configtypes _basic_validation
2017-07-02 22:17:33 +02:00
Florian Bruhin
aa6f229e6b
Add utils.yaml_{load,dump}
2017-07-02 22:17:33 +02:00
Florian Bruhin
1a6511c7a8
Refactor most stuff using config.val.ui
2017-07-02 22:17:33 +02:00
Florian Bruhin
1ed8df8903
Fix various typos/bugs
2017-07-02 22:17:33 +02:00
Florian Bruhin
3e3685b68b
Initial configexc refactoring
2017-07-02 22:17:33 +02:00
Florian Bruhin
5ab2c89a37
Adjust config.change_filter
2017-07-02 22:17:33 +02:00
Florian Bruhin
b5110b07f0
Fix newconfig init
2017-07-02 22:17:33 +02:00
Florian Bruhin
3009e5eebe
Fix configtypes mistakes
2017-07-02 22:17:33 +02:00
Florian Bruhin
8de0445661
Move UserAgent to configdata
2017-07-02 22:17:33 +02:00
Florian Bruhin
616aad84d8
More configtypes refactoring
2017-07-02 22:17:33 +02:00
Florian Bruhin
5ec47da127
Get rid of configtypes.AutoSearch and IgnoreCase
2017-07-02 22:17:33 +02:00
Florian Bruhin
921d02e4d3
First portion of configtypes refactoring
2017-07-02 22:17:33 +02:00
Florian Bruhin
7e52eb7b0e
Initial work on new configdata
2017-07-02 22:17:33 +02:00
Florian Bruhin
c2e75bf2fd
Initial conversion to new config syntax
2017-07-02 22:17:33 +02:00
Florian Bruhin
938946c48b
configdata: Add check for shadowing keys
2017-07-02 22:17:33 +02:00
Florian Bruhin
8b9b750f8f
configdata: Rename some options for consistency
2017-07-02 22:17:33 +02:00
Florian Bruhin
52f6ea2525
Initial parsing
2017-07-02 22:17:33 +02:00
Florian Bruhin
f965805099
First setting renames
2017-07-02 22:17:33 +02:00
Florian Bruhin
836395cdb1
Add configdata.yml
2017-07-02 22:17:33 +02:00
Florian Bruhin
00c8d8da34
Initial stubbing out of a new config
2017-07-02 22:17:33 +02:00
Florian Bruhin
2f26490536
Remove FIXME
2017-07-02 14:03:38 +02:00
Jay Kamat
2fbadc46d2
Remove error when count is invalid to :tab-pin
2017-06-30 09:57:39 -07:00
Florian Bruhin
9cedaa60bc
Check for PyQt5.QtQml in earlyinit
2017-06-30 14:56:02 +02:00
Florian Bruhin
e4a054d34e
Stop marking QtWebEngine as experimental
2017-06-30 10:42:33 +02:00
Jay Kamat
596dee69d6
Clean up pin_tab
...
Also add a test case for :pin-tab with an invalid count
2017-06-29 20:04:02 -07:00
Ryan Roden-Corrent
c1f5e77fc6
Implement "Current" completion for bind.
...
When binding a key, the first row will be the current binding if the key
is already bound. This should make it easier for users to tell when they
are binding a key that is already bound, and what it is bound to.
2017-06-29 21:44:44 -04:00
Ryan Roden-Corrent
1e489325c4
Assert if index is invalid in delete_cur_item.
...
CompletionView already checks the index, so an error here shouldn't
happen.
2017-06-29 20:58:15 -04:00
Ryan Roden-Corrent
fd07c571e5
Store pattern in completion view, not model.
...
The pattern property is used for highlighting. It is purely
display-related, so it should be in the view rather than the model.
2017-06-29 20:56:39 -04:00
Ryan Roden-Corrent
c007f592b3
Use more intuitive argument order in sql.delete.
2017-06-29 20:43:42 -04:00
Florian Bruhin
d132b6ed71
Fix :scroll-page with --bottom-navigate on QtWebEngine
...
There were two issues here:
- The comparison was backwards, causing scroller.at_bottom() to always return
true.
- When zoomed in, jsret['px']['y'] can be a float, which means we can be
slightly off when checking the difference - math.ceil() fixes that.
2017-06-29 22:39:48 +02:00
Ryan Roden-Corrent
9c0c174534
Use builtin SortFilter regex functionality.
...
With the new completion API, we no longer need a custom filterAcceptsRow
function. This was necessary to handle the tree structure of the model,
but now we use a separate QSortFilterProxyModel for each category, so
the data it filters is flat. We can simplify the code by using the
builtin setFilterRegExp.
This changes the behavior a little, as now all list categories filter on
all columns. This should be beneficial if anything. For example, help
topics are now filtered on description in addition to name.
This also seems to slightly speed up filtering, according to the url
model benchmark.
Before:
----------------------------------------------- benchmark: 1 tests ----------------------------------------------
Name (time in s) Min Max Mean StdDev Median IQR Outliers(*) Rounds Iterations
-----------------------------------------------------------------------------------------------------------------
test_url_completion_benchmark 1.2806 1.3817 1.3195 0.0390 1.3068 0.0487 1;0 5 1
-----------------------------------------------------------------------------------------------------------------
After:
----------------------------------------------- benchmark: 1 tests ----------------------------------------------
Name (time in s) Min Max Mean StdDev Median IQR Outliers(*) Rounds Iterations
-----------------------------------------------------------------------------------------------------------------
test_url_completion_benchmark 1.1183 1.1508 1.1281 0.0132 1.1241 0.0142 1;0 5 1
-----------------------------------------------------------------------------------------------------------------
2017-06-29 12:44:02 -04:00
Jay Kamat
302961a86a
Refactor set_tab_pinned to take a tab widget.
...
See #2759
2017-06-28 22:22:33 -07:00
Florian Bruhin
f136f78802
Fix :undo documentation
...
See #2759
2017-06-28 22:41:08 +02:00
Jay Kamat
4d1dbe11e8
Prompt when closing a pinned tab via the mouse
...
Closes #2761
2017-06-27 19:03:13 -07:00
Ryan Roden-Corrent
6ac940fa32
Fix pylint/coverage errors.
...
Ensure 100% coverage for sqlcategory and history, and fix some linter
errors
2017-06-27 12:33:51 -04:00
Ryan Roden-Corrent
f06880c6e2
Fix history completion delete function.
...
In order to update SqlQueryModel's rowCount after re-running the query,
we must call setQuery again.
2017-06-27 08:42:10 -04:00
Iordanis Grigoriou
5e2be8a44a
Fix PEP-8 issue
2017-06-27 08:25:59 +02:00
Iordanis Grigoriou
8a5b48d374
Add suggested_fn argument to get_request
2017-06-26 23:21:32 +02:00
Florian Bruhin
5ec94f96fd
Allow a trailing % for :zoom
2017-06-26 21:51:35 +02:00
Florian Bruhin
92d5f6c41d
Ignore _remove_tab for crashed deleted tabs
2017-06-26 20:50:17 +02:00
Florian Bruhin
24caaea54d
Handle OSError in SessionManager.delete
2017-06-26 19:52:07 +02:00
Florian Bruhin
130be2aedc
Handle OSError when trying to delete autosave session
2017-06-26 19:47:54 +02:00
Ryan Roden-Corrent
46161c3af0
Refactor delete_cur_item.
...
Taking the completion widget as an argument was overly complex.
The process now looks like:
1. CompletionView gets deletion request
2. CompletionView passes selected index to CompletionModel
3. CompletionModel passes the row data to the owning category
4. The category runs its custom completion function.
This also fixes a bug. With the switch to the hybrid (list/sql)
completion model, the view was no longer updating when items were
deleted. This fixes that by ensuring the correct signals are emitted.
The SQL model must be refreshed by running the query. We could try using
a SqlTableModel so we can call removeRows instead.
The test for deleting a url fails because qmodeltester claims the length
of the query model is still 3.
2017-06-26 08:57:36 -04:00
Iordanis Grigoriou
a24d7f6686
Use page title for filename with :download
2017-06-26 12:25:03 +02:00
Marius
df6b8b7ff5
Update tabwidget.py
2017-06-21 09:03:15 +02:00
Ryan Roden-Corrent
6080830a8b
Fix outdated docstring and pylint error.
2017-06-20 22:25:09 -04:00
Ryan Roden-Corrent
b722cc1dec
Pass invalid index to [can]FetchMore.
...
For QSqlQueryModel, the argument should always be an invalid index:
http://doc.qt.io/qt-5/qsqlquerymodel.html#canFetchMore
For a QStandardItemModel, it doesn't matter. Either way, passing the
top-level parent index was wrong.
2017-06-20 22:11:53 -04:00
Ryan Roden-Corrent
63cb88a0f4
Use _cat_from_index in completionmodel.data.
...
Keep all the category lookup inside _cat_from_idx for easier refactoring
if the organization ever changes.
2017-06-20 22:08:23 -04:00
Ryan Roden-Corrent
0f585eda4f
Bring history.py back to 100% coverage.
...
The code of debug_dump_history was tweaked to handle a possible
OSException that can be thrown by open, which I noticed while trying to
test it.
2017-06-20 21:41:43 -04:00
Marius
f3a2b84033
remove space
2017-06-20 23:58:23 +02:00
Marius
dfedddf0bd
Wrap scroll button workaround in try/except
...
for older pyqt5 versions (5.2.1)
2017-06-20 23:55:11 +02:00
Marius
6e166d139a
Fix alignment of scroll buttons in tab bar
2017-06-20 21:18:13 +02:00
Florian Bruhin
096b0a7a37
Remove unused import
2017-06-20 15:03:42 +02:00
Florian Bruhin
750ef834dc
Make PyOpenGL a required dependency
...
Looks like the "black screen" issue isn't the only thing going wrong, some
people even report segfaults since the vendor check was added.
2017-06-20 13:05:53 +02:00
Florian Bruhin
cf3c7266aa
Make show_error keyword-only
2017-06-20 12:45:36 +02:00
Florian Bruhin
06d4a24bd1
Merge branch 'master' of https://github.com/iordanisg/qutebrowser
2017-06-20 12:45:21 +02:00
Florian Bruhin
038dcff4ba
Ignore common URL issues while importing history
...
See #2646 .
This ignores the "corrupted" Apple-lookalike URLs, comments and data: URLs.
2017-06-20 12:19:14 +02:00
Florian Bruhin
f838eb1bdc
Use named formatting for queries in sql.py
2017-06-20 12:11:41 +02:00
Florian Bruhin
da875755d1
Add spaces after commas in SQL queries
2017-06-20 12:06:17 +02:00
Florian Bruhin
c1776bbf9d
Add error message when query failed to prepare
2017-06-20 12:05:40 +02:00
Florian Bruhin
29ce1b3811
Add column order in SqlTable._insert_query
...
_insert_query gets called with a query and dict of values such as:
{'val': 1, 'lucky': False, 'name': 'one'}
Via bindValues(), we only assign a placeholder in the query string to a value,
so we get a query with bindings like:
INSERT INTO Foo values(:lucky,:val,:name)
{':name': 'one', ':val': 1, ':lucky': False}
So what we're executing is something like:
INSERT INTO Foo values(false,1,"one")
However, if the column order in the database doesn't happen to be the order
we're passing the values in, we get the wrong values in the wrong columns.
Instead, we now do:
INSERT INTO Foo (lucky, val, name) values(false,1,"one")
Which inserts the values in the order we intended.
With Python 3.6, this just happened to work before because we always passed the
keyword arguments in the table column order, and in 3.6 dicts
(and thus **kwargs) happen to be ordered:
https://mail.python.org/pipermail/python-dev/2016-September/146327.html
2017-06-20 12:03:43 +02:00
Iordanis Grigoriou
f0ff02fcb2
Avoid throwing exception when no last focused tab exists
2017-06-19 15:48:17 +02:00
Florian Bruhin
7062f9e060
Update qt5-webkit-ng docs for Archlinux
2017-06-19 13:44:41 +02:00
Florian Bruhin
9f94f28181
Use :memory: for an in-memory database
...
Using an empty string for the same purpose only started working in some
recent-ish Qt/sqlite/? version, so using --version failed on Ubuntu Trusty.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
051d2665f3
Fix signal type error in CompletionView.
...
On Travis CI we are sometimes seeing:
```
CompletionView.selection_changed[str].emit():
argument 1 has unexpected type 'int'
```
Cast the data to a string before emitting it just to be safe.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
891a6bcf14
Fix flake8 errors
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
4e87773d89
Use a dict instead of named params for insert.
...
This allows replace to be a named parameter and allows consolidating
some duplicate code between various insert methods.
This also fixes some tests that broke because batch insert was broken.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
e436f48164
Small sql fixes.
...
- Remove unused SqlTable.Entry
- Fix wording of two log messages
- Remove unused import
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
f4f52ee204
Remove history.Entry.
...
No longer needed with sql backend. Query results build their own
namedtuple from the returned columns, and inserting new entries is just
done with named parameters.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
1fe1813431
Fix pylint errors.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
679e001a48
Separate sqlcategory title from table name.
...
Also fix a number of sql/completion tests that were failing.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
61a1709141
Fix completion selection bug.
...
Fix the issue where pressing `o<esc>o` would show a url completion
dialog where attempting to <Tab> select items would do nothing but show
a Qt warning.
The fix is to ensure we set _last_completion_func to None whenever we
clear completion (there was a case I missed).
It also ensures we always delete the old model and adds a safety to
prevent deleting an in-use model is set_model is called with the current
model.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
fa39b82b3c
Backup old history file after import.
...
Instead of removing it, move it to history.bak.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
22b7b21d5a
Use named placeholders for sql queries.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
862f8d3188
Always return col 0 for index parent.
...
This was changed during code review but was causing Qt errors while
TAB-completing in the selection view:
08:42:34 WARNING qt Unknown module:none:0 Can't select indexes from different model or with different parents
2017-06-19 07:44:11 -04:00
Florian Bruhin
18cd8ba0b6
Add indices for HistoryAtimeIndex and CompletionHistoryAtimeIndex
...
before
------
sqlite> SELECT * FROM History where not redirect and not url like "qute://%" and atime > ? and atime <= ? ORDER BY atime desc;
Run Time: real 0.072 user 0.063334 sys 0.010000
sqlite> explain query plan SELECT * FROM History where not redirect and not url like "qute://%" and atime > ? and atime <= ? ORDER BY atime desc;
0|0|0|SCAN TABLE History
0|0|0|USE TEMP B-TREE FOR ORDER BY
sqlite> explain query plan select url, title, strftime('%Y-%m-%d', last_atime, 'unixepoch') from CompletionHistory where (url like "%qute%" or title like "%qute%") order by last_atime desc;
0|0|0|SCAN TABLE CompletionHistory
0|0|0|USE TEMP B-TREE FOR ORDER BY
after
-----
sqlite> SELECT * FROM History where not redirect and not url like "qute://%" and atime > ? and atime <= ? ORDER BY atime desc;
Run Time: real 0.000 user 0.000000 sys 0.000000
sqlite> explain query plan SELECT * FROM History where not redirect and not url like "qute://%" and atime > ? and atime <= ? ORDER BY atime desc;
0|0|0|SEARCH TABLE History USING INDEX AtimeIndex (atime>? AND atime<?)
sqlite> explain query plan select url, title, strftime('%Y-%m-%d', last_atime, 'unixepoch') from CompletionHistory where (url like "%qute%" or title like "%qute%") order by last_atime desc;
0|0|0|SCAN TABLE CompletionHistory USING INDEX CompletionAtimeIndex
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
3a4ef09f58
More sql code review fixes
2017-06-19 07:44:11 -04:00
Florian Bruhin
9b0395db08
Add an lru cache for WebHistoryInterface.historyContains
...
When loading heise.de, for some crazy reason QtWebKit calls historyContains
about 16'000 times.
With this cache (which we simply clear when *any* page has been loaded, as then
the links which have been visited can change), that's down to 250 or so...
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
6fc61d12fc
Assorted small fixes for sql code review.
2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
feed9c8936
Better exception handling in history.
...
- Show an error message when import fails, not a generic crash dialog
- Raise CommandError when debug-dump-history fails
- Check that the path exists for debug-dump-history
2017-06-19 07:44:11 -04:00
Florian Bruhin
6ce52f39ae
Add debug timings for SQL
2017-06-19 07:44:11 -04:00