Author: dmeyer
Date: Sat Sep  1 16:23:49 2007
New Revision: 2796

Log:
snapshot of test app, not working yet

Added:
   trunk/WIP/netsearch/test/feedmanager.glade
Modified:
   trunk/WIP/netsearch/test/feed.py

Modified: trunk/WIP/netsearch/test/feed.py
==============================================================================
--- trunk/WIP/netsearch/test/feed.py    (original)
+++ trunk/WIP/netsearch/test/feed.py    Sat Sep  1 16:23:49 2007
@@ -1,44 +1,120 @@
 import sys
 import kaa.notifier
-from kaa.netsearch.feed import Channel
-
-# ##################################################################
-# test code
-# ##################################################################
-
-# class Filter(Channel):
-
-#     def __init__(self, channel, filter):
-#         Channel.__init__(self, None)
-#         self._channel = channel
-#         self._filter = filter
-
-#     def __iter__(self):
-#         for f in self._channel:
-#             if isinstance(f, kaa.notifier.InProgress):
-#                 # dummy entry to signal waiting
-#                 yield f
-#                 continue
-#             if self._filter(f):
-#                 yield f
-
[EMAIL PROTECTED]()
-def update_feeds(*feeds):
-    for feed, destdir, num, download in feeds:
-        if download:
-            yield feed.update(destdir, num)
-        else:
-            yield feed.store_in_beacon(destdir, num)
-
-kaa.beacon.connect()
-d = '/local/video/feedtest'
-update_feeds((Channel('http://podcast.wdr.de/blaubaer.xml'), d, 5, False),
-             
(Channel('http://podcast.nationalgeographic.com/wild-chronicles/'), \
-              d, 5, False)).\
-             connect(sys.exit)
-#              (Channel('http://www.tagesschau.de/export/video-podcast'), d, 
1, False),
-#              (YouTube(tags='robot chicken'), d, 2, True),
-#              (Stage6('stage6://Diva-Channel'), d, 5, False)).\
+import kaa.beacon
+import kaa.netsearch.feed
 
+if len(sys.argv) > 1:
+    if sys.argv[1] in ('--update', '-u'):
+        if not kaa.netsearch.feed.list_channels():
+            print 'no channels defined'
+            sys.exit(0)
+        kaa.beacon.connect()
+        kaa.netsearch.feed.update().connect(sys.exit)
+        kaa.notifier.loop()
+        sys.exit(0)
+
+# import gtk for gui
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gtk.glade
+
+kaa.notifier.init('gtk')
+# kaa.beacon.connect()
+
+GLADEFILE = 'test/feedmanager.glade'
+
+class Manager(object):
+    def __init__(self):
+        self.xml = gtk.glade.XML(GLADEFILE, 'manager')
+        self.xml.signal_autoconnect (self)
+
+        self.treestore = gtk.TreeStore(str)
+        self.tree = self.xml.get_widget("list")
+        self.tree.set_model(self.treestore)
+        column = gtk.TreeViewColumn("URL", gtk.CellRendererText(), text=0)
+        self.tree.append_column(column)
+
+        self.channels = []
+        for channel in kaa.netsearch.feed.list_channels():
+            self.treestore.append(None, [ channel.url ])
+            self.channels.append(channel)
+            
+    def on_add_clicked(self, args):
+        Edit()
+        
+    def on_configure_clicked(self, args):
+        sel = self.tree.get_selection().get_selected_rows()[1]
+        if not sel:
+            return
+        Edit(self.channels[sel[0][0]])
+    
+    def on_remove_clicked(self, args):
+        pass
+    
+    def on_quit_clicked(self, args):
+        sys.exit(0)
+
+
+class Edit(object):
+    def __init__(self, channel=None):
+        self.xml = gtk.glade.XML(GLADEFILE, 'edit')
+        self.xml.signal_autoconnect (self)
+        self.win = self.xml.get_widget("edit")
+        self.channel = channel
+        if channel:
+            for widget in ('url', 'dirname'):
+                self.get_widget(widget).set_text(getattr(channel, widget))
+                self.xml.get_widget(widget).set_sensitive(False)
+        self.win.show()
+
+
+    def get_widget(self, name):
+        return self.xml.get_widget(name)
+    
+
+    def on_all_items_toggled(self, button):
+        self.xml.get_widget("num").set_sensitive(not button.get_active())
+        self.xml.get_widget("num_label").set_sensitive(not button.get_active())
+        
+
+    def on_download_toggled(self, button):
+        self.xml.get_widget("keep").set_sensitive(button.get_active())
+
+
+    def on_cancel_clicked(self, args):
+        self.win.destroy()
+
+
+    def on_ok_clicked(self, args):
+        # get data
+        url = self.get_widget("url").get_text()
+        destdir = self.get_widget("dirname").get_text()
+        download = self.xml.get_widget("download").get_active()
+        keep = self.xml.get_widget("keep").get_active()
+        num = 0
+        if not self.xml.get_widget("all_items").get_active():
+            num = int(self.xml.get_widget("num").get_value())
+
+        if self.channel:
+            self.channel.configure(download, num, keep)
+            return
+
+        if url and destdir:
+            kaa.netsearch.feed.add_channel(url, destdir, download, num, keep)
+            return
+        
+        # no idea how this works with glade.
+        # FIXME: make the dialog modal
+        dialog = gtk.MessageDialog(
+            parent = self.win, flags = gtk.DIALOG_DESTROY_WITH_PARENT,
+            type = gtk.MESSAGE_INFO, buttons = gtk.BUTTONS_OK,
+            message_format = 'You need to fill in an URL and a directory 
where\n' + \
+            'the items should be stored.')
+        dialog.set_title('Error')
+        dialog.connect('response', lambda dialog, response: dialog.destroy())
+        dialog.show()
+        return
+    
+m = Manager()
 kaa.notifier.loop()
-

Added: trunk/WIP/netsearch/test/feedmanager.glade
==============================================================================
--- (empty file)
+++ trunk/WIP/netsearch/test/feedmanager.glade  Sat Sep  1 16:23:49 2007
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.2.2 on Sat Sep  1 22:11:00 2007 by [EMAIL 
PROTECTED]>
+<glade-interface>
+  <widget class="GtkWindow" id="manager">
+    <property name="visible">True</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title" translatable="yes">Channel Manager</property>
+    <child>
+      <widget class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+        <child>
+          <widget class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+            <property name="shadow_type">GTK_SHADOW_IN</property>
+            <child>
+              <widget class="GtkTreeView" id="list">
+                <property name="height_request">300</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="headers_clickable">True</property>
+                <property name="rules_hint">True</property>
+                <property name="enable_search">False</property>
+                <property name="show_expanders">False</property>
+                <property 
name="enable_grid_lines">GTK_TREE_VIEW_GRID_LINES_HORIZONTAL</property>
+              </widget>
+            </child>
+          </widget>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="add">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Add 
Channel</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_add_clicked"/>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="configure">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Configure 
Channel</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_configure_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="remove">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Remove 
Channel</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_remove_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="quit">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Quit</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_quit_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkDialog" id="edit">
+    <property name="width_request">400</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Edit Channel</property>
+    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkVBox" id="vbox2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <widget class="GtkTable" id="table1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <child>
+                  <widget class="GtkEntry" id="dirname">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                  </widget>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkEntry" id="url">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                  </widget>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" 
translatable="yes">Directory</property>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="x_padding">10</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label1">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">URL</property>
+                  </widget>
+                  <packing>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="x_padding">10</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkTable" id="table2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="n_rows">2</property>
+                <property name="n_columns">2</property>
+                <child>
+                  <widget class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <widget class="GtkSpinButton" id="num">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="adjustment">5 1 20 1 10 10</property>
+                        <property name="numeric">True</property>
+                        <property name="wrap">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="num_label">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" 
translatable="yes">Items</property>
+                      </widget>
+                      <packing>
+                        <property name="pack_type">GTK_PACK_END</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkCheckButton" id="all_items">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">All 
Items</property>
+                    <property name="response_id">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="on_all_items_toggled"/>
+                  </widget>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkCheckButton" id="keep">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">Keep 
Old</property>
+                    <property name="response_id">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="on_keep_toggled"/>
+                  </widget>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkCheckButton" id="download">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" 
translatable="yes">Download</property>
+                    <property name="response_id">0</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="on_download_toggled"/>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="ok">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-ok</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_ok_clicked"/>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="cancel">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">0</property>
+                <signal name="clicked" handler="on_cancel_clicked"/>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to