~ubuntu-branches/ubuntu/maverick/awn-extras-applets/maverick

« back to all changes in this revision

Viewing changes to applets/unmaintained/stacks/stacks_backend_file.py

  • Committer: Bazaar Package Importer
  • Author(s): Julien Lavergne
  • Date: 2010-08-29 14:29:52 UTC
  • mto: This revision was merged to the branch mainline in revision 21.
  • Revision ID: james.westby@ubuntu.com-20100829142952-rhvuetyms9bv5uu7
Tags: upstream-0.4.0+bzr1372
ImportĀ upstreamĀ versionĀ 0.4.0+bzr1372

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/env python
2
 
 
3
2
# Copyright (c) 2007 Timon ter Braak
4
3
#
5
4
# This library is free software; you can redistribute it and/or
18
17
# Boston, MA 02111-1307, USA.
19
18
 
20
19
import gtk
21
 
import gnomevfs
 
20
import gio
 
21
 
22
22
from stacks_backend import *
23
23
 
24
24
 
30
30
    def __init__(self, applet, vfs_uri, icon_size):
31
31
        Backend.__init__(self, applet, icon_size)
32
32
        self.backend_uri = vfs_uri
33
 
        mode = gnomevfs.OPEN_WRITE | gnomevfs.OPEN_READ | gnomevfs.OPEN_RANDOM
34
 
        if not gnomevfs.exists(self.backend_uri.as_uri()):
 
33
        uri = self.backend_uri.as_uri()
 
34
        if not uri.query_exists():
35
35
            # create folder
36
 
            path = self.backend_uri.as_uri().parent.path
37
 
            uri = self.backend_uri.as_uri().resolve_relative("/")
38
 
            for folder in path.split("/"):
39
 
                if not folder:
40
 
                    continue
41
 
                uri = uri.append_string(folder)
42
 
                try:
43
 
                    gnomevfs.make_directory(uri, 0777)
44
 
                except gnomevfs.FileExistsError:
45
 
                    pass
 
36
            try:
 
37
                uri.get_parent().make_directory_with_parents(gio.Cancellable())
 
38
            except gio.Error:
 
39
                pass
46
40
            # create file
47
 
            self.handle = gnomevfs.create(self.backend_uri.as_uri(), mode)
 
41
            self.handle = uri.create()
48
42
        else:
49
 
            self.handle = gnomevfs.Handle(self.backend_uri.as_uri(), mode)
50
 
 
 
43
            self.handle = uri.append_to()
51
44
 
52
45
    def remove(self,vfs_uris):
53
46
        buffer = ""
54
 
        content = gnomevfs.read_entire_file(self.backend_uri.as_string())
 
47
        content, length, etag = self.backend_uri.as_uri().load_contents()
55
48
        lines = content.splitlines()
56
49
        for line in lines:
57
50
            for vfs_uri in vfs_uris:
65
58
            self.handle.write(buffer)
66
59
        return Backend.remove(self, vfs_uris)
67
60
 
68
 
 
69
61
    def add(self, vfs_uris, action=None):
70
62
        if action is not None:
71
63
            for vfs_uri in vfs_uris:
72
 
                self.handle.seek(0, gnomevfs.SEEK_END)
 
64
                self.handle.seek(0, 2) # hopefully 2 is SEEK_END
73
65
                self.handle.write(vfs_uri.as_string() + os.linesep)
74
66
        return Backend.add(self, vfs_uris)
75
67
 
76
 
 
77
68
    def read(self):
78
 
        content = gnomevfs.read_entire_file(
79
 
                self.backend_uri.as_string())
 
69
        content, length, etag = self.backend_uri.as_uri().load_contents()
80
70
        lines = content.splitlines()
81
71
        vfs_uris = []
82
72
        for line in lines:
88
78
        if vfs_uris:
89
79
            self.add(vfs_uris)
90
80
 
91
 
 
92
81
    def clear(self):
93
82
        self.handle.truncate(0)
94
83
        Backend.clear(self)
95
84
 
96
 
 
97
85
    # Do nothing on "open"; not really useful
98
86
    def open(self):
99
87
        return
100
88
 
101
 
 
102
89
    def get_type(self):
103
90
        return BACKEND_TYPE_FILE
104
91
 
105
 
 
106
92
    def _clear_cb(self, widget):
107
93
        self.clear()
108
94
 
109
 
 
110
95
    def get_menu_items(self):
111
96
        items = []
112
97
        clear_item = gtk.ImageMenuItem(stock_id=gtk.STOCK_CLEAR)