Also provide access to the auto-connect setting in the connection and the settings dialog

master
Gina Häußge 2013-06-29 19:57:46 +02:00
parent 30e1624127
commit b0518a71a3
5 changed files with 35 additions and 5 deletions

View File

@ -24,7 +24,8 @@ def getConnectionOptions():
"ports": comm.serialList(), "ports": comm.serialList(),
"baudrates": comm.baudrateList(), "baudrates": comm.baudrateList(),
"portPreference": settings().get(["serial", "port"]), "portPreference": settings().get(["serial", "port"]),
"baudratePreference": settings().getInt(["serial", "baudrate"]) "baudratePreference": settings().getInt(["serial", "baudrate"]),
"autoconnect": settings().getBoolean(["serial", "autoconnect"])
} }
class Printer(): class Printer():

View File

@ -170,6 +170,9 @@ def connect():
settings().set(["serial", "port"], port) settings().set(["serial", "port"], port)
settings().setInt(["serial", "baudrate"], baudrate) settings().setInt(["serial", "baudrate"], baudrate)
settings().save() settings().save()
if "autoconnect" in request.values.keys():
settings().setBoolean(["serial", "autoconnect"], True)
settings().save()
printer.connect(port=port, baudrate=baudrate) printer.connect(port=port, baudrate=baudrate)
elif "command" in request.values.keys() and request.values["command"] == "disconnect": elif "command" in request.values.keys() and request.values["command"] == "disconnect":
printer.disconnect() printer.disconnect()
@ -507,6 +510,9 @@ def getSettings():
"alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]), "alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]),
"sdSupport": s.getBoolean(["feature", "sdSupport"]) "sdSupport": s.getBoolean(["feature", "sdSupport"])
}, },
"serial": {
"autoconnect": s.getBoolean(["serial", "autoconnect"])
},
"folder": { "folder": {
"uploads": s.getBaseFolder("uploads"), "uploads": s.getBaseFolder("uploads"),
"timelapse": s.getBaseFolder("timelapse"), "timelapse": s.getBaseFolder("timelapse"),
@ -559,6 +565,9 @@ def setSettings():
if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"]) if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"])
if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"]) if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"])
if "serial" in data.keys():
if "autoconnect" in data["serial"].keys(): s.setBoolean(["serial", "autoconnect"], data["serial"]["autoconnect"])
if "folder" in data.keys(): if "folder" in data.keys():
if "uploads" in data["folder"].keys(): s.setBaseFolder("uploads", data["folder"]["uploads"]) if "uploads" in data["folder"].keys(): s.setBaseFolder("uploads", data["folder"]["uploads"])
if "timelapse" in data["folder"].keys(): s.setBaseFolder("timelapse", data["folder"]["timelapse"]) if "timelapse" in data["folder"].keys(): s.setBaseFolder("timelapse", data["folder"]["timelapse"])

View File

@ -89,10 +89,11 @@ function LoginStateViewModel() {
} }
} }
function ConnectionViewModel(loginStateViewModel) { function ConnectionViewModel(loginStateViewModel, settingsViewModel) {
var self = this; var self = this;
self.loginState = loginStateViewModel; self.loginState = loginStateViewModel;
self.settings = settingsViewModel;
self.portOptions = ko.observableArray(undefined); self.portOptions = ko.observableArray(undefined);
self.baudrateOptions = ko.observableArray(undefined); self.baudrateOptions = ko.observableArray(undefined);
@ -188,6 +189,8 @@ function ConnectionViewModel(loginStateViewModel) {
dataType: "json", dataType: "json",
data: data data: data
}) })
self.settings.saveData();
} else { } else {
self.requestData(); self.requestData();
$.ajax({ $.ajax({
@ -1337,6 +1340,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.feature_alwaysSendChecksum = ko.observable(undefined); self.feature_alwaysSendChecksum = ko.observable(undefined);
self.feature_sdSupport = ko.observable(undefined); self.feature_sdSupport = ko.observable(undefined);
self.serial_autoconnect = ko.observable(undefined);
self.folder_uploads = ko.observable(undefined); self.folder_uploads = ko.observable(undefined);
self.folder_timelapse = ko.observable(undefined); self.folder_timelapse = ko.observable(undefined);
self.folder_timelapseTmp = ko.observable(undefined); self.folder_timelapseTmp = ko.observable(undefined);
@ -1388,6 +1393,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum); self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum);
self.feature_sdSupport(response.feature.sdSupport); self.feature_sdSupport(response.feature.sdSupport);
self.serial_autoconnect(response.serial.autoconnect);
self.folder_uploads(response.folder.uploads); self.folder_uploads(response.folder.uploads);
self.folder_timelapse(response.folder.timelapse); self.folder_timelapse(response.folder.timelapse);
self.folder_timelapseTmp(response.folder.timelapseTmp); self.folder_timelapseTmp(response.folder.timelapseTmp);
@ -1429,6 +1436,9 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) {
"alwaysSendChecksum": self.feature_alwaysSendChecksum(), "alwaysSendChecksum": self.feature_alwaysSendChecksum(),
"sdSupport": self.feature_sdSupport() "sdSupport": self.feature_sdSupport()
}, },
"serial": {
"autoconnect": self.serial_autoconnect()
},
"folder": { "folder": {
"uploads": self.folder_uploads(), "uploads": self.folder_uploads(),
"timelapse": self.folder_timelapse(), "timelapse": self.folder_timelapse(),
@ -1839,11 +1849,11 @@ function AppearanceViewModel(settingsViewModel) {
$(function() { $(function() {
//~~ View models //~~ View models
var loginStateViewModel = new LoginStateViewModel(loginStateViewModel); var loginStateViewModel = new LoginStateViewModel();
var usersViewModel = new UsersViewModel(loginStateViewModel); var usersViewModel = new UsersViewModel(loginStateViewModel);
var connectionViewModel = new ConnectionViewModel(loginStateViewModel);
var printerStateViewModel = new PrinterStateViewModel(loginStateViewModel);
var settingsViewModel = new SettingsViewModel(loginStateViewModel, usersViewModel); var settingsViewModel = new SettingsViewModel(loginStateViewModel, usersViewModel);
var connectionViewModel = new ConnectionViewModel(loginStateViewModel, settingsViewModel);
var printerStateViewModel = new PrinterStateViewModel(loginStateViewModel);
var appearanceViewModel = new AppearanceViewModel(settingsViewModel); var appearanceViewModel = new AppearanceViewModel(settingsViewModel);
var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel); var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel);
var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel); var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel);

View File

@ -97,6 +97,9 @@
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" id="connection_save" data-bind="checked: saveSettings, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed && loginState.isUser"> Save connection settings <input type="checkbox" id="connection_save" data-bind="checked: saveSettings, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed && loginState.isUser"> Save connection settings
</label> </label>
<label class="checkbox">
<input type="checkbox" id="connection_autoconnect" data-bind="checked: settings.serial_autoconnect, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed && loginState.isUser"> Auto-connect on server startup
</label>
<button class="btn btn-block" id="printer_connect" data-bind="click: connect, text: buttonText(), enable: loginState.isUser">Connect</button> <button class="btn btn-block" id="printer_connect" data-bind="click: connect, text: buttonText(), enable: loginState.isUser">Connect</button>
</div> </div>
</div> </div>

View File

@ -134,6 +134,13 @@
</label> </label>
</div> </div>
</div> </div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: serial_autoconnect" id="settings-serialAutoconnect"> Auto-connect to printer on server start
</label>
</div>
</div>
</form> </form>
</div> </div>
<div class="tab-pane" id="settings_folder"> <div class="tab-pane" id="settings_folder">