conduit r1842 - in trunk: . conduit/modules conduit/modules/FeedModule
- From: jstowers svn gnome org
- To: svn-commits-list gnome org
- Subject: conduit r1842 - in trunk: . conduit/modules conduit/modules/FeedModule
- Date: Wed, 28 Jan 2009 13:22:40 +0000 (UTC)
Author: jstowers
Date: Wed Jan 28 13:22:40 2009
New Revision: 1842
URL: http://svn.gnome.org/viewvc/conduit?rev=1842&view=rev
Log:
2009-01-29 John Stowers <john stowers gmail com>
* conduit/modules/FeedModule/FeedModule.py:
* conduit/modules/FeedModule/config.glade:
Feedmodule can now choose n random enclosures from
a feed.
* NEWS:
* conduit/modules/Makefile.am:
* conduit/modules/DesktopWallpaperModule.py:
Add a new dataprovider that changes the desktop
wallpaper. Connect to a flickr rss feed to see an
example of it in use.
Added:
trunk/conduit/modules/DesktopWallpaperModule.py
Modified:
trunk/ChangeLog
trunk/NEWS
trunk/conduit/modules/FeedModule/FeedModule.py
trunk/conduit/modules/FeedModule/config.glade
trunk/conduit/modules/Makefile.am
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Jan 28 13:22:40 2009
@@ -3,6 +3,7 @@
* Support Firefox3 Bookmarks
* Support Google Bookmarks
* Support Nautilus Bookmarks
+* Add dataprovider for changing desktop wallpaper
NEW in 0.3.15:
==============
Added: trunk/conduit/modules/DesktopWallpaperModule.py
==============================================================================
--- (empty file)
+++ trunk/conduit/modules/DesktopWallpaperModule.py Wed Jan 28 13:22:40 2009
@@ -0,0 +1,65 @@
+import logging
+log = logging.getLogger( "modules.DesktopWallpaper")
+
+import gconf
+import conduit
+import conduit.utils as Utils
+import conduit.dataproviders.File as FileDataProvider
+import conduit.dataproviders.DataProvider as DataProvider
+
+MODULES = {
+ "DesktopWallpaperDataProvider" : { "type": "dataprovider" }
+}
+
+class DesktopWallpaperDataProvider(FileDataProvider.FolderTwoWay):
+
+ _name_ = "Desktop Wallpaper"
+ _description_ = "Changes your Desktop Wallpaper"
+ _category_ = conduit.dataproviders.CATEGORY_MISC
+ _module_type_ = "sink"
+ _in_type_ = "file"
+ _out_type_ = "file"
+ _icon_ = "preferences-desktop-theme"
+ _configurable_ = False
+
+ def __init__(self, *args):
+ #Put photos into the users Pictures dir
+ pdir = Utils.exec_command_and_return_result("xdg-user-dir", "PICTURES")
+ if 1:
+ folder = "file://"+pdir.strip()
+ else:
+ folder = "file://"+Utils.new_tempdir()
+
+ log.info("Storing pictures in %s" % folder)
+
+ FileDataProvider.FolderTwoWay.__init__(
+ self,
+ folder=folder,
+ folderGroupName="Pictures",
+ includeHidden=False,
+ compareIgnoreMtime=False,
+ followSymlinks=False
+ )
+
+ self._client = gconf.client_get_default()
+
+ def get_UID(self):
+ return Utils.get_user_string()
+
+ def put(self, vfsFile, overwrite, LUID=None):
+ rid = FileDataProvider.FolderTwoWay.put(self, vfsFile, overwrite, LUID)
+
+ #if the file was successfully transferred then set it
+ #as the wallpaper
+ if vfsFile.exists():
+ self._client.set_string(
+ "/desktop/gnome/background/picture_filename",
+ vfsFile.get_local_uri()
+ )
+
+ return rid
+
+ def refresh(self):
+ DataProvider.TwoWay.refresh(self)
+
+
Modified: trunk/conduit/modules/FeedModule/FeedModule.py
==============================================================================
--- trunk/conduit/modules/FeedModule/FeedModule.py (original)
+++ trunk/conduit/modules/FeedModule/FeedModule.py Wed Jan 28 13:22:40 2009
@@ -1,3 +1,4 @@
+import random
import logging
log = logging.getLogger("modules.Feed")
@@ -68,6 +69,7 @@
self.feedUrl = ""
self.files = {}
self.limit = 0
+ self.randomize = False
self.downloadPhotos = True
self.downloadAudio = True
self.downloadVideo = True
@@ -85,7 +87,7 @@
def _add_file(self, url, title, t):
log.debug("Got enclosure %s %s (%s)" % (title,url,t))
if self._is_allowed_type(t):
- if len(self.files) < self.limit or self.limit == 0:
+ if len(self.files) < self.limit or self.limit == 0 or self.randomize:
self.files[url] = (title,t)
else:
log.debug("Enclosure %s is an illegal type (%s)" % (title,t))
@@ -104,6 +106,7 @@
url = tree.get_widget("url")
limitCb = tree.get_widget("limitdownloads")
limitSb = tree.get_widget("limitnumber")
+ randomize = tree.get_widget("randomize")
photosCb = tree.get_widget("downloadphotos")
audioCb = tree.get_widget("downloadaudio")
videoCb = tree.get_widget("downloadvideo")
@@ -115,6 +118,7 @@
else:
limitCb.set_active(False)
url.set_text(self.feedUrl)
+ randomize.set_active(self.randomize)
photosCb.set_active(self.downloadPhotos)
audioCb.set_active(self.downloadAudio)
videoCb.set_active(self.downloadVideo)
@@ -125,8 +129,8 @@
if response == True:
self.feedUrl = url.get_text()
if limitCb.get_active():
- #Need to cast to a float cause it returns an int
self.limit = int(limitSb.get_value())
+ self.randomize = randomize.get_active()
self.downloadPhotos = photosCb.get_active()
self.downloadAudio = audioCb.get_active()
self.downloadVideo = videoCb.get_active()
@@ -147,8 +151,24 @@
self._add_file(media['url'], entry.title, media['type'])
def get_all(self):
- DataProvider.DataSource.get_all(self)
- return self.files.keys()
+ DataProvider.DataSource.get_all(self)
+ all_files = self.files.keys()
+
+ if self.randomize:
+ if self.limit == 0:
+ #no need to randomly choose between *all* files,
+ #as order is irellevant, really
+ return all_files
+ else:
+ #randomly choose limit files from all_files
+ lim = self.limit
+ files = []
+ while lim > 0:
+ files.append(all_files.pop(random.randint(0,len(all_files)-1)))
+ lim -= 1
+ return files
+ else:
+ return all_files
def get(self, url):
DataProvider.DataSource.get(self, url)
@@ -176,6 +196,7 @@
return {
"feedUrl" : self.feedUrl,
"limit" : self.limit,
+ "randomize" : self.randomize,
"downloadPhotos" : self.downloadPhotos,
"downloadAudio" : self.downloadAudio,
"downloadVideo" : self.downloadVideo
Modified: trunk/conduit/modules/FeedModule/config.glade
==============================================================================
--- trunk/conduit/modules/FeedModule/config.glade (original)
+++ trunk/conduit/modules/FeedModule/config.glade Wed Jan 28 13:22:40 2009
@@ -92,6 +92,18 @@
</packing>
</child>
<child>
+ <widget class="GtkCheckButton" id="randomize">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Randomize Enclosures</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkCheckButton" id="downloadphotos">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -104,7 +116,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">6</property>
+ <property name="position">7</property>
</packing>
</child>
<child>
@@ -120,7 +132,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">7</property>
+ <property name="position">8</property>
</packing>
</child>
<child>
@@ -136,7 +148,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">8</property>
+ <property name="position">9</property>
</packing>
</child>
</widget>
Modified: trunk/conduit/modules/Makefile.am
==============================================================================
--- trunk/conduit/modules/Makefile.am (original)
+++ trunk/conduit/modules/Makefile.am Wed Jan 28 13:22:40 2009
@@ -17,7 +17,8 @@
NetworkModule \
GConfModule \
ZotoModule \
- Firefox3Module
+ Firefox3Module \
+ DesktopWallpaperModule.py
conduit_handlersdir = $(libdir)/conduit/modules
conduit_handlers_PYTHON = \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]