Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
Matteo Cypriani | 476f311559 | |
Matteo Cypriani | 1dee9e218f | |
Matteo Cypriani | 186e598a7d | |
Matteo Cypriani | 721632baf8 | |
Matteo Cypriani | 9469a59718 | |
Matteo Cypriani | 462676e803 | |
Matteo Cypriani | 8ce1846288 |
|
@ -1,3 +1,8 @@
|
|||
gcp 0.2.1 (2019-03-10, Matteo Cypriani):
|
||||
- fix deprecation warnings with dbus.glib
|
||||
see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923677
|
||||
- minor documentation (README) improvements
|
||||
|
||||
gcp 0.2.0 (2018-10-14, Matteo Cypriani):
|
||||
- actually switch to Python3
|
||||
- cp compatibibility:
|
||||
|
|
15
README.md
15
README.md
|
@ -16,8 +16,8 @@ gcp 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
|
||||
gcp. If not, see <http://www.gnu.org/licenses/>.
|
||||
You should have received a [copy of the GNU General Public License](LICENSE)
|
||||
along with gcp. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
About
|
||||
|
@ -39,7 +39,7 @@ functionalities such as:
|
|||
- **Files saving**: you can keep track of the files you have copied, and copy
|
||||
them again later (useful when, for example, you copy some free music to your
|
||||
friends on a regular basis).
|
||||
- gcp will be **approximately option-compatible with cp** (approximately
|
||||
- gcp will be **approximately option-compatible with (GNU) cp** (approximately
|
||||
because the behaviour is not exactly the same, see below).
|
||||
|
||||
**WARNING**: gcp is at a relatively early stage of development, use at your own
|
||||
|
@ -72,13 +72,14 @@ On Debian-based systems
|
|||
How to use it?
|
||||
==============
|
||||
|
||||
Pretty much like cp (see `gcp --help`).
|
||||
Pretty much like cp (see `gcp --help` and `man gcp`).
|
||||
|
||||
Please note that the behaviour is not exactly the same as cp's, even if gcp
|
||||
aims to be option-compatible. Mainly, the destination filenames can be modified
|
||||
(cf. the `--fs-fix` option).
|
||||
(cf. the `--fix-filenames` option).
|
||||
|
||||
gcp doesn't implement all the options from cp yet, but it's a long-term goal.
|
||||
gcp doesn't implement all the options GNU cp has yet, but it's a long-term
|
||||
goal.
|
||||
|
||||
|
||||
Logging
|
||||
|
@ -150,7 +151,7 @@ Contributors
|
|||
* Original author: Jérôme Poisson a.k.a. Goffi <goffi@goffi.org> 2010-2011.
|
||||
* Thomas Preud'homme <robotux@celest.fr> 2011: manpage, stat resolution fix.
|
||||
* Jingbei Li a.k.a. petronny 2016: conversion to Python3.
|
||||
* Matteo Cypriani <mcy@lm7.fr> 2018: `--fs-fix` option, Python3 fixes.
|
||||
* Matteo Cypriani <mcy@lm7.fr> 2018: `--fix-filenames` option, Python3 fixes.
|
||||
|
||||
|
||||
Contact
|
||||
|
|
2
fr.po
2
fr.po
|
@ -8,7 +8,7 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.2.0\n"
|
||||
"Project-Id-Version: 0.2.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-09-30 18:05+0800\n"
|
||||
"PO-Revision-Date: 2018-10-14 20:56+0200\n"
|
||||
|
|
33
gcp
33
gcp
|
@ -5,7 +5,7 @@ gcp: Gcp CoPier
|
|||
Copyright (c) 2010, 2011 Jérôme Poisson <goffi@goffi.org>
|
||||
(c) 2011 Thomas Preud'homme <robotux@celest.fr>
|
||||
(c) 2016 Jingbei Li <i@jingbei.li>
|
||||
(c) 2018 Matteo Cypriani <mcy@lm7.fr>
|
||||
(c) 2018, 2019 Matteo Cypriani <mcy@lm7.fr>
|
||||
|
||||
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
|
||||
|
@ -36,12 +36,11 @@ logging.basicConfig(level=logging.INFO, format='%(message)s')
|
|||
gettext.install('gcp', "i18n")
|
||||
|
||||
try:
|
||||
from gi.repository import GObject
|
||||
#DBus
|
||||
import dbus
|
||||
import dbus.glib
|
||||
from gi.repository import GLib
|
||||
from dbus.mainloop.glib import DBusGMainLoop
|
||||
DBusGMainLoop(set_as_default=True)
|
||||
import dbus.service
|
||||
import dbus.mainloop.glib
|
||||
import dbus
|
||||
except ImportError as e:
|
||||
error(_("Error during import"))
|
||||
error(_("Please check dependecies:"), e)
|
||||
|
@ -57,7 +56,7 @@ except ImportError as e:
|
|||
|
||||
NAME = "gcp (Gcp CoPier)"
|
||||
NAME_SHORT = "gcp"
|
||||
VERSION = '0.2.0'
|
||||
VERSION = '0.2.1'
|
||||
|
||||
ABOUT = NAME_SHORT + " " + VERSION + """
|
||||
---
|
||||
|
@ -81,7 +80,6 @@ const_JOURNAL_PATH = const_FILES_DIR + "/journal"
|
|||
const_SAVED_LIST = const_FILES_DIR + "/saved_list"
|
||||
|
||||
|
||||
|
||||
class DbusObject(dbus.service.Object):
|
||||
|
||||
def __init__(self, gcp, bus, path):
|
||||
|
@ -116,7 +114,9 @@ class DbusObject(dbus.service.Object):
|
|||
return (False, _("INTERNAL ERROR: invalid source_dir"))
|
||||
return self._gcp.parseArguments(args, source_dir)
|
||||
|
||||
|
||||
class Journal():
|
||||
|
||||
def __init__(self, path=const_JOURNAL_PATH):
|
||||
self.journal_path = os.path.expanduser(path)
|
||||
self.journal_fd = open(self.journal_path,'w') #TODO: check and maybe save previous journals
|
||||
|
@ -183,8 +183,6 @@ class Journal():
|
|||
info(_("Please check journal: %s") % self.journal_path)
|
||||
|
||||
|
||||
|
||||
|
||||
class GCP():
|
||||
|
||||
def __init__(self):
|
||||
|
@ -258,7 +256,6 @@ class GCP():
|
|||
error(_("Can't copy %(path)s: %(exception)s")
|
||||
% {'path':path, 'exception':e.strerror})
|
||||
|
||||
|
||||
def __appendDirToList(self, dirpath, dest_path, options):
|
||||
"""Add recursively directory to the copy list
|
||||
@param path: absolute path of dir
|
||||
|
@ -361,9 +358,9 @@ class GCP():
|
|||
source_fd.close()
|
||||
return True
|
||||
|
||||
GObject.io_add_watch(source_fd, GObject.IO_IN,self._copyFile,
|
||||
(dest_fd, options),
|
||||
priority=GObject.PRIORITY_DEFAULT)
|
||||
GLib.io_add_watch(source_fd, GLib.IO_IN,self._copyFile,
|
||||
(dest_fd, options),
|
||||
priority=GLib.PRIORITY_DEFAULT)
|
||||
if not self.progress:
|
||||
info(_("COPYING %(source)s ==> %(dest)s")
|
||||
% {"source":source_file, "dest":dest_file})
|
||||
|
@ -377,8 +374,6 @@ class GCP():
|
|||
source_fd.close()
|
||||
dest_fd.close()
|
||||
|
||||
|
||||
|
||||
def _copyFile(self, source_fd, condition, data):
|
||||
"""Actually copy the file, callback used with io_add_watch
|
||||
@param source_fd: file descriptor of the file to copy
|
||||
|
@ -520,7 +515,6 @@ class GCP():
|
|||
if not args:
|
||||
exit(0)
|
||||
|
||||
|
||||
if options.sources_list or options.sources_full_list:
|
||||
info(_('Saved sources:'))
|
||||
sources = list(saved_files.keys())
|
||||
|
@ -723,7 +717,7 @@ class GCP():
|
|||
self.__checkArgs(options, source_dir, args)
|
||||
if not self.__launched:
|
||||
self.journal = Journal()
|
||||
GObject.idle_add(self.__copyNextFile)
|
||||
GLib.idle_add(self.__copyNextFile)
|
||||
self.__launched = True
|
||||
return (True,'')
|
||||
|
||||
|
@ -733,7 +727,7 @@ class GCP():
|
|||
|
||||
def go(self):
|
||||
"""Launch main loop"""
|
||||
self.loop = GObject.MainLoop()
|
||||
self.loop = GLib.MainLoop()
|
||||
try:
|
||||
self.loop.run()
|
||||
except KeyboardInterrupt:
|
||||
|
@ -752,4 +746,3 @@ if __name__ == "__main__":
|
|||
exit(1)
|
||||
if gcp.journal.partial:
|
||||
exit(2)
|
||||
|
||||
|
|
2
gcp.pot
2
gcp.pot
|
@ -5,7 +5,7 @@
|
|||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.2.0\n"
|
||||
"Project-Id-Version: 0.2.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-14 20:51+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
|
|
Loading…
Reference in New Issue