Commit graph

358 commits

Author SHA1 Message Date
René Stadler
44d94c72e0 Hide some columns by default 2014-09-11 20:51:48 +02:00
René Stadler
1a4374809b columns: optimize cell data functions a little 2014-09-11 20:51:48 +02:00
René Stadler
a83c471d00 Fix crash when copying row to clipboard 2014-09-11 20:51:48 +02:00
René Stadler
b3960cf8e0 timeline: fix incorrect position after scrolling using the timeline
Apparently events are dropped internally, so the last position after you stop
dragging can be off.
2014-09-11 20:51:48 +02:00
René Stadler
8e2000a3e2 models: store line offsets in arrays 2014-09-11 20:51:48 +02:00
René Stadler
66ed3bb258 Use pango markup instead of attributes
Attributes don't work from introspection, so this blocks porting to gtk3.

In MessageColumn, admit that multiple highlighters don't actually work.
2014-09-11 20:51:48 +02:00
René Stadler
634f17ed7d findbar: highlight multiple matches in a message 2014-09-11 20:51:48 +02:00
René Stadler
6cfca1c322 timeline: only redraw updated parts of the graph
Improves rendering performance a lot.
2014-09-11 20:51:48 +02:00
René Stadler
af308379b4 timeline: fix position rectangle missing on first click
Regression caused by previous commit.
2014-09-11 20:51:48 +02:00
René Stadler
985ef29bb3 timeline: only redraw required areas when updating position rectangle 2014-09-11 20:51:48 +02:00
René Stadler
bf28e9464e Fix crash when range filtering
Regression from 25cfe9 (timeline: make log level calculation a lot faster).
2014-09-11 20:51:48 +02:00
René Stadler
ca6aee7388 timeline: clean up widget drawing 2014-09-11 20:51:48 +02:00
René Stadler
2d508773cc timeline: make log level calculation a lot faster
This is the step where the timeline graph gets colored with the individual log
level colors. It's roughly 4.5 times faster now. Probably can be made even
better, the code also needs a cleanup.
2014-09-11 20:51:48 +02:00
René Stadler
103700a254 Data: improve stripped log file loading performance
A ~9% improvement for files without colors. This now slightly outperforms the
code before color support was added.
2014-09-11 20:51:48 +02:00
René Stadler
6061f34506 Data: also yield while loading unparseable files
Otherwise, the UI would be blocked while loading something big that is not a
log file at all.
2014-09-11 20:51:48 +02:00
René Stadler
fb032c177f Remove color stripping script 2014-09-11 20:51:48 +02:00
René Stadler
9474886d85 Data: add support for colored log files
Adds a ~5% penalty for loading stripped files.
2014-09-11 20:51:47 +02:00
René Stadler
409ae7e522 timeline: remove broken actions from context menu
Hide lines before/after doesn't work as expected in this case.
2014-09-11 20:51:47 +02:00
René Stadler
33a8efa93d Data: fix parsing of lines missing filename or function name
E.g. ffmpeg.
2014-09-11 20:51:47 +02:00
René Stadler
c8dc50da40 timeline: grab when scrolling in TimelineWidget
Also use gdk_event_request_motions.
2014-09-11 20:51:47 +02:00
René Stadler
bff238279d timeline: move mouse handling into TimelineWidget 2014-09-11 20:51:47 +02:00
René Stadler
039f5a1d7b timeline: replace self.connect calls with vmethod overrides 2014-09-11 20:51:47 +02:00
Andrzej Bieniek
ec31b51f85 setup: fix build 2014-09-11 20:51:47 +02:00
René Stadler
980aca88cf timeline: don't select row when changing position in the timeline
Behaves just like the scrollbar now.
2014-09-11 20:51:47 +02:00
René Stadler
ad959763af timeline: stop scanning the file while filtering 2014-09-11 20:51:47 +02:00
René Stadler
6d6f71049f timeline: small cleanup 2014-09-11 20:51:47 +02:00
René Stadler
fb9d9ca4cf Modernize menus a little
A bit in preparation to gtk3 app menus.
2014-09-11 20:51:47 +02:00
René Stadler
9864042ff8 Simplify and optimize filtered model implementation
RangeFilteredLogModel is gone. The functionality is trivially implemented in
FilteredLogModel now. Changing the range is now O(log n) at worst (was O(n) at
best, for rewriting the arrays). Stacking filtered models is not supported
anymore, which simplifies the code.
2014-09-11 20:51:47 +02:00
René Stadler
3caf64118b Make RangeFilteredLogModel internal to GUI.models 2014-09-11 20:51:47 +02:00
René Stadler
f47260fbc4 Always use a filtered log model in the log view
Preparing to phase out RangeFilteredLogModel.
2014-09-11 20:51:47 +02:00
René Stadler
01ce89639e models: cleanup dead code 2014-09-11 20:51:47 +02:00
René Stadler
bcfc4197d8 window: prevent default handler for delete-event from running 2014-09-11 20:51:47 +02:00
René Stadler
9829e2bec1 window: set to insensitive during load/filter operations 2014-09-11 20:51:47 +02:00
René Stadler
c84185ca48 window: show error for unparseable files 2014-09-11 20:51:47 +02:00
René Stadler
9fda3730a0 window: replace progress and error dialogs with InfoBars 2014-09-11 20:51:47 +02:00
René Stadler
bfb3b242c7 window: set wmclass, to have a nicer app name when running uninstalled 2014-09-11 20:51:47 +02:00
René Stadler
66e87f752a Data: fix up out-of-order log lines
This is important because we rely on monotonically increasing timestamps for
binary searches in various places.

Overhead for an already sorted file with 1 million lines is less than 5%.
2014-09-11 20:51:47 +02:00
René Stadler
50dd570f3a window: connect action handlers using a function decorator
A bit esoteric, but better than maintaining the list of action names.
2014-09-11 20:51:47 +02:00
René Stadler
421b437167 GUI: use 'with' statement 2014-09-11 20:51:47 +02:00
René Stadler
7a05a716d2 Switch to new try..except syntax
This is forward compatible to Python 3.
2014-09-11 20:51:47 +02:00
René Stadler
ca9a31ddd9 columns: auto size time column when setting base time
Base time formatting adds + or - in front of the timestamp, so the column has
to grow a little to not hide the last digit.

Also fixes a crash when setting the base time while the time column is hidden.
2014-09-11 20:51:47 +02:00
René Stadler
265cc8afdf columns: also auto size thread and pid column on zoom change 2014-09-11 20:51:47 +02:00
René Stadler
c2eddd8db4 columns: cleanup default size calculation
Some unused parameters here.
2014-09-11 20:51:46 +02:00
René Stadler
ae75acd50d Timeline: small cleanup 2014-09-11 20:51:46 +02:00
René Stadler
dab5357986 Data: remove log line serialization
This is incomplete and prone to error. Move it out into the utility script
(which is the only user).
2014-09-11 20:51:46 +02:00
René Stadler
836d10bc58 Remove odd-even row colors from log level column
This is more of visual clutter than aid. People also seem to be less likely to
spot the connection between the column and the timeline graph colors.
2014-09-11 20:51:46 +02:00
René Stadler
200c732056 Resize time and log level columns after zoom change 2014-09-11 20:51:46 +02:00
René Stadler
d7c5942403 Store zoom level in state 2014-09-11 20:51:46 +02:00
René Stadler
5b07a1fc39 Add zoom reset action 2014-09-11 20:51:46 +02:00
René Stadler
b7654532ba Clean up context menu
These actions are not so commonly used, and also are not depending on the
context at all.
2014-09-11 20:51:46 +02:00
René Stadler
b866669ae1 Refactor and fix zoom handling
ColumnManager has to apply the zoom factor to newly added columns. Otherwise,
showing a previously hidden column appears with scale 1.0.

This also drops the value-changed signal emission for the vadjustment, as it is
apparently not needed.
2014-09-11 20:51:46 +02:00
Stefan Kost
4e334e0e00 Add 'fixme' and 'trace' log levels 2014-09-11 20:51:46 +02:00
Stefan Kost
5fae4aa235 timeline: add tooltip to histogram as well 2014-09-11 20:51:46 +02:00
Stefan Kost
aa9db8ef8e Add zoom in/out actions, reduce vertical row padding
Add two actions to shrink and enlarge the text in the log pane. Add a theme
overide to set expander size to 1 (see bug #615985) and also turn focus lines
off. Remove extra ypadding on cells.
2014-09-11 20:51:46 +02:00
René Stadler
17894c705b Fix tests
Forgot to convert this when modules got split.
2014-09-11 20:51:46 +02:00
Andrzej Bieniek
ce72ad583e Fix --version option 2014-09-11 20:51:46 +02:00
René Stadler
1b724edcac Improve wording of hide lines actions
These also appear in the context menu of the timeline. The more generic wording
makes more sense for the timeline, since you do not pinpoint any specific line
in this case.
2014-09-11 20:51:46 +02:00
René Stadler
c89cada72a timeline: fix grey background artifact when enlarging window 2014-09-11 20:51:46 +02:00
René Stadler
05aa65551a Fix glib warnings on model property access
Seems like pygobject can all of the sudden not handle a NULL model on a
property. Using the getter works around this. Also using the setter now for
consistency.
2014-09-11 20:51:46 +02:00
René Stadler
e46367c073 timeline: fix possible lag when dragging on timeline
I need to idle-aggregate scroll updates, since gtk performs heavy operations in
a synchronous fashion here (ironically, they do that to make scrolling smooth).
2014-09-11 20:51:46 +02:00
René Stadler
1d009ac3c5 GUI: Work around GtkBuilder name property API break (gtk+ 2.20) 2014-09-11 20:51:46 +02:00
René Stadler
3ea9839542 setup.py: fix installation 2014-09-11 20:51:46 +02:00
René Stadler
4adee5c7f0 Main: fix import 2014-09-11 20:51:46 +02:00
René Stadler
8cfe17d064 Remove stale GUI module 2014-09-11 20:51:46 +02:00
René Stadler
097cacebbd Add new base time feature
The log view context menu gains a new action "Set base time", which changes the
time column to show the delta to the selected row.
2014-09-11 20:51:46 +02:00
René Stadler
d71d09759b Split giant GUI module into submodules 2014-09-11 20:51:46 +02:00
René Stadler
7b57fe2423 timeline: fix timestamp binary search
Fixes dragging the mouse over bigger gaps of log activity making the red
position rectangle come out next to the mouse pointer. Also selects the proper
row now, not randomly 1-2 rows before or after the gap.
2014-09-11 20:51:45 +02:00
René Stadler
3a90836f82 GUI: remove unused imports 2014-09-11 20:51:45 +02:00
René Stadler
5716050187 setup.py: Fix version number 2014-09-11 20:51:45 +02:00
René Stadler
390262a363 Cleanup whitespace 2014-09-11 20:51:45 +02:00
René Stadler
785292ce87 Update copyright statement in about dialog 2014-09-11 20:51:45 +02:00
René Stadler
63e62b670f Rename UIManager file 2014-09-11 20:51:45 +02:00
René Stadler
aa2366998d Re-write builder files with glade3 2014-09-11 20:51:45 +02:00
René Stadler
6369acee76 Migrate from glade to GtkBuilder 2014-09-11 20:51:45 +02:00
René Stadler
d78b540846 Remove glade project file 2014-09-11 20:51:45 +02:00
René Stadler
b468acd836 Fix logging being on by default with recent Python
The fix for Python issue #1021 uncovered a mistake of mine.  I was under the
impression that logging.NOTSET level means "off", but in fact it means to not
modify the level, and setting that on the root logger with basicConfig leads to
turning on all levels.
2014-09-11 20:51:45 +02:00
René Stadler
7dcd3db661 Use mmap in a portable way 2014-09-11 20:51:45 +02:00
René Stadler
984549d45a Add FIXME comments 2014-09-11 20:51:45 +02:00
René Stadler
867a312f93 GUI: Fix edit-copy-line action crashing/copying wrong line
When the view was unfiltered, this crashed.  When the view was range filtered,
this copied the wrong line.

Spotted by Stefan Kost.
2014-09-11 20:51:45 +02:00
René Stadler
1864f7c57b Migrate .bzrignore -> .gitignore 2014-09-11 20:51:45 +02:00
René Stadler
7fdbfa2cf4 Move more attribute lookups out of loops for speed 2014-09-11 20:51:45 +02:00
René Stadler
ff146e1cb1 Add support for recent log format changes, be more tolerant on whitespaces, cope with object names containing '>' 2014-09-11 20:51:45 +02:00
René Stadler
3f8e214447 Use correct license in about dialog 2014-09-11 20:51:45 +02:00
René Stadler
b78b2d40ce Fix installation by including missing packages 2014-09-11 20:51:45 +02:00
René Stadler
3505bd6a9c Add (placeholder) SVG icon file 2014-09-11 20:51:45 +02:00
René Stadler
c9aeb0ce2b Update vertical timeline when the widget size changes 2014-09-11 20:51:45 +02:00
René Stadler
c96c55a62c Fix bottom view showing the wrong selected log line 2014-09-11 20:51:45 +02:00
René Stadler
29ce10fb46 Fix bottom view line activating the wrong line after filtering 2014-09-11 20:51:45 +02:00
René Stadler
e75b817b72 Fix bottom view not showing current line until you add something there 2014-09-11 20:51:45 +02:00
René Stadler
43badaea0c Faster handling of partial expose events in timeline 2014-09-11 20:51:45 +02:00
René Stadler
ebda9480c3 Mention GStreamer in --help output 2014-09-11 20:51:45 +02:00
René Stadler
be38bc2906 Allow to cancel a running filter process 2014-09-11 20:51:44 +02:00
René Stadler
313d671fbf Make hide before/after action insensitive when first/last line is selected 2014-09-11 20:51:44 +02:00
René Stadler
53becaa72c Add filtering for object name and source code filename 2014-09-11 20:51:44 +02:00
René Stadler
35c11f13ab Add FIXME comment 2014-09-11 20:51:44 +02:00
René Stadler
b5caf22bdb Create own menu structure for log view context menu 2014-09-11 20:51:44 +02:00
René Stadler
04d90a4e38 Sync show-timeline action state before connecting signal handler 2014-09-11 20:51:44 +02:00
René Stadler
8b6e0d193f Timeline.py: Move per-window management into own class 2014-09-11 20:51:44 +02:00
René Stadler
500e68ca3e Re-format long line 2014-09-11 20:51:44 +02:00
René Stadler
e1182e28c3 Replace gdk.ALL_EVENTS_MASK with proper minimal set of event flags 2014-09-11 20:51:44 +02:00