Skip to content

Commit

Permalink
Can now send folders as zips
Browse files Browse the repository at this point in the history
  • Loading branch information
py-ranoid committed Oct 24, 2017
1 parent 37e772a commit 50775ad
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions kdeconnect-ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from subprocess import check_output, call
from gi.repository import GObject
from kdeconnect import send_files, get_available_devices
import zipfile

TARGET = "%%TARGET%%".title()
Nautilus = importlib.import_module("gi.repository.{}".format(TARGET))
Expand All @@ -11,37 +12,47 @@ class KDEConnectExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
pass

def menu_activate_cb(self, menu, files, device_id, device_name):
send_files(files, device_id, device_name)

def zipdir(self, path, ziph):
# ziph is zipfile handle
import os
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))

def menu_activate_cb(self, menu, files, device_id, device_name, folder_list):
import zipfile
import os
for folder_name in folder_list:
zip_name = folder_name + '.zip'
zipf = zipfile.ZipFile(zip_name[7:], 'w', zipfile.ZIP_DEFLATED)
self.zipdir(folder_name + '/', zipf)
zipf.close()
zipfile = Nautilus.FileInfo.create_for_uri(zip_name)
files.append(zipfile)

send_files(files, device_id, device_name)
# for folder_name in folder_list:
# os.remove(folder_name[7:] + '.zip')

def get_file_items(self, window, files):
try:
devices = get_available_devices()
except Exception as e:
raise Exception("Failed to get available devices")

files_new = []
folder_list = []
for i in range(len(files)):
if (files[i].is_directory() == False):
files_new.append(files[i])
else:
folder_name = files[i].get_uri()
zip_name = folder_name + '.zip'
zipf = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
self.zipdir(folder_name + '/', zipf)
zipf.close()
zipfile_object = Nautilus.FileInfo.create_for_uri(zip_name)
files_new.append(zipfile_object)
folder_list.append(files[i].get_uri())

files = files_new
print files
print folder_list

if (len(files_new) < 1):
if (len(files_new) + len(folder_list) < 1):
return []

items = []
Expand All @@ -51,7 +62,7 @@ def get_file_items(self, window, files):
label="Send to %s" % device["name"]
)
item.connect('activate', self.menu_activate_cb,
files, device["id"], device["name"])
files, device["id"], device["name"], folder_list)
items.append(item)

return items

0 comments on commit 50775ad

Please sign in to comment.