[pan2] - fix for dbus crashes - implemented hotkey UI, todo: replace keys dynamically
- From: Heinrich MÃller <henmull src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pan2] - fix for dbus crashes - implemented hotkey UI, todo: replace keys dynamically
- Date: Fri, 20 Jan 2012 21:08:18 +0000 (UTC)
commit 985dac14daa1f6871372d89bc99ab0bede71f849
Author: Heinrich MÃller <henmull src gnome org>
Date: Fri Jan 20 18:32:12 2012 +0100
- fix for dbus crashes
- implemented hotkey UI, todo: replace keys dynamically
pan.cbp | 871 ++++++++++++--------------------------------
pan.png | Bin 3897 -> 4041 bytes
pan/data-impl/Makefile.am | 4 +-
pan/data-impl/data-impl.cc | 1 -
pan/data-impl/data-impl.h | 11 -
pan/data-impl/hotkeys.cc | 123 -------
pan/data/article-cache.cc | 2 -
pan/data/data.h | 12 -
pan/gui/Makefile.am | 3 +-
pan/gui/actions.cc | 59 +---
pan/gui/actions.h | 2 -
pan/gui/gui.cc | 19 +-
pan/gui/hotkeys.cc | 56 +++
pan/gui/pan.cc | 30 +-
pan/gui/prefs-ui.cc | 200 ++++++++++
pan/gui/prefs.cc | 27 ++
pan/gui/prefs.h | 12 +
17 files changed, 559 insertions(+), 873 deletions(-)
---
diff --git a/pan.cbp b/pan.cbp
index 7a104e1..f280e71 100644
--- a/pan.cbp
+++ b/pan.cbp
@@ -61,696 +61,285 @@
<Unit filename="config.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/data-impl/add-server.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/article-filter.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/article-filter.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/data-impl/add-server.cc" />
+ <Unit filename="pan/data-impl/article-filter.cc" />
+ <Unit filename="pan/data-impl/article-filter.h" />
<Unit filename="pan/data-impl/cert-store.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/data-impl/data-impl.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/data-impl.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/data-io.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/data-io.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/groups.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/headers-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/headers.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/memchunk.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/my-tree.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/profiles.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/profiles.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/rules-filter.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/rules-filter.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/server.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/speed-test-load-group.cc">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/data-impl/data-impl.cc" />
+ <Unit filename="pan/data-impl/data-impl.h" />
+ <Unit filename="pan/data-impl/data-io.cc" />
+ <Unit filename="pan/data-impl/data-io.h" />
+ <Unit filename="pan/data-impl/defgroup.h" />
+ <Unit filename="pan/data-impl/groups.cc" />
+ <Unit filename="pan/data-impl/headers-test.cc" />
+ <Unit filename="pan/data-impl/headers.cc" />
+ <Unit filename="pan/data-impl/memchunk.h" />
+ <Unit filename="pan/data-impl/my-tree.cc" />
+ <Unit filename="pan/data-impl/profiles.cc" />
+ <Unit filename="pan/data-impl/profiles.h" />
+ <Unit filename="pan/data-impl/rules-filter.cc" />
+ <Unit filename="pan/data-impl/rules-filter.h" />
+ <Unit filename="pan/data-impl/server.cc" />
+ <Unit filename="pan/data-impl/speed-test-load-group.cc" />
<Unit filename="pan/data-impl/sql-db.cc">
<Option target="all_linux" />
</Unit>
<Unit filename="pan/data-impl/sql-db.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/data-impl/task-archive.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data-impl/xover.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/article-cache.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/article-cache.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/article-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/article.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/article.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/cert-store.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/cert-store.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/data.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/data.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/encode-cache.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/encode-cache.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/parts.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/parts.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/server-info.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/data-impl/task-archive.cc" />
+ <Unit filename="pan/data-impl/xover.cc" />
+ <Unit filename="pan/data/article-cache.cc" />
+ <Unit filename="pan/data/article-cache.h" />
+ <Unit filename="pan/data/article-test.cc" />
+ <Unit filename="pan/data/article.cc" />
+ <Unit filename="pan/data/article.h" />
+ <Unit filename="pan/data/cert-store.cc" />
+ <Unit filename="pan/data/cert-store.h" />
+ <Unit filename="pan/data/data.cc" />
+ <Unit filename="pan/data/data.h" />
+ <Unit filename="pan/data/defgroup.h" />
+ <Unit filename="pan/data/encode-cache.cc" />
+ <Unit filename="pan/data/encode-cache.h" />
+ <Unit filename="pan/data/parts.cc" />
+ <Unit filename="pan/data/parts.h" />
+ <Unit filename="pan/data/server-info.h" />
<Unit filename="pan/data/xover-cache.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/data/xref-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/xref.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/data/xref.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/debug.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/debug.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/e-util.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/e-util.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/file-util.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/file-util.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/data/xref-test.cc" />
+ <Unit filename="pan/data/xref.cc" />
+ <Unit filename="pan/data/xref.h" />
+ <Unit filename="pan/general/debug.cc" />
+ <Unit filename="pan/general/debug.h" />
+ <Unit filename="pan/general/defgroup.h" />
+ <Unit filename="pan/general/e-util.cc" />
+ <Unit filename="pan/general/e-util.h" />
+ <Unit filename="pan/general/file-util.cc" />
+ <Unit filename="pan/general/file-util.h" />
<Unit filename="pan/general/gdk-threads.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/general/line-reader.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/line-reader.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/locking.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/log.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/log.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/macros.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/map-vector.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/messages.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/general/line-reader.cc" />
+ <Unit filename="pan/general/line-reader.h" />
+ <Unit filename="pan/general/locking.h" />
+ <Unit filename="pan/general/log.cc" />
+ <Unit filename="pan/general/log.h" />
+ <Unit filename="pan/general/macros.h" />
+ <Unit filename="pan/general/map-vector.h" />
+ <Unit filename="pan/general/messages.h" />
<Unit filename="pan/general/non-gui.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/general/progress-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/progress.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/progress.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/quark-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/quark.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/quark.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/sorted-vector.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/string-view-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/string-view.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/string-view.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/test.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/text-match-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/text-match.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/text-match.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/time-elapsed.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/utf8-utils.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/utf8-utils.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/worker-pool.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/general/worker-pool.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/action-manager.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/actions.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/actions.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/body-pane.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/body-pane.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/dl-headers-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/dl-headers-ui.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/general/progress-test.cc" />
+ <Unit filename="pan/general/progress.cc" />
+ <Unit filename="pan/general/progress.h" />
+ <Unit filename="pan/general/quark-test.cc" />
+ <Unit filename="pan/general/quark.cc" />
+ <Unit filename="pan/general/quark.h" />
+ <Unit filename="pan/general/sorted-vector.h" />
+ <Unit filename="pan/general/string-view-test.cc" />
+ <Unit filename="pan/general/string-view.cc" />
+ <Unit filename="pan/general/string-view.h" />
+ <Unit filename="pan/general/test.h" />
+ <Unit filename="pan/general/text-match-test.cc" />
+ <Unit filename="pan/general/text-match.cc" />
+ <Unit filename="pan/general/text-match.h" />
+ <Unit filename="pan/general/time-elapsed.h" />
+ <Unit filename="pan/general/utf8-utils.cc" />
+ <Unit filename="pan/general/utf8-utils.h" />
+ <Unit filename="pan/general/worker-pool.cc" />
+ <Unit filename="pan/general/worker-pool.h" />
+ <Unit filename="pan/gui/action-manager.h" />
+ <Unit filename="pan/gui/actions.cc" />
+ <Unit filename="pan/gui/actions.h" />
+ <Unit filename="pan/gui/body-pane.cc" />
+ <Unit filename="pan/gui/body-pane.h" />
+ <Unit filename="pan/gui/defgroup.h" />
+ <Unit filename="pan/gui/dl-headers-ui.cc" />
+ <Unit filename="pan/gui/dl-headers-ui.h" />
<Unit filename="pan/gui/e-action-combo-box.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/e-action-combo-box.h">
- <Option target="all_linux" />
</Unit>
+ <Unit filename="pan/gui/e-action-combo-box.h" />
<Unit filename="pan/gui/e-charset-combo-box.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/e-charset-combo-box.h">
- <Option target="all_linux" />
</Unit>
+ <Unit filename="pan/gui/e-charset-combo-box.h" />
<Unit filename="pan/gui/e-charset-dialog.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/e-charset-dialog.h">
- <Option target="all_linux" />
</Unit>
+ <Unit filename="pan/gui/e-charset-dialog.h" />
<Unit filename="pan/gui/e-charset.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/e-charset.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/group-pane.cc">
- <Option target="all_linux" />
</Unit>
- <Unit filename="pan/gui/group-pane.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/group-prefs-dialog.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/group-prefs-dialog.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/group-prefs.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/group-prefs.h">
- <Option target="all_linux" />
+ <Unit filename="pan/gui/e-charset.h" />
+ <Unit filename="pan/gui/e-cte-dialog.c">
+ <Option compilerVar="CC" />
</Unit>
+ <Unit filename="pan/gui/e-cte-dialog.h" />
+ <Unit filename="pan/gui/group-pane.cc" />
+ <Unit filename="pan/gui/group-pane.h" />
+ <Unit filename="pan/gui/group-prefs-dialog.cc" />
+ <Unit filename="pan/gui/group-prefs-dialog.h" />
+ <Unit filename="pan/gui/group-prefs.cc" />
+ <Unit filename="pan/gui/group-prefs.h" />
+ <Unit filename="pan/gui/gtk-compat.h" />
<Unit filename="pan/gui/gtk_compat.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/gui/gui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/gui.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/gui/gui.cc" />
+ <Unit filename="pan/gui/gui.h" />
<Unit filename="pan/gui/header-pane-factory.cc">
<Option target="all_linux" />
</Unit>
<Unit filename="pan/gui/header-pane-factory.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/gui/header-pane.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/header-pane.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/hig.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/hig.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/license.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/log-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/log-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pad.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan-file-entry.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan-file-entry.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/gui/header-pane.cc" />
+ <Unit filename="pan/gui/header-pane.h" />
+ <Unit filename="pan/gui/hig.cc" />
+ <Unit filename="pan/gui/hig.h" />
+ <Unit filename="pan/gui/hotkeys.cc" />
+ <Unit filename="pan/gui/license.h" />
+ <Unit filename="pan/gui/log-ui.cc" />
+ <Unit filename="pan/gui/log-ui.h" />
+ <Unit filename="pan/gui/pad.h" />
+ <Unit filename="pan/gui/pan-file-entry.cc" />
+ <Unit filename="pan/gui/pan-file-entry.h" />
<Unit filename="pan/gui/pan-pixbufs.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan-tree.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan-tree.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/pan.ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/panrc.rc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/post-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/post-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/post.ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs-file.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs-file.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/prefs.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/profiles-dialog.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/profiles-dialog.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/progress-view.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/progress-view.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/render-bytes.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/render-bytes.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/save-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/save-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/score-add-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/score-add-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/score-view-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/score-view-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/server-ui.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/server-ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/tango-colors.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/task-pane.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/task-pane.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/taskpane.ui.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/url.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/url.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/wait.h">
- <Option target="all_linux" />
</Unit>
+ <Unit filename="pan/gui/pan-tree.cc" />
+ <Unit filename="pan/gui/pan-tree.h" />
+ <Unit filename="pan/gui/pan-ui.h" />
+ <Unit filename="pan/gui/pan.cc" />
+ <Unit filename="pan/gui/pan.ui.h" />
+ <Unit filename="pan/gui/pan.ui.ssl.h" />
+ <Unit filename="pan/gui/panrc.rc" />
+ <Unit filename="pan/gui/post-ui.cc" />
+ <Unit filename="pan/gui/post-ui.h" />
+ <Unit filename="pan/gui/post.ui.h" />
+ <Unit filename="pan/gui/post.ui.pgp.h" />
+ <Unit filename="pan/gui/prefs-file.cc" />
+ <Unit filename="pan/gui/prefs-file.h" />
+ <Unit filename="pan/gui/prefs-ui.cc" />
+ <Unit filename="pan/gui/prefs-ui.h" />
+ <Unit filename="pan/gui/prefs.cc" />
+ <Unit filename="pan/gui/prefs.h" />
+ <Unit filename="pan/gui/profiles-dialog.cc" />
+ <Unit filename="pan/gui/profiles-dialog.h" />
+ <Unit filename="pan/gui/progress-view.cc" />
+ <Unit filename="pan/gui/progress-view.h" />
+ <Unit filename="pan/gui/render-bytes.cc" />
+ <Unit filename="pan/gui/render-bytes.h" />
+ <Unit filename="pan/gui/save-attach-ui.cc" />
+ <Unit filename="pan/gui/save-attach-ui.h" />
+ <Unit filename="pan/gui/save-ui.cc" />
+ <Unit filename="pan/gui/save-ui.h" />
+ <Unit filename="pan/gui/score-add-ui.cc" />
+ <Unit filename="pan/gui/score-add-ui.h" />
+ <Unit filename="pan/gui/score-view-ui.cc" />
+ <Unit filename="pan/gui/score-view-ui.h" />
+ <Unit filename="pan/gui/server-ui.cc" />
+ <Unit filename="pan/gui/server-ui.h" />
+ <Unit filename="pan/gui/tango-colors.h" />
+ <Unit filename="pan/gui/task-pane.cc" />
+ <Unit filename="pan/gui/task-pane.h" />
+ <Unit filename="pan/gui/taskpane.ui.h" />
+ <Unit filename="pan/gui/url.cc" />
+ <Unit filename="pan/gui/url.h" />
+ <Unit filename="pan/gui/wait.h" />
<Unit filename="pan/gui/xface.c">
<Option compilerVar="CC" />
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/gui/xface.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/icons/pan-pixbufs-internal.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/icons/pan-pixbufs.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/adaptable-set-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/adaptable-set.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/adaptable-set.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/decoder.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/decoder.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/encoder.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/encoder.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/health.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nntp-pool.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nntp-pool.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nntp.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nntp.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nzb-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nzb.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/nzb.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/queue.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/queue.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-gio.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-gio.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-main.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-main.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-openssl.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-openssl.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-scripted.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket-impl-scripted.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/socket.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-article.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-article.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-groups.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-groups.h">
- <Option target="all_linux" />
</Unit>
+ <Unit filename="pan/gui/xface.h" />
+ <Unit filename="pan/icons/pan-pixbufs-internal.h" />
+ <Unit filename="pan/icons/pan-pixbufs.h" />
+ <Unit filename="pan/icons/pan_icons/pan-pixbufs-internal.h" />
+ <Unit filename="pan/icons/pan_icons/pan-pixbufs.h" />
+ <Unit filename="pan/tasks/adaptable-set-test.cc" />
+ <Unit filename="pan/tasks/adaptable-set.cc" />
+ <Unit filename="pan/tasks/adaptable-set.h" />
+ <Unit filename="pan/tasks/decoder.cc" />
+ <Unit filename="pan/tasks/decoder.h" />
+ <Unit filename="pan/tasks/defgroup.h" />
+ <Unit filename="pan/tasks/encoder.cc" />
+ <Unit filename="pan/tasks/encoder.h" />
+ <Unit filename="pan/tasks/health.h" />
+ <Unit filename="pan/tasks/nntp-pool.cc" />
+ <Unit filename="pan/tasks/nntp-pool.h" />
+ <Unit filename="pan/tasks/nntp.cc" />
+ <Unit filename="pan/tasks/nntp.h" />
+ <Unit filename="pan/tasks/nzb-test.cc" />
+ <Unit filename="pan/tasks/nzb.cc" />
+ <Unit filename="pan/tasks/nzb.h" />
+ <Unit filename="pan/tasks/queue.cc" />
+ <Unit filename="pan/tasks/queue.h" />
+ <Unit filename="pan/tasks/socket-impl-gio.cc" />
+ <Unit filename="pan/tasks/socket-impl-gio.h" />
+ <Unit filename="pan/tasks/socket-impl-main.cc" />
+ <Unit filename="pan/tasks/socket-impl-main.h" />
+ <Unit filename="pan/tasks/socket-impl-openssl.cc" />
+ <Unit filename="pan/tasks/socket-impl-openssl.h" />
+ <Unit filename="pan/tasks/socket-impl-scripted.cc" />
+ <Unit filename="pan/tasks/socket-impl-scripted.h" />
+ <Unit filename="pan/tasks/socket.cc" />
+ <Unit filename="pan/tasks/socket.h" />
+ <Unit filename="pan/tasks/task-article.cc" />
+ <Unit filename="pan/tasks/task-article.h" />
+ <Unit filename="pan/tasks/task-groups.cc" />
+ <Unit filename="pan/tasks/task-groups.h" />
<Unit filename="pan/tasks/task-multipost.h">
<Option target="all_linux" />
</Unit>
- <Unit filename="pan/tasks/task-post.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-post.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-upload.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-upload.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-weak-ordering.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-xover.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task-xover.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/task.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/upload-queue.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/tasks/upload-queue.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/MersenneTwister.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/defgroup.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/filter-info.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/filter-info.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/gnksa-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/gnksa.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/gnksa.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/message-check-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/message-check.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/message-check.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/mime-utils.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/mime-utils.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/numbers-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/numbers.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/numbers.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/rules-info.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/rules-info.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/scorefile-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/scorefile.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/scorefile.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/ssl-utils.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/text-massager-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/text-massager.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/text-massager.h">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/url-find-test.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/url-find.cc">
- <Option target="all_linux" />
- </Unit>
- <Unit filename="pan/usenet-utils/url-find.h">
- <Option target="all_linux" />
- </Unit>
+ <Unit filename="pan/tasks/task-post.cc" />
+ <Unit filename="pan/tasks/task-post.h" />
+ <Unit filename="pan/tasks/task-upload.cc" />
+ <Unit filename="pan/tasks/task-upload.h" />
+ <Unit filename="pan/tasks/task-weak-ordering.h" />
+ <Unit filename="pan/tasks/task-xover.cc" />
+ <Unit filename="pan/tasks/task-xover.h" />
+ <Unit filename="pan/tasks/task-xoverinfo.cc" />
+ <Unit filename="pan/tasks/task-xoverinfo.h" />
+ <Unit filename="pan/tasks/task.cc" />
+ <Unit filename="pan/tasks/task.h" />
+ <Unit filename="pan/tasks/upload-queue.cc" />
+ <Unit filename="pan/tasks/upload-queue.h" />
+ <Unit filename="pan/usenet-utils/MersenneTwister.h" />
+ <Unit filename="pan/usenet-utils/blowfish.cc" />
+ <Unit filename="pan/usenet-utils/blowfish.h" />
+ <Unit filename="pan/usenet-utils/blowfish_cyphers.h" />
+ <Unit filename="pan/usenet-utils/defgroup.h" />
+ <Unit filename="pan/usenet-utils/filter-info.cc" />
+ <Unit filename="pan/usenet-utils/filter-info.h" />
+ <Unit filename="pan/usenet-utils/gnksa-test.cc" />
+ <Unit filename="pan/usenet-utils/gnksa.cc" />
+ <Unit filename="pan/usenet-utils/gnksa.h" />
+ <Unit filename="pan/usenet-utils/gpg.cc" />
+ <Unit filename="pan/usenet-utils/gpg.h" />
+ <Unit filename="pan/usenet-utils/message-check-test.cc" />
+ <Unit filename="pan/usenet-utils/message-check.cc" />
+ <Unit filename="pan/usenet-utils/message-check.h" />
+ <Unit filename="pan/usenet-utils/mime-utils.cc" />
+ <Unit filename="pan/usenet-utils/mime-utils.h" />
+ <Unit filename="pan/usenet-utils/numbers-test.cc" />
+ <Unit filename="pan/usenet-utils/numbers.cc" />
+ <Unit filename="pan/usenet-utils/numbers.h" />
+ <Unit filename="pan/usenet-utils/rules-info.cc" />
+ <Unit filename="pan/usenet-utils/rules-info.h" />
+ <Unit filename="pan/usenet-utils/scorefile-test.cc" />
+ <Unit filename="pan/usenet-utils/scorefile.cc" />
+ <Unit filename="pan/usenet-utils/scorefile.h" />
+ <Unit filename="pan/usenet-utils/ssl-utils.h" />
+ <Unit filename="pan/usenet-utils/text-massager-test.cc" />
+ <Unit filename="pan/usenet-utils/text-massager.cc" />
+ <Unit filename="pan/usenet-utils/text-massager.h" />
+ <Unit filename="pan/usenet-utils/url-find-test.cc" />
+ <Unit filename="pan/usenet-utils/url-find.cc" />
+ <Unit filename="pan/usenet-utils/url-find.h" />
<Unit filename="uulib/crc32.c">
<Option compilerVar="CC" />
<Option target="all_linux" />
diff --git a/pan.png b/pan.png
index 1d6ccad..7b01de9 100644
Binary files a/pan.png and b/pan.png differ
diff --git a/pan/data-impl/Makefile.am b/pan/data-impl/Makefile.am
index 9dbb6d7..7c11b43 100644
--- a/pan/data-impl/Makefile.am
+++ b/pan/data-impl/Makefile.am
@@ -15,8 +15,8 @@ libpandata_a_SOURCES = \
server.cc \
my-tree.cc \
task-archive.cc \
- xover.cc \
- hotkeys.cc
+ xover.cc
+
noinst_HEADERS = \
article-filter.h \
diff --git a/pan/data-impl/data-impl.cc b/pan/data-impl/data-impl.cc
index a047305..6d03af6 100644
--- a/pan/data-impl/data-impl.cc
+++ b/pan/data-impl/data-impl.cc
@@ -124,7 +124,6 @@ DataImpl :: save_state ()
debug ("data-impl dtor saving xov, newsrc...");
save_group_xovers (*_data_io);
save_newsrc_files (*_data_io);
- save_hotkeys (*_data_io);
}
}
diff --git a/pan/data-impl/data-impl.h b/pan/data-impl/data-impl.h
index edb4b13..0d86f83 100644
--- a/pan/data-impl/data-impl.h
+++ b/pan/data-impl/data-impl.h
@@ -284,22 +284,11 @@ namespace pan
void load_group_permissions (const DataIO&);
void save_group_permissions (DataIO&) const;
- int load_hotkeys (const DataIO&);
- void save_hotkeys (DataIO&) const;
- void create_hotkeys (const DataIO&);
-
std::string get_newsrc_filename (const Quark& server) const;
void load_newsrc (const Quark& server, LineReader*, alpha_groups_t&, alpha_groups_t&);
void load_newsrc_files (const DataIO&);
void save_newsrc_files (DataIO&) const;
- public:
-
- virtual int get_all_hotkeys()
- {
- return load_hotkeys(*_data_io);
- }
-
public: // mutators
virtual void add_groups (const Quark & server,
diff --git a/pan/data/article-cache.cc b/pan/data/article-cache.cc
index ffb8df4..6a431c2 100644
--- a/pan/data/article-cache.cc
+++ b/pan/data/article-cache.cc
@@ -72,8 +72,6 @@ ArticleCache :: filename_to_message_id (char * buf, int len, const char * basena
*pch = '\0';
g_strstrip (tmp_basename);
- std::cerr<<"debug "<<tmp_basename<<"\n";
-
// transform
out = buf;
*out++ = '<';
diff --git a/pan/data/data.h b/pan/data/data.h
index 4c9bcf8..0190d7c 100644
--- a/pan/data/data.h
+++ b/pan/data/data.h
@@ -43,8 +43,6 @@
namespace pan
{
- typedef std::map<Quark,Quark> hotkeys_t;
-
class FilterInfo;
class RulesInfo;
class Queue;
@@ -176,9 +174,6 @@ namespace pan
{
public:
- hotkeys_t _hotkeys, _toggle_hotkeys;
-
- public:
struct PasswordData
{
Quark server;
@@ -597,13 +592,6 @@ namespace pan
void set_queue (Queue* q) { _queue = q; }
Queue* get_queue () { return _queue; }
- const hotkeys_t& get_hotkeys() const { return _hotkeys; }
- const hotkeys_t& get_toggle_hotkeys() const { return _toggle_hotkeys; }
- hotkeys_t& get_hotkeys() { return _hotkeys; }
- hotkeys_t& get_toggle_hotkeys() { return _toggle_hotkeys; }
- ///TODO move these upper two to dataimpl and make virtual
- virtual int get_all_hotkeys () = 0;
-
private:
Queue * _queue;
diff --git a/pan/gui/Makefile.am b/pan/gui/Makefile.am
index 0292501..605b8db 100644
--- a/pan/gui/Makefile.am
+++ b/pan/gui/Makefile.am
@@ -35,7 +35,8 @@ libpangui_a_SOURCES = \
server-ui.cc \
task-pane.cc \
xface.c \
- url.cc
+ url.cc \
+ hotkeys.cc
noinst_HEADERS = \
action-manager.h \
diff --git a/pan/gui/actions.cc b/pan/gui/actions.cc
index 351f164..329e7e5 100644
--- a/pan/gui/actions.cc
+++ b/pan/gui/actions.cc
@@ -352,7 +352,7 @@ namespace
G_CALLBACK(do_print) },
{ "import-tasks", GTK_STOCK_OPEN,
- N_("_Import NZB Files..."), NULL,
+ N_("_Import NZB Files..."), "<constrol>O",
NULL,
G_CALLBACK(do_import_tasks) },
@@ -765,52 +765,6 @@ namespace
}
void
-pan :: add_hotkeys_to_actions (hotkeys_t& hk, hotkeys_t& t_hk)
-{
- for (GtkToggleActionEntry *it(toggle_entries), *end(it+n_toggle_entries); it!=end; ++it)
- {
- GtkActionEntry* e (reinterpret_cast<GtkActionEntry*>(it));
- if (t_hk.count(e->name) > 0)
- {
- e->accelerator = t_hk[e->name];
-// std::cerr<<"setting hotkey for action '"<<e->name<<"' to '"<<t_hk[e->name]<<"', count "<<t_hk.count(e->name)<<"\n";
- }
- }
-
- for (GtkActionEntry *it(entries), *end(it+n_entries); it!=end; ++it)
- {
- GtkActionEntry* e(it);
-
- if (hk.count(e->name) > 0)
- {
- e->accelerator = hk[e->name];
-// std::cerr<<"setting hotkey for action '"<<e->name<<"' to '"<<hk[e->name]<<"', count "<<hk.count(e->name)<<"\n";
- }
- }
-}
-
-void
-pan :: add_new_hotkeys_from_ui (hotkeys_t& hk, hotkeys_t& t_hk)
-{
- for (GtkActionEntry *it(entries), *end(it+n_entries); it!=end; ++it)
- {
- GtkActionEntry* e(it);
-// std::cerr<<"setting hotkey for action '"<<e->name<<"' to '"<<(e->accelerator ? e->accelerator : "NULL")<<"\n";
- hk[e->name] = (e->accelerator ? e->accelerator : "");
- }
-
- for (GtkToggleActionEntry *it(toggle_entries), *end(it+n_toggle_entries); it!=end; ++it)
- {
- GtkActionEntry* e (reinterpret_cast<GtkActionEntry*>(it));
-// std::cerr<<"setting hotkey for action '"<<e->name<<"' to '"<<(e->accelerator ? e->accelerator : "NULL")<<"\n";
- t_hk[e->name] = (e->accelerator ? e->accelerator : "");
- }
-
- std::cerr<<"sizes "<<hk.size()<<" "<<t_hk.size()<<"\n";
-
-}
-
-void
pan :: add_actions (PanUI * ui, GtkUIManager * ui_manager, Prefs * p, Data* data)
{
pan_ui = ui;
@@ -818,14 +772,9 @@ pan :: add_actions (PanUI * ui, GtkUIManager * ui_manager, Prefs * p, Data* data
register_my_builtin_icons ();
- int ret = data->get_all_hotkeys ();
- if (ret > 0)
- add_hotkeys_to_actions(data->get_hotkeys(), data->get_toggle_hotkeys());
- else
- {
- // create initial shortcuts file for the user
- add_new_hotkeys_from_ui (data->get_hotkeys(), data->get_toggle_hotkeys());
- }
+ std::map<gchar*,guint> keymap;
+
+// int ret = get_all_hotkeys (keymap);
for (GtkToggleActionEntry *it(toggle_entries), *end(it+n_toggle_entries); it!=end; ++it)
{
diff --git a/pan/gui/actions.h b/pan/gui/actions.h
index 461c028..3519d8b 100644
--- a/pan/gui/actions.h
+++ b/pan/gui/actions.h
@@ -27,8 +27,6 @@
namespace pan
{
void add_actions (PanUI*, GtkUIManager*, Prefs*, Data*);
- void add_hotkeys_to_actions (hotkeys_t& hk, hotkeys_t& t_hk);
- void add_new_hotkeys_from_ui (hotkeys_t& hk, hotkeys_t& t_hk);
}
#endif /* __PAN_H__ */
diff --git a/pan/gui/gui.cc b/pan/gui/gui.cc
index 701d061..144fb63 100644
--- a/pan/gui/gui.cc
+++ b/pan/gui/gui.cc
@@ -76,6 +76,16 @@ extern "C" {
#include <pan/usenet-utils/gpg.h>
+namespace
+{
+ std::string get_accel_filename () {
+ char * tmp = g_build_filename (file::get_pan_home().c_str(), "accels.txt", NULL);
+ std::string ret (tmp);
+ g_free (tmp);
+ return ret;
+ }
+}
+
namespace pan
{
void
@@ -167,15 +177,6 @@ void GUI :: show_task_window_cb (GtkWidget *, gpointer gui_gpointer)
static_cast<GUI*>(gui_gpointer)->activate_action ("show-task-window");
}
-namespace
-{
- std::string get_accel_filename () {
- char * tmp = g_build_filename (file::get_pan_home().c_str(), "accels.txt", NULL);
- std::string ret (tmp);
- g_free (tmp);
- return ret;
- }
-}
GUI :: GUI (Data& data, Queue& queue, Prefs& prefs, GroupPrefs& group_prefs):
_data (data),
diff --git a/pan/gui/hotkeys.cc b/pan/gui/hotkeys.cc
new file mode 100644
index 0000000..80971a2
--- /dev/null
+++ b/pan/gui/hotkeys.cc
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * Pan - A Newsreader for Gtk+
+ * Copyright (C) 2002-2006 Charles Kerr <charles rebelbase com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <config.h>
+extern "C" {
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+}
+
+#include <pan/general/file-util.h>
+#include <pan/general/macros.h>
+#include <pan/general/log.h>
+
+#include <pan/data-impl/data-io.h>
+#include <pan/data-impl/data-impl.h>
+
+#include "hotkeys.h"
+
+using namespace pan;
+
+namespace
+{
+ void foreach_fill_func (gpointer data,
+ const gchar *accel_path,
+ guint accel_key,
+ GdkModifierType accel_mods,
+ gboolean changed)
+ {
+ std::map<gchar*,guint>* map = static_cast<std::map<gchar*,guint>*>(data);
+
+ }
+}
+
+int
+fill_hotkeys(std::map<gchar*, guint>& keymap)
+{
+ gtk_accel_map_foreach (&keymap, foreach_fill_func);
+ return 0;
+}
+
diff --git a/pan/gui/pan.cc b/pan/gui/pan.cc
index 15d5141..e487c8b 100644
--- a/pan/gui/pan.cc
+++ b/pan/gui/pan.cc
@@ -816,7 +816,6 @@ _("General Options\n"
pan_dbus_deinit (Pan* pan)
{
g_bus_unown_name(pan->dbus_id);
- if (dbus_connection) g_dbus_connection_close(dbus_connection,NULL,0,NULL);
}
/***
@@ -940,20 +939,23 @@ main (int argc, char *argv[])
GVariant* var;
if (!dbus_connection) goto _fail;
+ if (pan->dbus_id == -1)
+ {
- var = g_variant_new ("(sssbb)",
- groups.c_str(), nzb_output_path.c_str(), nzb_str.c_str(), gui, nzb);
- g_dbus_connection_call_sync (dbus_connection,
- PAN_DBUS_SERVICE_NAME,
- PAN_DBUS_SERVICE_PATH,
- "news.pan.NZB",
- "NZBEnqueue",
- var,
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
+ var = g_variant_new ("(sssbb)",
+ groups.c_str(), nzb_output_path.c_str(), nzb_str.c_str(), gui, nzb);
+ g_dbus_connection_call_sync (dbus_connection,
+ PAN_DBUS_SERVICE_NAME,
+ PAN_DBUS_SERVICE_PATH,
+ "news.pan.NZB",
+ "NZBEnqueue",
+ var,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+ }
if (!error)
{
std::cout<<"Added "<<nzb_files.size()<<" files to the queue. Exiting.\n";
diff --git a/pan/gui/prefs-ui.cc b/pan/gui/prefs-ui.cc
index e72a69b..8289b13 100644
--- a/pan/gui/prefs-ui.cc
+++ b/pan/gui/prefs-ui.cc
@@ -24,6 +24,7 @@ extern "C" {
}
#include <pan/general/debug.h>
#include <pan/general/macros.h>
+#include <pan/general/file-util.h>
#include <pan/icons/pan-pixbufs.h>
#include "hig.h"
#include "pad.h"
@@ -33,14 +34,160 @@ extern "C" {
#include "url.h"
#include "gtk-compat.h"
#include "e-charset-dialog.h"
+#include "hotkeys.h"
using namespace pan;
namespace
{
+ std::string get_accel_filename () {
+ char * tmp = g_build_filename (file::get_pan_home().c_str(), "accels.txt", NULL);
+ std::string ret (tmp);
+ g_free (tmp);
+ return ret;
+ }
+
+ typedef struct std::map<std::string,GtkAccelKey> keymap_t;
+
+ struct HotkeyData
+ {
+ GtkWidget* w;
+ int* row;
+ Prefs* prefs;
+ keymap_t keys;
+ };
+
+ static HotkeyData hotkey_data;
+
+// void hotkey_entry_icon_press_cb(GtkEntry * entry,
+// GtkEntryIconPosition,
+// GdkEvent *,
+// gpointer gpointer)
+// {
+// char* ptr = static_cast<char*>(gpointer);
+//
+// guint key;
+// GdkModifierType mod;
+//
+// gtk_accelerator_parse (gtk_entry_get_text(entry),&key,&mod);
+//
+// std::cerr<<"click parse "<<ptr<<" "<<key<<" "<<mod<<"\n";
+//
+// GtkAccelKey newkey;
+//
+// // reset the other keybinding
+// gtk_accel_map_change_entry ("", key, mod, true);
+//
+// newkey.accel_key = key;
+// newkey.accel_mods = mod;
+//
+// gtk_accel_map_change_entry (ptr, key, mod, true);
+// hotkey_data.keys[ptr] = newkey;
+// }
+
+ // TODO offer replace with context menu!
+ void hotkey_entry_changed_cb (GtkEntry * e, gpointer gpointer)
+ {
+
+ char* name = static_cast<char*>(gpointer);
+ const char * value = gtk_entry_get_text(e);
+
+ gtk_entry_set_icon_activatable(e, GTK_ENTRY_ICON_PRIMARY, false);
+ gtk_entry_set_icon_from_stock(e, GTK_ENTRY_ICON_PRIMARY, 0);
+ gtk_entry_set_icon_tooltip_text (e, GTK_ENTRY_ICON_PRIMARY, 0);
+
+ // empty text
+ if (!value || !*value)
+ {
+ gtk_entry_set_icon_from_stock(e, GTK_ENTRY_ICON_PRIMARY, 0);
+ gtk_entry_set_icon_tooltip_text (e, GTK_ENTRY_ICON_PRIMARY, 0);
+ // reset in map and remove accelerator
+ GtkAccelKey tmp;
+ guint tmpkey;
+ GdkModifierType tmpmod;
+ gtk_accelerator_parse ("",&tmpkey,&tmpmod);
+ hotkey_data.keys[name] = tmp;
+ gtk_accel_map_change_entry (name, tmpkey, tmpmod, true);
+ return;
+ }
+
+ guint key;
+ GdkModifierType mod;
+ GtkAccelKey acc_key;
+
+ gtk_accelerator_parse (value,&key,&mod);
+ acc_key.accel_key = key;
+ acc_key.accel_mods = mod;
+
+ if (!gtk_accelerator_valid(acc_key.accel_key, acc_key.accel_mods))
+ {
+ gtk_entry_set_icon_from_stock(e, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_DIALOG_WARNING);
+ gtk_entry_set_icon_tooltip_text (e, GTK_ENTRY_ICON_PRIMARY, _("Error: Shortkey is invalid!"));
+ return;
+ }
+
+ bool found(false);
+
+ // search for duplicate key entry
+ foreach (keymap_t, hotkey_data.keys, it)
+ {
+ if (!strcmp(name, it->first.c_str())) continue;
+ if (it->second.accel_key == key && it->second.accel_mods == mod) { found=true; break;}
+ }
+
+
+ if (found)
+ {
+ gtk_entry_set_icon_from_stock(e, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_DIALOG_WARNING);
+ gtk_entry_set_icon_tooltip_text (e, GTK_ENTRY_ICON_PRIMARY, _("Error: Shortkey already exists!"));
+ gtk_entry_set_icon_activatable(e, GTK_ENTRY_ICON_PRIMARY, true);
+
+ }
+ else
+ {
+ hotkey_data.keys[name] = acc_key;
+ }
+
+ }
+
+ void process_accels (gpointer _data,
+ const gchar *accel_path,
+ guint accel_key,
+ GdkModifierType accel_mods,
+ gboolean changed)
+ {
+ HotkeyData* data = static_cast<HotkeyData*>(_data);
+ GtkAccelKey key;
+ key.accel_key = accel_key;
+ key.accel_mods = accel_mods;
+ data->keys[accel_path] = key;
+
+ }
+
+
+ void save_accels()
+ {
+
+ // get changed accels from map and reset them to their values
+ foreach (keymap_t, hotkey_data.keys, it)
+ {
+ gtk_accel_map_change_entry (it->first.c_str(),
+ it->second.accel_key,
+ it->second.accel_mods,
+ true);
+
+ }
+
+ // save 'em
+ const std::string accel_filename (get_accel_filename());
+ gtk_accel_map_save (accel_filename.c_str());
+ chmod (accel_filename.c_str(), 0600);
+ }
+
void delete_prefs_dialog (gpointer castme)
{
PrefsDialog* pd(static_cast<PrefsDialog*>(castme));
+ save_accels();
pd->prefs().remove_listener(pd);
delete pd;
}
@@ -95,6 +242,15 @@ namespace
}
+ GtkWidget* new_hotkey_entry (const char* value, const char* name)
+ {
+ GtkWidget * t = gtk_entry_new();
+ gtk_entry_set_text (GTK_ENTRY(t), value);
+ g_signal_connect (t, "changed", G_CALLBACK(hotkey_entry_changed_cb), gpointer(name));
+// g_signal_connect (t, "icon-press", G_CALLBACK(hotkey_entry_icon_press_cb), gpointer(name));
+ return t;
+ }
+
GtkWidget* new_layout_radio (GtkWidget* prev, const guint8* line, const char* value, std::string& cur, Prefs& prefs)
{
GtkWidget * r = prev==0
@@ -140,6 +296,23 @@ namespace
return r;
}
+ void fill_pref_hotkeys(GtkWidget* t, int& row, Prefs& prefs)
+ {
+
+ HIG::workarea_add_section_spacer (t, row, hotkey_data.keys.size());
+
+ GtkWidget* w, *l;
+ gchar* keyval;
+
+ foreach (keymap_t, hotkey_data.keys, it)
+ {
+ keyval = gtk_accelerator_name (it->second.accel_key, it->second.accel_mods);
+ w = new_hotkey_entry(keyval, it->first.c_str());
+ l = gtk_label_new(it->first.c_str());
+ HIG :: workarea_add_row (t, &row, w, l);
+ }
+ }
+
void set_prefs_string_from_editable (GtkEditable * editable, gpointer prefs_gpointer)
{
Prefs * prefs (static_cast<Prefs*>(prefs_gpointer));
@@ -541,6 +714,8 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
{
prefs.add_listener(this);
+ gtk_accel_map_foreach (&hotkey_data, process_accels);
+
GtkWidget * dialog = gtk_dialog_new_with_buttons (_("Pan: Preferences"), parent,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
@@ -548,8 +723,12 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
gtk_window_set_role (GTK_WINDOW(dialog), "pan-preferences-dialog");
g_signal_connect (dialog, "response", G_CALLBACK(response_cb), this);
g_signal_connect_swapped (dialog, "destroy", G_CALLBACK(delete_prefs_dialog), this);
+
GtkWidget * notebook = gtk_notebook_new ();
+ gtk_notebook_set_homogeneous_tabs (GTK_NOTEBOOK(notebook), true);
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK(notebook), true);
+
// Behavior
int row (0);
GtkWidget *h, *w, *l, *b, *t;
@@ -605,7 +784,26 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
HIG :: workarea_finish (t, &row);
gtk_notebook_append_page (GTK_NOTEBOOK(notebook), t, gtk_label_new_with_mnemonic(_("_Behavior")));
+ // Hotkeys
+ row = 0;
+ t = HIG :: workarea_create ();
+ fill_pref_hotkeys(t, row, _prefs);
+
+ HIG :: workarea_finish (t, &row);
+
+ GtkWidget* scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scroll), t);
+
+ gtk_widget_show_all (scroll);
+
+ gtk_notebook_append_page (GTK_NOTEBOOK(notebook), scroll, gtk_label_new_with_mnemonic(_("_Hotkeys")));
+
//charset
+ row = 0;
t = HIG :: workarea_create ();
HIG :: workarea_add_section_spacer (t, row, 1);
HIG :: workarea_add_section_title (t, &row, _("Language Settings"));
@@ -619,6 +817,7 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
gtk_notebook_append_page (GTK_NOTEBOOK(notebook), t, gtk_label_new_with_mnemonic(_("_Charset")));
// systray and notify popup
+ row = 0;
t = HIG :: workarea_create ();
HIG :: workarea_add_section_title (t, &row, _("System Tray Behavior"));
HIG :: workarea_add_section_spacer (t, row, 3);
@@ -634,6 +833,7 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
gtk_notebook_append_page (GTK_NOTEBOOK(notebook), t, gtk_label_new_with_mnemonic(_("_Status and Notifications")));
// Autosave Features
+ row = 0;
t = HIG :: workarea_create ();
HIG :: workarea_add_section_spacer (t, row, 2);
HIG :: workarea_add_section_title (t, &row, _("Autosave Article Draft"));
diff --git a/pan/gui/prefs.cc b/pan/gui/prefs.cc
index 8e831f3..1b89bc9 100644
--- a/pan/gui/prefs.cc
+++ b/pan/gui/prefs.cc
@@ -31,6 +31,7 @@ extern "C" {
#include <pan/general/log.h>
#include <pan/general/macros.h>
#include "prefs.h"
+#include "hotkeys.h"
using namespace pan;
@@ -98,6 +99,16 @@ Prefs :: start_element (GMarkupParseContext *,
if (name && *name && value && *value)
prefs.set_color (name, value);
}
+
+// if (s == "hotkey") {
+// const char * name (0);
+// const char * value (0);
+// for (const char **k(attribute_names), **v(attribute_vals); *k; ++k, ++v)
+// if (!strcmp (*k,"name")) name = *v;
+// else if (!strcmp(*k,"value")) value = *v;
+// if (name && *name && value && *value)
+// prefs.set_hotkey (name, value);
+// }
}
void
@@ -370,3 +381,19 @@ Prefs :: get_color_str_wo_fallback (const StringView& key) const
const GdkColor& col(_colors[key]);
return color_to_string (col);
}
+
+//void
+//Prefs :: set_hotkey (const StringView& key, const StringView& value)
+//{
+//// _hotkeys[key] = value;
+//// fire_hotkey_changed (key, value);
+//}
+
+
+//std::string
+//Prefs :: get_hotkey (const StringView& key) const
+//{
+// std::string res;
+// if (!_hotkeys.count(key)) return "";
+// return _hotkeys[key];
+//}
diff --git a/pan/gui/prefs.h b/pan/gui/prefs.h
index 8002669..1f2a2a7 100644
--- a/pan/gui/prefs.h
+++ b/pan/gui/prefs.h
@@ -43,6 +43,7 @@ namespace pan
virtual void on_prefs_int_changed (const StringView& key, int color) = 0;
virtual void on_prefs_string_changed (const StringView& key, const StringView& value) = 0;
virtual void on_prefs_color_changed (const StringView& key, const GdkColor& color) = 0;
+ virtual void on_prefs_hotkey_changed (const StringView& key, const StringView& value) {}
};
void add_listener (Listener* l) { _listeners.insert(l); }
void remove_listener (Listener* l) {_listeners.erase(l); }
@@ -68,6 +69,10 @@ namespace pan
for (listeners_t::iterator it(_listeners.begin()), end(_listeners.end()); it!=end; )
(*it++)->on_prefs_color_changed (key, value);
}
+ void fire_hotkey_changed (const StringView& key, const StringView& value) {
+ for (listeners_t::iterator it(_listeners.begin()), end(_listeners.end()); it!=end; )
+ (*it++)->on_prefs_hotkey_changed (key, value);
+ }
public:
static void start_element (GMarkupParseContext *context,
@@ -95,6 +100,9 @@ namespace pan
GdkColor get_color (const StringView& key, const GdkColor& fallback) const;
GdkColor get_color (const StringView& key, const StringView& fallback_str) const;
+// void set_hotkey (const StringView& key, const StringView& value);
+// std::string get_hotkey (const StringView& key) const;
+
void set_window (const StringView& key, GtkWindow* window,
int default_x, int default_y,
int default_width, int default_height);
@@ -111,6 +119,7 @@ namespace pan
public:
void to_string (int indent, std::string& setme) const;
void from_string (const StringView& xml);
+ void get_hotkeys ();
private:
struct Geometry {
@@ -131,6 +140,9 @@ namespace pan
mutable colors_t _colors;
typedef std::map<std::string,int> ints_t;
mutable ints_t _ints;
+ typedef std::map<std::string,std::string> hotkeys_t;
+ mutable hotkeys_t _hotkeys;
+
public:
bool _rules_changed;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]