~mateo-salta/nitroshare/nitroshare

« back to all changes in this revision

Viewing changes to nautilus/nitroshare.py

  • Committer: Nathan Osman
  • Date: 2012-07-04 22:38:09 UTC
  • Revision ID: admin@quickmediasolutions.com-20120704223809-3f3w98omt2f90ba6
Added [empty] menu item to indicator when there are no machines available.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
'''NitroShare - A simple network file sharing tool.
2
 
   Copyright (C) 2012 Nathan Osman
3
 
 
4
 
   This program is free software: you can redistribute it and/or modify
5
 
   it under the terms of the GNU General Public License as published by
6
 
   the Free Software Foundation, either version 3 of the License, or
7
 
   (at your option) any later version.
8
 
 
9
 
   This program is distributed in the hope that it will be useful,
10
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
   GNU General Public License for more details.
13
 
 
14
 
   You should have received a copy of the GNU General Public License
15
 
   along with this program.  If not, see <http://www.gnu.org/licenses/>.'''
16
 
 
17
 
from xmlrpclib import ServerProxy, Fault
18
 
from gi.repository import Nautilus, GObject
19
 
 
20
 
class NitroShare(GObject.GObject, Nautilus.MenuProvider):
21
 
    
22
 
    def __init__(self):
23
 
        # Initialize our RPC connection to NitroShare
24
 
        self.rpc = ServerProxy('http://localhost:41722')
25
 
    
26
 
    def send_files(self, menu, files):
27
 
        # Get the URIs for each of the files and send them to NitroShare
28
 
        filename_list = [x.get_uri() for x in files]
29
 
        self.rpc.SendFiles(filename_list)
30
 
    
31
 
    def get_file_items(self, window, files):
32
 
        # If no files were provided, we don't show anything
33
 
        if not len(files):
34
 
            return
35
 
        
36
 
        # Determine the caption to display for the menu item
37
 
        caption = "Send item%s with NitroShare" % ('' if len(files) == 1 else 's')
38
 
        
39
 
        # Create the menu item
40
 
        item = Nautilus.MenuItem(name="NitroShare::SendFiles",
41
 
                                 label=caption,
42
 
                                 tip=caption)
43
 
        
44
 
        # Connect the menu item to our handler and return the item
45
 
        item.connect('activate', self.send_files, files)
46
 
        return [item]