Mercurial > emacs
changeset 95677:737dc8db789e
Initial check-in.
author | Ulf Jasper <ulf.jasper@web.de> |
---|---|
date | Sun, 08 Jun 2008 15:35:57 +0000 |
parents | 57b32cda96c9 |
children | 86fd39c6039a |
files | lisp/net/newsticker-reader.el |
diffstat | 1 files changed, 1118 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/net/newsticker-reader.el Sun Jun 08 15:35:57 2008 +0000 @@ -0,0 +1,1118 @@ +;;; newsticker-reader.el --- Generic RSS reader functions. + +;; Copyright (C) 2008 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; Author: Ulf Jasper <ulf.jasper@web.de> +;; Filename: newsticker-reader.el +;; URL: http://www.nongnu.org/newsticker +;; Time-stamp: "7. Juni 2008, 15:34:08 (ulf)" +;; CVS-Version: $Id: newsticker-reader.el,v 1.5 2008/05/04 18:21:08 u11 Exp $ + +;; ====================================================================== + +;; GNU Emacs 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, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; ====================================================================== +;;; Commentary: + +;; See newsticker.el + +;; ====================================================================== +;;; Code: + +(require 'newsticker-backend) + +;; ====================================================================== +;;; Customization +;; ====================================================================== +(defun newsticker--set-customvar-formatting (symbol value) + "Set newsticker-variable SYMBOL value to VALUE. +Calls all actions which are necessary in order to make the new +value effective." + (if (or (not (boundp symbol)) + (equal (symbol-value symbol) value)) + (set symbol value) + ;; something must have changed + (set symbol value) + (when (fboundp 'newsticker--forget-preformatted) + (newsticker--forget-preformatted)))) + +;; ====================================================================== +;; reader +(defgroup newsticker-reader nil + "Settings for the feed reader." + :group 'newsticker) + +(defcustom newsticker-frontend + 'newsticker-treeview + "Newsticker frontend for reading news. +This must be one of the functions `newsticker-plainview' or +`newsticker-treeview'." + :type '(choice :tag "Frontend" + (const :tag "Single buffer (plainview)" newsticker-plainview) + (const :tag "Tree view (treeview)" newsticker-treeview)) + :group 'newsticker-reader) + +;; image related things +(defcustom newsticker-enable-logo-manipulations + t + "If non-nil newsticker manipulates logo images. +This enables the following image properties: heuristic mask for all +logos, and laplace-conversion for images without new items." + :type 'boolean + :group 'newsticker-reader) + +(defcustom newsticker-justification + 'left + "How to fill item descriptions. +If non-nil newsticker calls `fill-region' to wrap long lines in +item descriptions. However, if an item description contains HTML +text and `newsticker-html-renderer' is non-nil, filling is not +done." + :type '(choice :tag "Justification" + (const :tag "No filling" nil) + (const :tag "Left" left) + (const :tag "Right" right) + (const :tag "Center" center) + (const :tag "Full" full)) + :set 'newsticker--set-customvar-formatting + :group 'newsticker-reader) + +(defcustom newsticker-use-full-width + t + "Decides whether to use the full window width when filling. +If non-nil newsticker sets `fill-column' so that the whole +window is used when filling. See also `newsticker-justification'." + :type 'boolean + :set 'newsticker--set-customvar-formatting + :group 'newsticker-reader) + +(defcustom newsticker-html-renderer + nil + "Function for rendering HTML contents. +If non-nil, newsticker.el will call this function whenever it finds +HTML-like tags in item descriptions. Possible functions are, for +example, `w3m-region', `w3-region', and (if you have htmlr.el installed) +`newsticker-htmlr-render'. + +In order to make sure that the HTML renderer is loaded when you +run newsticker, you should add one of the following statements to +your .emacs. If you use w3m, + + (autoload 'w3m-region \"w3m\" + \"Render region in current buffer and replace with result.\" t) + + (autoload 'w3m-toggle-inline-image \"w3m\" + \"Toggle the visibility of an image under point.\" t) + +or, if you use w3, + + (require 'w3-auto) + +or, if you use htmlr + + (require 'htmlr)" + :type '(choice :tag "Function" + (const :tag "None" nil) + (const :tag "w3" w3-region) + (const :tag "w3m" w3m-region) + (const :tag "htmlr" newsticker-htmlr-render)) + :set 'newsticker--set-customvar-formatting + :group 'newsticker-reader) + +(defcustom newsticker-date-format + "(%A, %H:%M)" + "Format for the date part in item and feed lines. +See `format-time-string' for a list of valid specifiers." + :type 'string + :set 'newsticker--set-customvar-formatting + :group 'newsticker-reader) + +;; ====================================================================== +;;; Utility functions +;; ====================================================================== +(defun newsticker--insert-enclosure (item keymap) + "Insert enclosure element of a news ITEM into the current buffer. +KEYMAP will be applied." + (let ((enclosure (newsticker--enclosure item)) + (beg (point))) + (when enclosure + (let ((url (cdr (assoc 'url enclosure))) + (length (string-to-number (or (cdr (assoc 'length enclosure)) + "-1"))) + (type (cdr (assoc 'type enclosure)))) + (cond ((> length 1048576) + (insert (format "Enclosed file (%s, %1.2f MBytes)" type + (/ length 1048576)))) + ((> length 1024) + (insert (format "Enclosed file (%s, %1.2f KBytes)" type + (/ length 1024)))) + ((> length 0) + (insert (format "Enclosed file (%s, %1.2f Bytes)" type + length))) + (t + (insert (format "Enclosed file (%s, unknown size)" type)))) + (add-text-properties beg (point) + (list 'mouse-face 'highlight + 'nt-link url + 'help-echo (format + "mouse-2: visit (%s)" url) + 'keymap keymap + 'nt-face 'enclosure + 'nt-type 'desc)) + (insert "\n"))))) + +(defun newsticker--print-extra-elements (item keymap) + "Insert extra-elements of ITEM in a pretty form into the current buffer. +KEYMAP is applied." + (let ((ignored-elements '(items link title description content + content:encoded dc:subject + dc:date entry item guid pubDate + published updated + enclosure)) + (left-column-width 1)) + (mapc (lambda (extra-element) + (when (listp extra-element) ;; take care of broken xml + ;; data, 2007-05-25 + (unless (memq (car extra-element) ignored-elements) + (setq left-column-width (max left-column-width + (length (symbol-name + (car extra-element)))))))) + (newsticker--extra item)) + (mapc (lambda (extra-element) + (when (listp extra-element) ;; take care of broken xml + ;; data, 2007-05-25 + (unless (memq (car extra-element) ignored-elements) + (newsticker--do-print-extra-element extra-element + left-column-width + keymap)))) + (newsticker--extra item)))) + +(defun newsticker--do-print-extra-element (extra-element width keymap) + "Actually print an EXTRA-ELEMENT using the given WIDTH. +KEYMAP is applied." + (let ((name (symbol-name (car extra-element)))) + (insert (format "%s: " name)) + (insert (make-string (- width (length name)) ? ))) + (let (;;(attributes (cadr extra-element)) ;FIXME!!!! + (contents (cddr extra-element))) + (cond ((listp contents) + (mapc (lambda (i) + (if (and (stringp i) + (string-match "^http://.*" i)) + (let ((pos (point))) + (insert i " ") ; avoid self-reference from the + ; nt-link thing + (add-text-properties + pos (point) + (list 'mouse-face 'highlight + 'nt-link i + 'help-echo + (format "mouse-2: visit (%s)" i) + 'keymap keymap))) + (insert (format "%s" i)))) + contents)) + (t + (insert (format "%s" contents)))) + (insert "\n"))) + +(defun newsticker--image-read (feed-name-symbol disabled) + "Read the cached image for FEED-NAME-SYMBOL from disk. +If DISABLED is non-nil the image will be converted to a disabled look +\(unless `newsticker-enable-logo-manipulations' is not t\). +Return the image." + (let ((image-name (concat newsticker-imagecache-dirname "/" + (symbol-name feed-name-symbol))) + (img nil)) + (when (file-exists-p image-name) + (condition-case error-data + (setq img (create-image + image-name nil nil + :conversion (and newsticker-enable-logo-manipulations + disabled + 'disabled) + :mask (and newsticker-enable-logo-manipulations + 'heuristic) + :ascent 70)) + (error + (message "Error: cannot create image for %s: %s" + feed-name-symbol error-data)))) + img)) + +;; the functions we need for retrieval and display +;;;###autoload +(defun newsticker-show-news () + "Start reading news. You may want to bind this to a key." + (interactive) + (newsticker-start t) ;; will start only if not running + (funcall newsticker-frontend)) + +;; ====================================================================== +;;; Toolbar +;; ====================================================================== +(defconst newsticker--next-item-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * next_xpm[] = { +\"24 24 42 1\", +\" c None\", +\". c #000000\", +\"+ c #7EB6DE\", +\"@ c #82BBE2\", +\"# c #85BEE4\", +\"$ c #88C1E7\", +\"% c #8AC3E8\", +\"& c #87C1E6\", +\"* c #8AC4E9\", +\"= c #8CC6EA\", +\"- c #8CC6EB\", +\"; c #88C2E7\", +\"> c #8BC5E9\", +\", c #8DC7EB\", +\"' c #87C0E6\", +\") c #8AC4E8\", +\"! c #8BC5EA\", +\"~ c #8BC4E9\", +\"{ c #88C1E6\", +\"] c #89C3E8\", +\"^ c #86BFE5\", +\"/ c #83BBE2\", +\"( c #82BBE1\", +\"_ c #86C0E5\", +\": c #87C0E5\", +\"< c #83BCE2\", +\"[ c #81B9E0\", +\"} c #81BAE1\", +\"| c #78B0D9\", +\"1 c #7BB3DB\", +\"2 c #7DB5DD\", +\"3 c #7DB6DD\", +\"4 c #72A9D4\", +\"5 c #75ACD6\", +\"6 c #76AED7\", +\"7 c #77AFD8\", +\"8 c #6BA1CD\", +\"9 c #6EA4CF\", +\"0 c #6FA6D1\", +\"a c #6298C6\", +\"b c #659BC8\", +\"c c #5C91C0\", +\" \", +\" \", +\" . \", +\" .. \", +\" .+. \", +\" .@#. \", +\" .#$%. \", +\" .&*=-. \", +\" .;>,,,. \", +\" .;>,,,=. \", +\" .')!==~;. \", +\" .#{]*%;^/. \", +\" .(#_':#<. \", +\" .+[@</}. \", +\" .|1232. \", +\" .4567. \", +\" .890. \", +\" .ab. \", +\" .c. \", +\" .. \", +\" . \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next item button.")) + +(defconst newsticker--previous-item-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * previous_xpm[] = { +\"24 24 39 1\", +\" c None\", +\". c #000000\", +\"+ c #7BB3DB\", +\"@ c #83BCE2\", +\"# c #7FB8DF\", +\"$ c #89C2E7\", +\"% c #86BFE5\", +\"& c #83BBE2\", +\"* c #8CC6EA\", +\"= c #8BC4E9\", +\"- c #88C2E7\", +\"; c #85BEE4\", +\"> c #8DC7EB\", +\", c #89C3E8\", +\"' c #8AC4E8\", +\") c #8BC5EA\", +\"! c #88C1E6\", +\"~ c #8AC4E9\", +\"{ c #8AC3E8\", +\"] c #86C0E5\", +\"^ c #87C0E6\", +\"/ c #87C0E5\", +\"( c #82BBE2\", +\"_ c #81BAE1\", +\": c #7FB7DF\", +\"< c #7DB6DD\", +\"[ c #7DB5DD\", +\"} c #7CB4DC\", +\"| c #79B1DA\", +\"1 c #76ADD7\", +\"2 c #77AFD8\", +\"3 c #73AAD4\", +\"4 c #70A7D1\", +\"5 c #6EA5D0\", +\"6 c #6CA2CE\", +\"7 c #689ECB\", +\"8 c #6399C7\", +\"9 c #6095C4\", +\"0 c #5C90C0\", +\" \", +\" \", +\" . \", +\" .. \", +\" .+. \", +\" .@#. \", +\" .$%&. \", +\" .*=-;. \", +\" .>>*,%. \", +\" .>>>*,%. \", +\" .')**=-;. \", +\" .;!,~{-%&. \", +\" .;]^/;@#. \", +\" .(@&_:+. \", +\" .<[}|1. \", +\" .2134. \", +\" .567. \", +\" .89. \", +\" .0. \", +\" .. \", +\" . \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the previous item button.")) + +(defconst newsticker--previous-feed-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * prev_feed_xpm[] = { +\"24 24 52 1\", +\" c None\", +\". c #000000\", +\"+ c #70A7D2\", +\"@ c #75ADD6\", +\"# c #71A8D3\", +\"$ c #79B1DA\", +\"% c #7BB3DB\", +\"& c #7DB5DD\", +\"* c #83BBE2\", +\"= c #7EB6DE\", +\"- c #78B0D9\", +\"; c #7FB7DE\", +\"> c #88C2E7\", +\", c #85BEE4\", +\"' c #80B9E0\", +\") c #80B8DF\", +\"! c #8CC6EA\", +\"~ c #89C3E8\", +\"{ c #86BFE5\", +\"] c #81BAE1\", +\"^ c #7CB4DC\", +\"/ c #7FB8DF\", +\"( c #8DC7EB\", +\"_ c #7BB3DC\", +\": c #7EB7DE\", +\"< c #8BC4E9\", +\"[ c #8AC4E9\", +\"} c #8AC3E8\", +\"| c #87C0E6\", +\"1 c #87C0E5\", +\"2 c #83BCE2\", +\"3 c #75ACD6\", +\"4 c #7FB7DF\", +\"5 c #77AED8\", +\"6 c #71A8D2\", +\"7 c #70A7D1\", +\"8 c #76ADD7\", +\"9 c #6CA2CE\", +\"0 c #699FCC\", +\"a c #73AAD4\", +\"b c #6BA1CD\", +\"c c #669CC9\", +\"d c #6298C5\", +\"e c #689ECB\", +\"f c #6499C7\", +\"g c #6095C3\", +\"h c #5C91C0\", +\"i c #5E93C2\", +\"j c #5B90C0\", +\"k c #588CBC\", +\"l c #578CBC\", +\"m c #5589BA\", +\" \", +\" \", +\" ... . \", +\" .+. .. \", +\" .@. .#. \", +\" .$. .%@. \", +\" .&. .*=-. \", +\" .;. .>,'%. \", +\" .). .!~{]^. \", +\" ./. .(!~{]_. \", +\" .:. .!!<>,'%. \", +\" .&. .~[}>{*=-. \", +\" .$. .|1,2/%@. \", +\" .3. .*]4%56. \", +\" .7. .^$8#9. \", +\" .0. .a7bc. \", +\" .d. .efg. \", +\" .h. .ij. \", +\" .k. .l. \", +\" .m. .. \", +\" ... . \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the previous feed button.")) + +(defconst newsticker--next-feed-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * next_feed_xpm[] = { +\"24 24 57 1\", +\" c None\", +\". c #000000\", +\"+ c #6CA2CE\", +\"@ c #75ADD6\", +\"# c #71A8D3\", +\"$ c #79B1DA\", +\"% c #7EB7DE\", +\"& c #7DB5DD\", +\"* c #81BAE1\", +\"= c #85BEE4\", +\"- c #78B0D9\", +\"; c #7FB7DE\", +\"> c #83BCE3\", +\", c #87C1E6\", +\"' c #8AC4E9\", +\") c #7BB3DB\", +\"! c #80B8DF\", +\"~ c #88C2E7\", +\"{ c #8BC5E9\", +\"] c #8DC7EB\", +\"^ c #7CB4DC\", +\"/ c #7FB8DF\", +\"( c #84BDE3\", +\"_ c #7BB3DC\", +\": c #83BCE2\", +\"< c #87C0E6\", +\"[ c #8AC4E8\", +\"} c #8BC5EA\", +\"| c #8CC6EA\", +\"1 c #88C1E6\", +\"2 c #89C3E8\", +\"3 c #8AC3E8\", +\"4 c #7EB6DE\", +\"5 c #82BBE1\", +\"6 c #86C0E5\", +\"7 c #87C0E5\", +\"8 c #75ACD6\", +\"9 c #7AB2DA\", +\"0 c #81B9E0\", +\"a c #82BBE2\", +\"b c #71A8D2\", +\"c c #70A7D1\", +\"d c #74ACD6\", +\"e c #699FCC\", +\"f c #6EA5D0\", +\"g c #72A9D4\", +\"h c #669CC9\", +\"i c #6298C5\", +\"j c #679DCA\", +\"k c #6BA1CD\", +\"l c #6095C3\", +\"m c #5C91C0\", +\"n c #5F94C2\", +\"o c #5B90C0\", +\"p c #588CBC\", +\"q c #578CBC\", +\"r c #5589BA\", +\" \", +\" \", +\" . ... \", +\" .. .+. \", +\" .@. .#. \", +\" .$%. .@. \", +\" .&*=. .-. \", +\" .;>,'. .). \", +\" .!=~{]. .^. \", +\" ./(~{]]. ._. \", +\" .%:<[}||. .). \", +\" .&*=12'3~. .-. \", +\" .$45=6<7. .@. \", +\" .8940a:. .b. \", +\" .cd-)&. .+. \", +\" .efg8. .h. \", +\" .ijk. .l. \", +\" .mn. .o. \", +\" .p. .q. \", +\" .. .r. \", +\" . ... \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next feed button.")) + +(defconst newsticker--mark-read-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * mark_read_xpm[] = { +\"24 24 44 1\", +\" c None\", +\". c #C20000\", +\"+ c #BE0000\", +\"@ c #C70000\", +\"# c #CE0000\", +\"$ c #C90000\", +\"% c #BD0000\", +\"& c #CB0000\", +\"* c #D10000\", +\"= c #D70000\", +\"- c #D30000\", +\"; c #CD0000\", +\"> c #C60000\", +\", c #D40000\", +\"' c #DA0000\", +\") c #DE0000\", +\"! c #DB0000\", +\"~ c #D60000\", +\"{ c #D00000\", +\"] c #DC0000\", +\"^ c #E00000\", +\"/ c #E40000\", +\"( c #E10000\", +\"_ c #DD0000\", +\": c #D80000\", +\"< c #E50000\", +\"[ c #E70000\", +\"} c #E60000\", +\"| c #E20000\", +\"1 c #E90000\", +\"2 c #E80000\", +\"3 c #E30000\", +\"4 c #DF0000\", +\"5 c #D90000\", +\"6 c #CC0000\", +\"7 c #C10000\", +\"8 c #C30000\", +\"9 c #BF0000\", +\"0 c #B90000\", +\"a c #BC0000\", +\"b c #BB0000\", +\"c c #B80000\", +\"d c #B50000\", +\"e c #B70000\", +\" \", +\" \", +\" \", +\" . + \", +\" +@# $.% \", +\" &*= -;> \", +\" ,') !~{ \", +\" ]^/ (_: \", +\" (<[ }|) \", +\" <[1 2<| \", +\" }222[< \", +\" }}}< \", +\" 333| \", +\" _4^4)] \", +\" ~:' 5=- \", +\" 6{- *#$ \", +\" 7>$ @89 \", +\" 0a+ %bc \", +\" ddc edd \", +\" ddd ddd \", +\" d d \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next feed button.")) + +(defconst newsticker--mark-immortal-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * mark_immortal_xpm[] = { +\"24 24 93 2\", +\" c None\", +\". c #171717\", +\"+ c #030303\", +\"@ c #000000\", +\"# c #181818\", +\"$ c #090909\", +\"% c #FFC960\", +\"& c #FFCB61\", +\"* c #FFCB62\", +\"= c #FFC961\", +\"- c #FFC75F\", +\"; c #FFC65E\", +\"> c #FFCA61\", +\", c #FFCD63\", +\"' c #FFCF65\", +\") c #FFD065\", +\"! c #FFCE64\", +\"~ c #FFC35C\", +\"{ c #FFC45D\", +\"] c #FFD166\", +\"^ c #FFD267\", +\"/ c #FFD368\", +\"( c #FFD167\", +\"_ c #FFC05A\", +\": c #010101\", +\"< c #040404\", +\"[ c #FFCC62\", +\"} c #FFD569\", +\"| c #FFD56A\", +\"1 c #FFC860\", +\"2 c #FFC25B\", +\"3 c #FFBB56\", +\"4 c #020202\", +\"5 c #060606\", +\"6 c #FFC15B\", +\"7 c #FFC85F\", +\"8 c #FFD469\", +\"9 c #FFD66A\", +\"0 c #FFBC57\", +\"a c #1B1B1B\", +\"b c #070707\", +\"c c #FFBA55\", +\"d c #FFB451\", +\"e c #FFB954\", +\"f c #FFB350\", +\"g c #FFB652\", +\"h c #FFBE58\", +\"i c #FFCD64\", +\"j c #FFD066\", +\"k c #FFC059\", +\"l c #FFB14E\", +\"m c #0B0B0B\", +\"n c #FFBB55\", +\"o c #FFC15A\", +\"p c #FFB552\", +\"q c #FFAD4B\", +\"r c #080808\", +\"s c #FFAF4C\", +\"t c #FFB853\", +\"u c #FFA948\", +\"v c #050505\", +\"w c #FFB04E\", +\"x c #FFB753\", +\"y c #FFBC56\", +\"z c #FFC55D\", +\"A c #FFC55E\", +\"B c #FFC45C\", +\"C c #FFBD57\", +\"D c #FFB854\", +\"E c #FFB34F\", +\"F c #FFAB4A\", +\"G c #FFA545\", +\"H c #FFAA49\", +\"I c #FFB04D\", +\"J c #FFB551\", +\"K c #FFBF58\", +\"L c #FFB24F\", +\"M c #FFAC4A\", +\"N c #FFA646\", +\"O c #FFA344\", +\"P c #FFA848\", +\"Q c #FFB14F\", +\"R c #FFAF4D\", +\"S c #FFA546\", +\"T c #FFA243\", +\"U c #FFA445\", +\"V c #FFAE4C\", +\"W c #FFA444\", +\"X c #FFA142\", +\"Y c #FF9F41\", +\"Z c #0A0A0A\", +\"` c #FF9E40\", +\" . c #FF9F40\", +\" \", +\" \", +\" \", +\" . + @ @ + # \", +\" $ @ % & * * = - + + \", +\" @ ; > , ' ) ' ! * - ~ @ \", +\" @ { > ! ] ^ / / ( ' * ; _ : \", +\" < _ ; [ ) / } | } / ] , 1 2 3 4 \", +\" 5 6 7 , ] 8 9 9 9 } ^ ! = ~ 0 a \", +\" b c 6 - , ] 8 9 9 9 } ^ ! % ~ 0 d 5 \", +\" : e _ ; * ) / 8 } } / ] , 1 2 3 f 5 \", +\" : g h { = i j ^ / ^ ] ! * ; k e l m \", +\" : f n o ; > , ' ) ' ! * - 2 0 p q r \", +\" : s g 0 6 ; % > * * = - ~ h t l u r \", +\" v u w x y k ~ z A z B o C D E F G b \", +\" 5 H I J e 0 h K h C c x L M N . \", +\" 4 O P q Q d g x g J L R H S T < \", +\" @ T U P F q V q M H N W X + \", +\" @ Y T O W G G W O X Y @ \", +\" 4 Z ` Y Y Y .` 4 4 \", +\" 5 : : @ @ Z \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next feed button.")) + +(defconst newsticker--narrow-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * narrow_xpm[] = { +\"24 24 48 1\", +\" c None\", +\". c #000000\", +\"+ c #969696\", +\"@ c #9E9E9E\", +\"# c #A4A4A4\", +\"$ c #AAAAAA\", +\"% c #AEAEAE\", +\"& c #B1B1B1\", +\"* c #B3B3B3\", +\"= c #B4B4B4\", +\"- c #B2B2B2\", +\"; c #AFAFAF\", +\"> c #ABABAB\", +\", c #A6A6A6\", +\"' c #A0A0A0\", +\") c #989898\", +\"! c #909090\", +\"~ c #73AAD4\", +\"{ c #7AB2DA\", +\"] c #7FB8DF\", +\"^ c #84BDE3\", +\"/ c #88C2E7\", +\"( c #8BC5E9\", +\"_ c #8DC7EB\", +\": c #8CC6EA\", +\"< c #89C3E8\", +\"[ c #86BFE5\", +\"} c #81BAE1\", +\"| c #7BB3DC\", +\"1 c #75ACD6\", +\"2 c #6DA4CF\", +\"3 c #979797\", +\"4 c #A3A3A3\", +\"5 c #A8A8A8\", +\"6 c #ADADAD\", +\"7 c #ACACAC\", +\"8 c #A9A9A9\", +\"9 c #A5A5A5\", +\"0 c #9A9A9A\", +\"a c #929292\", +\"b c #8C8C8C\", +\"c c #808080\", +\"d c #818181\", +\"e c #838383\", +\"f c #848484\", +\"g c #858585\", +\"h c #868686\", +\"i c #828282\", +\" \", +\" \", +\" \", +\" .................. \", +\" .+@#$%&*=*-;>,')!. \", +\" .................. \", +\" \", +\" \", +\" .................. \", +\" .~{]^/(___:<[}|12. \", +\" .................. \", +\" \", +\" \", +\" .................. \", +\" .!3@45>666789'0ab. \", +\" .................. \", +\" \", +\" \", +\" .................. \", +\" .cccdefghhgficccc. \", +\" .................. \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next feed button.")) + +(defconst newsticker--get-all-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * get_all_xpm[] = { +\"24 24 70 1\", +\" c None\", +\". c #000000\", +\"+ c #F3DA00\", +\"@ c #F5DF00\", +\"# c #F7E300\", +\"$ c #F9E700\", +\"% c #FAEA00\", +\"& c #FBEC00\", +\"* c #FBED00\", +\"= c #FCEE00\", +\"- c #FAEB00\", +\"; c #F9E800\", +\"> c #F8E500\", +\", c #F6E000\", +\"' c #F4DB00\", +\") c #F1D500\", +\"! c #EFD000\", +\"~ c #B7CA00\", +\"{ c #BFD100\", +\"] c #C5D700\", +\"^ c #CBDB00\", +\"/ c #CFDF00\", +\"( c #D2E200\", +\"_ c #D4E400\", +\": c #D3E300\", +\"< c #D0E000\", +\"[ c #CCDD00\", +\"} c #C7D800\", +\"| c #C1D300\", +\"1 c #BACC00\", +\"2 c #B1C500\", +\"3 c #A8BC00\", +\"4 c #20A900\", +\"5 c #22AF00\", +\"6 c #24B500\", +\"7 c #26B900\", +\"8 c #27BC00\", +\"9 c #27BE00\", +\"0 c #28BF00\", +\"a c #27BD00\", +\"b c #26BA00\", +\"c c #25B600\", +\"d c #23B100\", +\"e c #21AB00\", +\"f c #1FA400\", +\"g c #1C9B00\", +\"h c #21AA00\", +\"i c #24B300\", +\"j c #25B800\", +\"k c #25B700\", +\"l c #24B400\", +\"m c #23B000\", +\"n c #1FA500\", +\"o c #1D9E00\", +\"p c #20A800\", +\"q c #21AC00\", +\"r c #23B200\", +\"s c #22AD00\", +\"t c #1D9F00\", +\"u c #20A700\", +\"v c #1EA100\", +\"w c #1C9C00\", +\"x c #1DA000\", +\"y c #1B9800\", +\"z c #1A9600\", +\"A c #1A9700\", +\"B c #1A9500\", +\"C c #199200\", +\"D c #189100\", +\"E c #178C00\", +\" \", +\" \", +\" \", +\" \", +\" ................... \", +\" .+@#$%&*=*&-;>,')!. \", +\" ................... \", +\" \", +\" ................... \", +\" .~{]^/(___:<[}|123. \", +\" ................... \", +\" \", +\" ................... \", +\" .45678909abcdefg. \", +\" .h5icj7jklmeno. \", +\" .pq5drrmshft. \", +\" .fu4h4pnvw. \", +\" .oxvxtwy. \", +\" .zAAzB. \", +\" .CCD. \", +\" .E. \", +\" . \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the next feed button.")) + +(defconst newsticker--update-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * update_xpm[] = { +\"24 24 37 1\", +\" c None\", +\". c #076D00\", +\"+ c #0A8600\", +\"@ c #0A8800\", +\"# c #098400\", +\"$ c #087200\", +\"% c #087900\", +\"& c #098500\", +\"* c #098100\", +\"= c #087600\", +\"- c #097E00\", +\"; c #097F00\", +\"> c #0A8700\", +\", c #0A8C00\", +\"' c #097C00\", +\") c #098300\", +\"! c #0A8900\", +\"~ c #0A8E00\", +\"{ c #0B9200\", +\"] c #087700\", +\"^ c #076E00\", +\"/ c #076C00\", +\"( c #076B00\", +\"_ c #076A00\", +\": c #076900\", +\"< c #076800\", +\"[ c #066700\", +\"} c #066500\", +\"| c #066400\", +\"1 c #066300\", +\"2 c #066600\", +\"3 c #066200\", +\"4 c #076700\", +\"5 c #065E00\", +\"6 c #066100\", +\"7 c #065F00\", +\"8 c #066000\", +\" \", +\" \", +\" \", +\" . +@@@+# \", +\" $% &@ +* \", +\" =-# ; \", +\" %*>, ' \", +\" ')!~{ = \", +\" ]$ \", +\" ^ ^ \", +\" . . \", +\" / ( \", +\" _ : \", +\" < [ \", +\" } | \", +\" [[ \", +\" 1 $.:23 \", +\" 3 4}35 \", +\" 6 655 \", +\" 76 85 55 \", +\" 5555555 5 \", +\" \", +\" \", +\" \"}; +" + 'xpm t) + "Image for the update button.")) + +(defconst newsticker--browse-image + (if (fboundp 'create-image) + (create-image "/* XPM */ +static char * visit_xpm[] = { +\"24 24 39 1\", +\" c None\", +\". c #000000\", +\"+ c #FFFFFF\", +\"@ c #00E63D\", +\"# c #00E83E\", +\"$ c #00E73D\", +\"% c #00E93E\", +\"& c #00E63C\", +\"* c #00E53C\", +\"= c #00E23B\", +\"- c #00E33B\", +\"; c #00E83D\", +\"> c #00E13A\", +\", c #00DD38\", +\"' c #00DE38\", +\") c #00E23A\", +\"! c #00E43C\", +\"~ c #00DF39\", +\"{ c #00DB37\", +\"] c #00D634\", +\"^ c #00D734\", +\"/ c #00E039\", +\"( c #00DC37\", +\"_ c #00D835\", +\": c #00D332\", +\"< c #00CD2F\", +\"[ c #00DB36\", +\"} c #00D433\", +\"| c #00CF30\", +\"1 c #00DA36\", +\"2 c #00D936\", +\"3 c #00D533\", +\"4 c #00D131\", +\"5 c #00CE2F\", +\"6 c #00CC2F\", +\"7 c #00CA2D\", +\"8 c #00C62B\", +\"9 c #00C52A\", +\"0 c #00BE27\", +\" \", +\" \", +\" . \", +\" .+. \", +\" .+++. \", +\" .++.++. \", +\" .++.@.++. \", +\" .++.##$.++. \", +\" .++.%%%#&.++. \", +\" .++.$%%%#*=.++. \", +\" .++.-@;##$*>,.++. \", +\" .++.')!&@@*=~{].++. \", +\" .++.^{~>---)/(_:<.++. \", +\" .++.^[,~/~'(_}|.++. \", +\" .++.]_1[12^:|.++. \", +\" .++.:}33:45.++. \", +\" .++.<5567.++. \", +\" .++.889.++. \", +\" .++.0.++. \", +\" .++.++. \", +\" .+++. \", +\" .+. \", +\" . \", +\" \"}; +" + 'xpm t) + "Image for the browse button.")) + +(provide 'newsticker-reader) +;;; newsticker-reader.el ends here