Skip to content

Commit b14ba28

Browse files
committed
add inline thumbnail option for new upload manager available in OctoPrint 1.11.0, #130
1 parent 2132043 commit b14ba28

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

octoprint_prusaslicerthumbnails/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def get_settings_defaults(self):
5252
'align_inline_thumbnail': False, 'inline_thumbnail_align_value': "left", 'state_panel_thumbnail': True,
5353
'state_panel_thumbnail_scale_value': "100", 'resize_filelist': False, 'filelist_height': "306",
5454
'scale_inline_thumbnail_position': False, 'sync_on_refresh': False, 'use_uploads_folder': False,
55-
'relocate_progress': False}
55+
'relocate_progress': False, 'inline_thumbnail_uploadmanager': True}
5656

5757
# ~~ AssetPlugin mixin
5858

octoprint_prusaslicerthumbnails/static/js/prusaslicerthumbnails.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ $(function() {
1111
self.settingsViewModel = parameters[0];
1212
self.filesViewModel = parameters[1];
1313
self.printerStateViewModel = parameters[2];
14+
self.uploadmanagerViewModel = parameters[3];
1415

1516
self.thumbnail_url = ko.observable('/static/img/tentacle-20x20.png');
1617
self.thumbnail_title = ko.observable('');
@@ -68,7 +69,7 @@ $(function() {
6869
self.onBeforeBinding = function() {
6970
// inject filelist thumbnail into template
7071

71-
let regex = /<div class="btn-group action-buttons">([\s\S]*)<.div>/mi;
72+
let regex = /<div class="btn-group action-buttons">([\s\S]*)<.div>/mi;
7273
let template = '<div class="btn btn-mini" data-bind="click: function() { if ($root.loginState.isUser()) { $root.prusaslicerthumbnails_open_thumbnail($data) } else { return; } }, visible: ($data.thumbnail_src == \'prusaslicerthumbnails\' && $root.settingsViewModel.settings.plugins.prusaslicerthumbnails.inline_thumbnail() == false)" title="Show Thumbnail" style="display: none;"><i class="fa fa-image"></i></div>';
7374

7475
let inline_thumbnail_template = '<div class="inline_prusa_thumbnail" ' +
@@ -79,13 +80,28 @@ $(function() {
7980
'style: {\'width\': (!$root.thumbnailPositionLeft()) ? $root.thumbnailScaleValue() : \'100%\' }" ' +
8081
'style="display: none;"/></div>';
8182

82-
8383
$("#files_template_machinecode").text(function () {
8484
var return_value = inline_thumbnail_template + $(this).text();
8585
return_value = return_value.replace(regex, '<div class="btn-group action-buttons">$1 ' + template + '></div>');
8686
return return_value;
8787
});
8888

89+
// new upload manager injection if inline thumbnails is enabled.
90+
if(self.uploadmanagerViewModel) {
91+
$("#uploadmanager_template_machinecode").text(function () {
92+
let uploadmanager_thumbnail_template = '<i class="fa-regular fa-file-lines" data-bind="visible: ($data.thumbnail_src == \'prusaslicerthumbnails\' && $root.settings.settings.plugins.prusaslicerthumbnails.inline_thumbnail_uploadmanager() == false)"></i><div class="inline_prusa_thumbnail" ' +
93+
'data-bind="if: ($data.thumbnail_src == \'prusaslicerthumbnails\' && $root.settings.settings.plugins.prusaslicerthumbnails.inline_thumbnail_uploadmanager() == true)">' +
94+
'<img data-bind="attr: {src: $data.thumbnail}, ' +
95+
'visible: ($data.thumbnail_src == \'prusaslicerthumbnails\' && $root.settings.settings.plugins.prusaslicerthumbnails.inline_thumbnail_uploadmanager() == true), ' +
96+
'click: function() { if ($root.loginState.isUser() && !($(\'html\').attr(\'id\') === \'touch\')) { $root.files.prusaslicerthumbnails_open_thumbnail($data) } else { return; } },' +
97+
'style="display: none;"/></div>';
98+
let regex_uploadmanager = /<i class="fa-regular fa-file-lines"><\/i>/mi;
99+
var return_value = $(this).text();
100+
return_value = return_value.replace(regex_uploadmanager, '' + uploadmanager_thumbnail_template);
101+
return return_value;
102+
});
103+
}
104+
89105
// assign initial scaling
90106
if (self.settingsViewModel.settings.plugins.prusaslicerthumbnails.scale_inline_thumbnail()==true){
91107
self.filesViewModel.thumbnailScaleValue(self.settingsViewModel.settings.plugins.prusaslicerthumbnails.inline_thumbnail_scale_value() + "%");
@@ -188,7 +204,8 @@ $(function() {
188204

189205
OCTOPRINT_VIEWMODELS.push({
190206
construct: PrusaslicerthumbnailsViewModel,
191-
dependencies: ['settingsViewModel', 'filesViewModel', 'printerStateViewModel'],
207+
dependencies: ['settingsViewModel', 'filesViewModel', 'printerStateViewModel', 'uploadmanagerViewModel'],
208+
optional: ['uploadmanagerViewModel'],
192209
elements: ['div#prusa_thumbnail_viewer', '#crawl_files', '#crawl_files_results']
193210
});
194211
});

octoprint_prusaslicerthumbnails/templates/prusaslicerthumbnails_settings.jinja2

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@
4949
<option value="right">Right</option>
5050
</select>
5151
</div>
52+
<div class="controls">
53+
<label class="checkbox">
54+
<input type="checkbox" data-bind="checked: settings.plugins.prusaslicerthumbnails.inline_thumbnail_uploadmanager"> Show thumbnails in Upload Manager (OctPrint 1.11.0+).
55+
</label>
56+
</div>
5257
<div class="controls">
5358
<label class="checkbox">
5459
<input type="checkbox" data-bind="checked: settings.plugins.prusaslicerthumbnails.resize_filelist"> Set file list height.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
plugin_name = "Slicer Thumbnails"
1515

1616
# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
17-
plugin_version = "1.0.9"
17+
plugin_version = "1.1.0"
1818

1919
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
2020
# module

0 commit comments

Comments
 (0)