Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-22 19:50:42 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-06-22 19:50:42 (GMT)
commit17f335a3f500391270d6f6001dca5dadd9ca3e72 (patch)
treee7dc5e47817c224e22c843d39feff19816c1f81f
parent615a962d8140a4e099b4bf0ce7ba544cf61bec97 (diff)
Implement nsIFilePicker using sugar.graphics.objectchooser.
-rw-r--r--filepicker.py126
-rwxr-xr-xwebactivity.py1
2 files changed, 127 insertions, 0 deletions
diff --git a/filepicker.py b/filepicker.py
new file mode 100644
index 0000000..61e0abd
--- /dev/null
+++ b/filepicker.py
@@ -0,0 +1,126 @@
+# Copyright (C) 2007, One Laptop Per Child
+#
+# 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; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import logging
+
+import gtk
+
+import xpcom
+from xpcom import components
+from xpcom.components import interfaces
+from xpcom.server.factory import Factory
+
+from sugar.graphics.objectchooser import ObjectChooser
+
+class FilePicker:
+ _com_interfaces_ = interfaces.nsIFilePicker
+
+ cid = '{57901c41-06cb-4b9e-8258-37323327b583}'
+ description = 'Sugar File Picker'
+
+ def __init__(self):
+ self._title = None
+ self._parent = None
+ self._file = None
+
+ def appendFilter(self, title, filter):
+ logging.warning('FilePicker.appendFilter: UNIMPLEMENTED')
+
+ def appendFilters(self, filterMask):
+ logging.warning('FilePicker.appendFilters: UNIMPLEMENTED')
+
+ def init(self, parent, title, mode):
+ self._title = title
+ self._file = None
+ """
+ cls = components.classes['@mozilla.org/embedcomp/window-watcher;1']
+ window_watcher = cls.getService(interfaces.nsIWindowWatcher)
+ chrome = window_watcher.getChromeForWindow(parent)
+ self._parent = chrome.web_view.get_toplevel()
+ """
+ self._parent = None
+
+ if mode != interfaces.nsIFilePicker.modeOpen:
+ raise xpcom.COMException(NS_ERROR_NOT_IMPLEMENTED)
+
+ def show(self):
+ chooser = ObjectChooser(self._title, self._parent,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
+ try:
+ result = chooser.run()
+ if result == gtk.RESPONSE_ACCEPT:
+ jobject = chooser.get_selected_object()
+ if jobject and jobject.file_path:
+ self._file = jobject.file_path
+ finally:
+ chooser.destroy()
+ del chooser
+
+ if self._file:
+ return interfaces.nsIFilePicker.returnOK
+ else:
+ return interfaces.nsIFilePicker.returnCancel
+
+ def set_defaultExtension(self, default_extension):
+ logging.warning('FilePicker.set_defaultExtension: UNIMPLEMENTED')
+
+ def get_defaultExtension(self):
+ logging.warning('FilePicker.get_defaultExtension: UNIMPLEMENTED')
+ return None
+
+ def set_defaultString(self, default_string):
+ logging.warning('FilePicker.set_defaultString: UNIMPLEMENTED')
+
+ def get_defaultString(self):
+ logging.warning('FilePicker.get_defaultString: UNIMPLEMENTED')
+ return None
+
+ def set_displayDirectory(self, display_directory):
+ logging.warning('FilePicker.set_displayDirectory: UNIMPLEMENTED')
+
+ def get_displayDirectory(self):
+ logging.warning('FilePicker.get_displayDirectory: UNIMPLEMENTED')
+ return None
+
+ def set_filterIndex(self, filter_index):
+ logging.warning('FilePicker.set_filterIndex: UNIMPLEMENTED')
+
+ def get_filterIndex(self):
+ logging.warning('FilePicker.get_filterIndex: UNIMPLEMENTED')
+ return None
+
+ def get_file(self):
+ if self._file:
+ cls = components.classes["@mozilla.org/file/local;1"]
+ local_file = cls.createInstance(interfaces.nsILocalFile)
+ local_file.initWithPath(self._file)
+ return local_file
+ else:
+ return None
+
+ def get_Files(self):
+ logging.warning('FilePicker.get_Files: UNIMPLEMENTED')
+ return None
+
+ def get_FileURL(self):
+ logging.warning('FilePicker.get_FileURL: UNIMPLEMENTED')
+ return None
+
+components.registrar.registerFactory(FilePicker.cid,
+ FilePicker.description,
+ '@mozilla.org/filepicker;1',
+ Factory(FilePicker))
+
diff --git a/webactivity.py b/webactivity.py
index f42a116..8ef06e8 100755
--- a/webactivity.py
+++ b/webactivity.py
@@ -32,6 +32,7 @@ from webtoolbar import WebToolbar
import downloadmanager
import promptservice
import securitydialogs
+import filepicker
_HOMEPAGE = 'http://www.google.com'