mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-24 04:52:47 +01:00
Add autosave
This commit is contained in:
parent
47dcd85561
commit
06722d9d66
@ -5,7 +5,7 @@ import java.nio.file.{Files, Path, StandardCopyOption}
|
||||
import java.util.Comparator
|
||||
import java.util.concurrent.locks.{Lock, ReentrantLock}
|
||||
|
||||
import javax.swing.JFileChooser
|
||||
import javax.swing.{JFileChooser, JOptionPane}
|
||||
import li.flor.nativejfilechooser.NativeJFileChooser
|
||||
import ocelot.desktop.ui.UiHandler
|
||||
import ocelot.desktop.ui.widget.RootWidget
|
||||
@ -130,7 +130,7 @@ object OcelotDesktop extends Logging {
|
||||
}
|
||||
|
||||
for (path <- oldFiles) {
|
||||
Files.move(oldPath.resolve(path.getFileName), newPath.resolve(path.getFileName), StandardCopyOption.REPLACE_EXISTING)
|
||||
Files.copy(oldPath.resolve(path.getFileName), newPath.resolve(path.getFileName), StandardCopyOption.REPLACE_EXISTING)
|
||||
}
|
||||
|
||||
workspace.path = newPath
|
||||
@ -179,6 +179,29 @@ object OcelotDesktop extends Logging {
|
||||
}).start()
|
||||
}
|
||||
|
||||
def exit(): Unit = {
|
||||
if (savePath.isDefined) {
|
||||
save()
|
||||
UiHandler.exit()
|
||||
return
|
||||
}
|
||||
|
||||
new Thread(() => {
|
||||
val dialogResult = JOptionPane.showConfirmDialog(null, "Save workspace before exiting?", "Warning", JOptionPane.YES_NO_OPTION)
|
||||
if (dialogResult == JOptionPane.YES_OPTION) {
|
||||
chooseDirectory(dir => {
|
||||
if (dir.isDefined) {
|
||||
savePath = dir.map(_.toPath)
|
||||
save()
|
||||
UiHandler.exit()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
UiHandler.exit()
|
||||
}
|
||||
}).start()
|
||||
}
|
||||
|
||||
var workspace: Workspace = _
|
||||
|
||||
private def createWorkspace(): Unit = {
|
||||
|
||||
@ -6,6 +6,7 @@ import java.nio.channels.Channels
|
||||
import java.nio.file.{Files, Paths}
|
||||
|
||||
import javax.imageio.ImageIO
|
||||
import ocelot.desktop.OcelotDesktop
|
||||
import ocelot.desktop.geometry.{Size2D, Vector2D}
|
||||
import ocelot.desktop.graphics.Graphics
|
||||
import ocelot.desktop.ui.event.MouseEvent
|
||||
@ -167,13 +168,19 @@ object UiHandler extends Logging {
|
||||
}
|
||||
|
||||
private var exitRequested = false
|
||||
private var exitHandlerCalled = false
|
||||
|
||||
def exit(): Unit = {
|
||||
exitRequested = true
|
||||
}
|
||||
|
||||
def start(): Unit = {
|
||||
while (!Display.isCloseRequested && !exitRequested) {
|
||||
while (!exitRequested) {
|
||||
if (!exitHandlerCalled && Display.isCloseRequested) {
|
||||
exitHandlerCalled = true
|
||||
OcelotDesktop.exit()
|
||||
}
|
||||
|
||||
Audio.update()
|
||||
|
||||
updateWindowSize()
|
||||
|
||||
@ -21,7 +21,7 @@ class MenuBar extends Widget {
|
||||
menu.addEntry(new ContextMenuEntry("Save", () => OcelotDesktop.save()))
|
||||
menu.addEntry(new ContextMenuEntry("Save as…", () => OcelotDesktop.saveAs()))
|
||||
menu.addSeparator()
|
||||
menu.addEntry(new ContextMenuEntry("Exit", () => UiHandler.exit()))
|
||||
menu.addEntry(new ContextMenuEntry("Exit", () => OcelotDesktop.exit()))
|
||||
}))
|
||||
|
||||
addEntry(new Widget {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user