Skip to content

Commit b0f6715

Browse files
committed
add option to use drop down menu, #305
1 parent 694ff3a commit b0f6715

File tree

5 files changed

+49
-35
lines changed

5 files changed

+49
-35
lines changed

octoprint_tplinksmartplug/__init__.py

+17-30
Original file line numberDiff line numberDiff line change
@@ -162,28 +162,13 @@ def on_after_startup(self):
162162
##~~ SettingsPlugin mixin
163163

164164
def get_settings_defaults(self):
165-
return dict(
166-
debug_logging=False,
167-
arrSmartplugs=[],
168-
pollingInterval=15,
169-
pollingEnabled=False,
170-
thermal_runaway_monitoring=False,
171-
thermal_runaway_max_bed=0,
172-
thermal_runaway_max_extruder=0,
173-
event_on_error_monitoring=False,
174-
event_on_disconnect_monitoring=False,
175-
event_on_upload_monitoring=False,
176-
event_on_upload_monitoring_always=False,
177-
event_on_startup_monitoring=False,
178-
event_on_shutdown_monitoring=False,
179-
cost_rate=0,
180-
abortTimeout=30,
181-
powerOffWhenIdle=False,
182-
idleTimeout=30,
183-
idleIgnoreCommands='M105',
184-
idleTimeoutWaitTemp=50,
185-
progress_polling=False
186-
)
165+
return {'debug_logging': False, 'arrSmartplugs': [], 'pollingInterval': 15, 'pollingEnabled': False,
166+
'thermal_runaway_monitoring': False, 'thermal_runaway_max_bed': 0, 'thermal_runaway_max_extruder': 0,
167+
'event_on_error_monitoring': False, 'event_on_disconnect_monitoring': False,
168+
'event_on_upload_monitoring': False, 'event_on_upload_monitoring_always': False,
169+
'event_on_startup_monitoring': False, 'event_on_shutdown_monitoring': False, 'cost_rate': 0,
170+
'abortTimeout': 30, 'powerOffWhenIdle': False, 'idleTimeout': 30, 'idleIgnoreCommands': 'M105',
171+
'idleTimeoutWaitTemp': 50, 'progress_polling': False, 'useDropDown': False}
187172

188173
def on_settings_save(self, data):
189174
old_debug_logging = self._settings.get_boolean(["debug_logging"])
@@ -353,13 +338,14 @@ def get_assets(self):
353338
##~~ TemplatePlugin mixin
354339

355340
def get_template_configs(self):
356-
templates_to_load = [dict(type="navbar", custom_bindings=True), dict(type="settings", custom_bindings=True),
357-
dict(type="sidebar", icon="plug", custom_bindings=True,
358-
data_bind="visible: arrSmartplugs().length > 0",
359-
template="tplinksmartplug_sidebar.jinja2",
360-
template_header="tplinksmartplug_sidebar_header.jinja2"),
361-
dict(type="tab", custom_bindings=True, data_bind="visible: show_sidebar()",
362-
template="tplinksmartplug_tab.jinja2")]
341+
templates_to_load = [{'type': "navbar", 'custom_bindings': True, 'classes': ["dropdown"]},
342+
{'type': "settings", 'custom_bindings': True},
343+
{'type': "sidebar", 'icon': "plug", 'custom_bindings': True,
344+
'data_bind': "visible: arrSmartplugs().length > 0",
345+
'template': "tplinksmartplug_sidebar.jinja2",
346+
'template_header': "tplinksmartplug_sidebar_header.jinja2"},
347+
{'type': "tab", 'custom_bindings': True, 'data_bind': "visible: show_sidebar()",
348+
'template': "tplinksmartplug_tab.jinja2"}]
363349
return templates_to_load
364350

365351
##~~ ProgressPlugin mixin
@@ -760,7 +746,8 @@ def on_event(self, event, payload):
760746
self._autostart_file = None
761747
# File Uploaded Event
762748
if event == Events.UPLOAD and self._settings.get_boolean(["event_on_upload_monitoring"]):
763-
if payload.get("print", False) or self._settings.get_boolean(["event_on_upload_monitoring_always"]): # implemented in OctoPrint version 1.4.1
749+
if payload.get("print", False) or self._settings.get_boolean(
750+
["event_on_upload_monitoring_always"]): # implemented in OctoPrint version 1.4.1
764751
self._tplinksmartplug_logger.debug(
765752
"File uploaded: %s. Turning enabled plugs on." % payload.get("name", ""))
766753
self._tplinksmartplug_logger.debug(payload)

octoprint_tplinksmartplug/static/css/tplinksmartplug.css

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
#navbar_plugin_tplinksmartplug > a > i.on {
1+
#navbar_plugin_tplinksmartplug > a > i.on,
2+
#navbar_plugin_tplinksmartplug > ul > li > a > i.on
3+
{
24
color: #00FF00 !important;
35
}
46

5-
#navbar_plugin_tplinksmartplug > a > i.off {
7+
#navbar_plugin_tplinksmartplug > a > i.off,
8+
#navbar_plugin_tplinksmartplug > ul > li > a > i.off
9+
{
610
color: #FF0000 !important;
711
}
812

octoprint_tplinksmartplug/templates/tplinksmartplug_navbar.jinja2

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
1+
<!-- ko if: settings.settings.plugins.tplinksmartplug.useDropDown -->
2+
<a href="javascript:void(0)" title="TPLink SmartPlugs" class="dropdown-toggle" data-toggle="dropdown">
3+
<i class="fa fa-plug"></i>
4+
<b class="caret"></b>
5+
</a>
6+
<ul class="dropdown-menu" data-bind="foreach: arrSmartplugs">
7+
<li>
8+
<a href="#" data-toggle="tooltip" data-html="true" data-bind="click: $root.toggleRelay, visible: $root.loginState.loggedIn(), tooltip: {title: label, placement: 'bottom'}"><i class="icon" data-bind="css: [currentState(), icon(),(($root.processing().indexOf(ip()) > -1) ? 'icon-spin' : '')].join(' ')"></i> <span data-bind="text: label"></span></a>
9+
</li>
10+
</ul>
11+
<!-- /ko -->
12+
<!-- ko if: !(settings.settings.plugins.tplinksmartplug.useDropDown()) -->
113
<!-- ko foreach: arrSmartplugs -->
2-
<a class="pull-right" href="#" data-toggle="tooltip" data-html="true" data-bind="click: $root.toggleRelay, visible: $root.loginState.loggedIn(), tooltip: {title: label, placement: 'bottom'}" style="float: left;"><i class="icon" data-bind="css: [currentState(), icon(),(($root.processing().indexOf(ip()) > -1) ? 'icon-spin' : '')].join(' ')"></i><span data-bind="text: label"></span></a>
14+
<a class="pull-right" href="#" data-toggle="tooltip" data-html="true" data-bind="click: $root.toggleRelay, visible: $root.loginState.loggedIn(), tooltip: {title: label, placement: 'bottom'}" style="float: left;"><i class="icon" data-bind="css: [currentState(), icon(),(($root.processing().indexOf(ip()) > -1) ? 'icon-spin' : '')].join(' ')"></i><span data-bind="text: label"></span></a>
15+
<!-- /ko -->
316
<!-- /ko -->
417

18+
519
<div id="TPLinkSmartPlugWarning" data-bind="with: selectedPlug" class="modal hide fade">
620
<div class="modal-header">
721
<a href="#" class="close" data-dismiss="modal" aria-hidden="true">&times;</a>
822
<h3>TP-Link Smartplug</h3>
923
</div>
1024
<div class="modal-body">
1125
<p>
12-
<!--ko text: label()--><!--/ko--> is currently <!--ko text: currentState()--><!--/ko-->.
26+
<!--ko text: label()--><!--/ko--> is currently <!--ko text: currentState()--><!--/ko-->.
1327
</p>
1428
<p>
1529
{{ _('Are you sure you want to proceed?') }}

octoprint_tplinksmartplug/templates/tplinksmartplug_settings.jinja2

+9
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,15 @@
191191
</div>
192192
</div>
193193
</div>
194+
<div class="row-fluid">
195+
<div class="control-group">
196+
<div class="controls">
197+
<label class="checkbox">
198+
<input type="checkbox" title="{{ _('Put all control buttons in a drop-down menu.') }}" data-toggle="tooltip" data-bind="checked: settings.settings.plugins.tplinksmartplug.useDropDown, tooltip: {}" /> {{ _('Use Drop Down Menu') }}
199+
</label>
200+
</div>
201+
</div>
202+
</div>
194203
</div>
195204
</div>
196205
<div class="row-fluid">

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
plugin_name = "OctoPrint-TPLinkSmartplug"
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.2"
17+
plugin_version = "1.0.3rc1"
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)