diff --git a/views/routine_list.nim b/views/routine_list.nim
index 301c8f2..d8dee57 100644
--- a/views/routine_list.nim
+++ b/views/routine_list.nim
@@ -4,7 +4,7 @@ EZ-Bkup is released under the General Public License 3.0.
See COPYING or for details.]#
import owlkettle
-import std/osproc, std/os, std/logging
+import osproc, os, logging, sequtils
import edit_routine_dialog
import "../models/routine", "../shared"
@@ -13,14 +13,9 @@ viewable RoutineList:
runStatus: string
selected: seq[RoutineId]
- # hey, hook.
hooks:
- # yes, you, the build hook.
build:
- # i love you. :)
- state.selected = selectedPreload()
-
- proc changed(state: bool)
+ state.selected = selectedPreload()
var thread: Thread[RoutineListState]
@@ -50,15 +45,15 @@ proc rsyncThread(list: RoutineListState) {.thread.} =
routineRuncount += 1
for source in routine.sources:
for destination in routine.destinations:
- #try without requiring superuser privs by default.
- #rsyncRunCmd = "rsync -aq " & source & " " & destination
+ #try without requiring superuser privs by default.
+ #rsyncRunCmd = "rsync -aq " & source & " " & destination
#quote sources and destinations to handle possible spaces.
rsyncRunCmd = "rsync -aq " & "'" & source & "'" & " " & "'" & destination & "'"
rsyncRun = execCmdEx(rsyncRunCmd)
if rsyncRun.exitCode != 0:
#handle permission denied error.
if rsyncRun.exitCode == 23:
- rsyncRun.exitCode = 0
+ rsyncRun.exitCode = 0
#rsyncRunCmd = "pkexec rsync -aq " & source & " " & destination
#quote sources and destinations to handle possible spaces.
rsyncRunCmd = "pkexec rsync -aq " & "'" & source & "'" & " " & "'" & destination & "'"
@@ -115,19 +110,16 @@ method view(list: RoutineListState): Widget =
orient = OrientX
margin = 6
spacing = 6
- Switch {.expand: false, vAlign: AlignCenter.}:
- state = routine.selByDef
+ Switch {.expand: false, vAlign: AlignCenter.}:
+ state = sequtils.any(list.selected, proc (id: RoutineId): bool = id == routine.id)
tooltip = "Enable/Disable this Routine for the current Bkup run."
proc changed(state: bool) =
if state == true:
- list.selected.add(routine.id)
+ list.selected.add(routine.id)
else:
let index = list.selected.find(routine.id)
if index != -1:
- list.selected.delete(index)
-
- if not list.changed.isNil:
- list.changed.callback(true)
+ list.selected.delete(index)
Label:
text = "" & routine.name & ""
xAlign = 0
@@ -145,13 +137,15 @@ method view(list: RoutineListState): Widget =
mode = EditRoutineUpdate
if res.kind == DialogAccept:
# The "Update" button was clicked
- list.routineModel.update(EditRoutineDialogState(state).routine)
+ list.routineModel.update(EditRoutineDialogState(state).routine)
+ list.selected = selectedPreload()
# Delete Button
Button {.expand: false.}:
icon = "user-trash-symbolic"
tooltip = "Delete this Routine. Warning: will not ask you to confirm."
proc clicked() =
list.routineModel.delete(routine.id)
+ list.selected = selectedPreload()
if routine.id in list.selected:
Box:
orient = OrientY