diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index 846ddb6..78f9ff2 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -37,6 +37,8 @@ kotlin { implementation(libs.ktor.server.core) implementation(libs.ktor.server.netty) implementation(libs.ktor.server.websockets) + // shell + implementation(libs.lordcodes.turttle) } commonTest.dependencies { diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index ef2543e..06d6a12 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -4,8 +4,10 @@ Annuler Créer une feuille de personnage - Configuration de la table + Ouvrir le dossier de sauvegarde Consulter l'historique des lancers + Configuration de la table + Jet de : Réussite si lancer inférieur ou égale à : %1$s diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/StorePath.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/StorePath.kt index ffd5f8b..e36ed75 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/StorePath.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/StorePath.kt @@ -1,6 +1,6 @@ package com.pixelized.desktop.lwa.repository -private fun operatingSystem( +fun operatingSystem( name: String = System.getProperty("os.name") ): OperatingSystem { return when { diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt index 8190424..80a1e05 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPage.kt @@ -30,6 +30,7 @@ import lwacharactersheet.composeapp.generated.resources.Res import lwacharactersheet.composeapp.generated.resources.character_sheet_edit__create__title import lwacharactersheet.composeapp.generated.resources.main_page__create_action import lwacharactersheet.composeapp.generated.resources.main_page__network_action +import lwacharactersheet.composeapp.generated.resources.main_page__open_save_directory import lwacharactersheet.composeapp.generated.resources.main_page__roll_history_action import org.jetbrains.compose.resources.getString import org.jetbrains.compose.resources.stringResource @@ -79,6 +80,9 @@ fun MainPage( onRollHistory = { screen.navigateToRollHistory() }, + onOpenSaveDirectory = { + viewModel.openSaveDirectory() + }, onNetwork = { screen.navigateToNetwork() }, @@ -94,6 +98,7 @@ fun MainPageContent( onCharacter: (CharacterUio) -> Unit, onCreateCharacter: () -> Unit, onRollHistory: () -> Unit, + onOpenSaveDirectory: () -> Unit, onNetwork: () -> Unit, ) { Column( @@ -128,6 +133,18 @@ fun MainPageContent( ) } + TextButton( + onClick = onOpenSaveDirectory, + ) { + Text( + modifier = Modifier.fillMaxWidth(), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.Start, + text = stringResource(Res.string.main_page__open_save_directory), + ) + } + Column { TextButton( onClick = onRollHistory, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt index db04142..23391e8 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/screen/main/MainPageViewModel.kt @@ -4,7 +4,11 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.Stable import androidx.compose.runtime.State import androidx.lifecycle.ViewModel +import com.lordcodes.turtle.shellRun +import com.pixelized.desktop.lwa.repository.OperatingSystem import com.pixelized.desktop.lwa.repository.characterSheet.CharacterSheetRepository +import com.pixelized.desktop.lwa.repository.operatingSystem +import com.pixelized.desktop.lwa.repository.storePath import com.pixelized.desktop.lwa.utils.extention.collectAsState class MainPageViewModel( @@ -23,4 +27,18 @@ class MainPageViewModel( ) } } + + fun openSaveDirectory() { + when (val os = operatingSystem()) { + OperatingSystem.Windows -> shellRun( + "explorer.exe", + listOf(storePath(operatingSystem = os)) + ) + + OperatingSystem.Macintosh -> shellRun( + "open", + listOf(storePath(operatingSystem = os)) + ) + } + } } \ No newline at end of file diff --git a/composeApp/src/desktopMain/kotlin/com/pixelized/desktop/lwa/main.kt b/composeApp/src/desktopMain/kotlin/com/pixelized/desktop/lwa/main.kt index d50661b..1d884f9 100644 --- a/composeApp/src/desktopMain/kotlin/com/pixelized/desktop/lwa/main.kt +++ b/composeApp/src/desktopMain/kotlin/com/pixelized/desktop/lwa/main.kt @@ -3,8 +3,10 @@ package com.pixelized.desktop.lwa import androidx.compose.ui.window.application import org.koin.compose.KoinContext import org.koin.core.context.startKoin +import javax.swing.UIManager fun main() { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) startKoin { modules(modules = moduleDependencies) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b2d98b1..55ad362 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,4 +34,6 @@ ktor-client-cio = { group = 'io.ktor', name = "ktor-client-cio", version.ref = " ktor-client-websockets = { group = 'io.ktor', name = "ktor-client-websockets", version.ref = "ktor_version" } ktor-server-core = { group = 'io.ktor', name = "ktor-server-core", version.ref = "ktor_version" } ktor-server-netty = { group = 'io.ktor', name = "ktor-server-netty", version.ref = "ktor_version" } -ktor-server-websockets = { group = 'io.ktor', name = "ktor-server-websockets", version.ref = "ktor_version" } \ No newline at end of file +ktor-server-websockets = { group = 'io.ktor', name = "ktor-server-websockets", version.ref = "ktor_version" } + +lordcodes-turttle = { group="com.lordcodes.turtle", name="turtle", version="0.5.0"} \ No newline at end of file diff --git a/lwa.zip b/lwa.zip deleted file mode 100644 index 71f8c42..0000000 Binary files a/lwa.zip and /dev/null differ diff --git a/output.zip b/output.zip new file mode 100644 index 0000000..3ba14d4 Binary files /dev/null and b/output.zip differ