print: fix directory dates fixes #1199
This commit is contained in:
parent
be972d50d1
commit
34f80ce4aa
@ -211,6 +211,15 @@ class MoonrakerApi:
|
|||||||
*args
|
*args
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_dir_info(self, callback=None, directory='gcodes', *args):
|
||||||
|
logging.debug("Sending server.files.get_directory")
|
||||||
|
return self._ws.send_method(
|
||||||
|
"server.files.get_directory",
|
||||||
|
{"path": directory},
|
||||||
|
callback,
|
||||||
|
*args
|
||||||
|
)
|
||||||
|
|
||||||
def get_file_metadata(self, filename, callback=None, *args):
|
def get_file_metadata(self, filename, callback=None, *args):
|
||||||
return self._ws.send_method(
|
return self._ws.send_method(
|
||||||
"server.files.metadata",
|
"server.files.metadata",
|
||||||
|
@ -13,6 +13,7 @@ class KlippyFiles:
|
|||||||
self.callbacks = []
|
self.callbacks = []
|
||||||
self.files = {}
|
self.files = {}
|
||||||
self.filelist = []
|
self.filelist = []
|
||||||
|
self.directories = []
|
||||||
self.gcodes_path = None
|
self.gcodes_path = None
|
||||||
|
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
@ -27,6 +28,7 @@ class KlippyFiles:
|
|||||||
self.callbacks = None
|
self.callbacks = None
|
||||||
self.files = None
|
self.files = None
|
||||||
self.filelist = None
|
self.filelist = None
|
||||||
|
self.directories = None
|
||||||
self.gcodes_path = None
|
self.gcodes_path = None
|
||||||
|
|
||||||
def _callback(self, result, method, params):
|
def _callback(self, result, method, params):
|
||||||
@ -85,6 +87,13 @@ class KlippyFiles:
|
|||||||
fdir = os.path.dirname(params['filename'])
|
fdir = os.path.dirname(params['filename'])
|
||||||
thumbnail['path'] = os.path.join(fdir, thumbnail['relative_path'])
|
thumbnail['path'] = os.path.join(fdir, thumbnail['relative_path'])
|
||||||
self.run_callbacks(mods=[params['filename']])
|
self.run_callbacks(mods=[params['filename']])
|
||||||
|
elif method == "server.files.get_directory":
|
||||||
|
if 'result' not in result or 'dirs' not in result['result']:
|
||||||
|
return
|
||||||
|
for x in result['result']['dirs']:
|
||||||
|
if x not in self.directories:
|
||||||
|
self.directories.append(x)
|
||||||
|
self.get_dir_info(x['dirname'])
|
||||||
|
|
||||||
def add_file(self, item, notify=True):
|
def add_file(self, item, notify=True):
|
||||||
if 'filename' not in item and 'path' not in item:
|
if 'filename' not in item and 'path' not in item:
|
||||||
@ -166,6 +175,7 @@ class KlippyFiles:
|
|||||||
|
|
||||||
def refresh_files(self):
|
def refresh_files(self):
|
||||||
self._screen._ws.klippy.get_file_list(self._callback)
|
self._screen._ws.klippy.get_file_list(self._callback)
|
||||||
|
self._screen._ws.klippy.get_dir_info(self._callback)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def remove_file(self, filename, notify=True):
|
def remove_file(self, filename, notify=True):
|
||||||
@ -199,3 +209,6 @@ class KlippyFiles:
|
|||||||
if filename not in self.files:
|
if filename not in self.files:
|
||||||
return {"path": None, "modified": 0, "size": 0}
|
return {"path": None, "modified": 0, "size": 0}
|
||||||
return self.files[filename]
|
return self.files[filename]
|
||||||
|
|
||||||
|
def get_dir_info(self, directory):
|
||||||
|
self._screen._ws.klippy.get_dir_info(self._callback, directory=directory)
|
||||||
|
@ -82,8 +82,13 @@ class Panel(ScreenPanel):
|
|||||||
|
|
||||||
def add_directory(self, directory, show=True):
|
def add_directory(self, directory, show=True):
|
||||||
parent_dir = os.path.dirname(directory)
|
parent_dir = os.path.dirname(directory)
|
||||||
|
modified = 0
|
||||||
|
for x in self._files.directories:
|
||||||
|
if x['dirname'] == os.path.split(directory)[-1]:
|
||||||
|
modified = x['modified']
|
||||||
|
break
|
||||||
if directory not in self.filelist:
|
if directory not in self.filelist:
|
||||||
self.filelist[directory] = {'directories': [], 'files': [], 'modified': 0}
|
self.filelist[directory] = {'directories': [], 'files': [], 'modified': modified}
|
||||||
self.filelist[parent_dir]['directories'].append(directory)
|
self.filelist[parent_dir]['directories'].append(directory)
|
||||||
|
|
||||||
if directory not in self.labels['directories']:
|
if directory not in self.labels['directories']:
|
||||||
@ -114,22 +119,22 @@ class Panel(ScreenPanel):
|
|||||||
curdir = os.path.join(*d[:i])
|
curdir = os.path.join(*d[:i])
|
||||||
newdir = os.path.join(*d[:i + 1])
|
newdir = os.path.join(*d[:i + 1])
|
||||||
if newdir not in self.filelist[curdir]['directories']:
|
if newdir not in self.filelist[curdir]['directories']:
|
||||||
if d[i].startswith("."):
|
if newdir.startswith("."):
|
||||||
return
|
return
|
||||||
self.add_directory(newdir)
|
self.add_directory(newdir)
|
||||||
|
|
||||||
if filename not in self.filelist[directory]['files']:
|
if filename not in self.filelist[directory]['files']:
|
||||||
for i in range(1, len(d)):
|
for i in range(1, len(d)):
|
||||||
curdir = os.path.join(*d[:i + 1])
|
curdir = os.path.join(*d[:i + 1])
|
||||||
if curdir != "gcodes" and fileinfo['modified'] > self.filelist[curdir]['modified']:
|
if self.time_24:
|
||||||
self.filelist[curdir]['modified'] = fileinfo['modified']
|
time = f":<b>{self.space}" \
|
||||||
if self.time_24:
|
f"{datetime.fromtimestamp(self.filelist[curdir]['modified']):%Y/%m/%d %H:%M}</b>"
|
||||||
time = f':<b>{self.space}{datetime.fromtimestamp(fileinfo["modified"]):%Y/%m/%d %H:%M}</b>'
|
else:
|
||||||
else:
|
time = f":<b>{self.space}" \
|
||||||
time = f':<b>{self.space}{datetime.fromtimestamp(fileinfo["modified"]):%Y/%m/%d %I:%M %p}</b>'
|
f"{datetime.fromtimestamp(self.filelist[curdir]['modified']):%Y/%m/%d %I:%M %p}</b>"
|
||||||
info = _("Modified") + time
|
info = _("Modified") + time
|
||||||
info += "\n" + _("Size") + f':<b>{self.space}{self.format_size(fileinfo["size"])}</b>'
|
info += "\n" + _("Size") + f':<b>{self.space}{self.format_size(fileinfo["size"])}</b>'
|
||||||
self.labels['directories'][curdir]['info'].set_markup(info)
|
self.labels['directories'][curdir]['info'].set_markup(info)
|
||||||
self.filelist[directory]['files'].append(filename)
|
self.filelist[directory]['files'].append(filename)
|
||||||
|
|
||||||
if filepath not in self.files:
|
if filepath not in self.files:
|
||||||
@ -394,21 +399,17 @@ class Panel(ScreenPanel):
|
|||||||
logging.debug(f"Cannot update file, file not in labels: {filename}")
|
logging.debug(f"Cannot update file, file not in labels: {filename}")
|
||||||
return
|
return
|
||||||
|
|
||||||
logging.info(f"Updating file {filename}")
|
|
||||||
self.labels['files'][filename]['info'].set_markup(self.get_file_info_str(filename))
|
self.labels['files'][filename]['info'].set_markup(self.get_file_info_str(filename))
|
||||||
|
|
||||||
# Update icon
|
# Update icon
|
||||||
GLib.idle_add(self.image_load, filename)
|
GLib.idle_add(self.image_load, filename)
|
||||||
|
|
||||||
def _callback(self, newfiles, deletedfiles, updatedfiles=None):
|
def _callback(self, newfiles, deletedfiles, updatedfiles=None):
|
||||||
logging.debug(f"newfiles: {newfiles}")
|
|
||||||
for file in newfiles:
|
for file in newfiles:
|
||||||
self.add_file(file)
|
self.add_file(file)
|
||||||
logging.debug(f"deletedfiles: {deletedfiles}")
|
|
||||||
for file in deletedfiles:
|
for file in deletedfiles:
|
||||||
self.delete_file(file)
|
self.delete_file(file)
|
||||||
if updatedfiles is not None:
|
if updatedfiles is not None:
|
||||||
logging.debug(f"updatefiles: {updatedfiles}")
|
|
||||||
for file in updatedfiles:
|
for file in updatedfiles:
|
||||||
self.update_file(file)
|
self.update_file(file)
|
||||||
return False
|
return False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user