diff --git a/build.gradle.kts b/build.gradle.kts index af4faa74..c1d0203c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,5 +6,6 @@ plugins { alias(libs.plugins.kotlinJvm) apply false alias(libs.plugins.kotlinMultiplatform) apply false alias(libs.plugins.kotlinSerialization) apply false + alias(libs.plugins.nucleus) apply false alias(libs.plugins.vanniktech.mavenPublish) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4733f209..e1f655f0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,6 +24,7 @@ kotlinx-datetime = "0.8.0" kotlinx-io = "0.9.1" leakcanaryAndroid = "2.14" material-icons-core = "1.7.3" +nucleus = "2.1.3" test-android-robolectric = "4.16.1" vanniktech-mavenPublish = "0.37.0" @@ -55,6 +56,8 @@ kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serializa kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanaryAndroid" } material-icons-core = { module = "org.jetbrains.compose.material:material-icons-core", version.ref = "material-icons-core" } +nucleus-application = { module = "dev.nucleusframework:nucleus.nucleus-application", version.ref = "nucleus" } +nucleus-decorated-window-tao = { module = "dev.nucleusframework:nucleus.decorated-window-tao", version.ref = "nucleus" } test-android-robolectric = { module = "org.robolectric:robolectric", version.ref = "test-android-robolectric" } # Compose @@ -81,6 +84,7 @@ composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose-mu kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +nucleus = { id = "dev.nucleusframework", version.ref = "nucleus" } vanniktech-mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech-mavenPublish" } # Plugins defined by this project diff --git a/sample/nucleusApp/build.gradle.kts b/sample/nucleusApp/build.gradle.kts new file mode 100644 index 00000000..bab4fc3a --- /dev/null +++ b/sample/nucleusApp/build.gradle.kts @@ -0,0 +1,33 @@ +import dev.nucleusframework.desktop.application.dsl.TargetFormat + +plugins { + alias(libs.plugins.kotlinJvm) + alias(libs.plugins.composeCompiler) + alias(libs.plugins.composeMultiplatform) + alias(libs.plugins.nucleus) +} + +nucleus.application { + mainClass = "io.github.vinceglb.filekit.sample.nucleus.MainKt" + + nativeDistributions { + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + packageName = "FileKit Nucleus Sample" + packageVersion = "1.0.0" + } +} + +dependencies { + // App module + implementation(projects.sample.shared) + + // Compose Desktop + implementation(compose.desktop.currentOs) + + // Nucleus + implementation(libs.nucleus.application) + implementation(libs.nucleus.decorated.window.tao) + + // FileKit + implementation(projects.filekitCore) +} diff --git a/sample/nucleusApp/src/main/kotlin/io/github/vinceglb/filekit/sample/nucleus/Main.kt b/sample/nucleusApp/src/main/kotlin/io/github/vinceglb/filekit/sample/nucleus/Main.kt new file mode 100644 index 00000000..73be04d3 --- /dev/null +++ b/sample/nucleusApp/src/main/kotlin/io/github/vinceglb/filekit/sample/nucleus/Main.kt @@ -0,0 +1,24 @@ +package io.github.vinceglb.filekit.sample.nucleus + +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.rememberWindowState +import dev.nucleusframework.application.DecoratedWindow +import dev.nucleusframework.application.NucleusBackend +import dev.nucleusframework.application.nucleusApplication +import io.github.vinceglb.filekit.FileKit +import io.github.vinceglb.filekit.sample.shared.App + +fun main() = nucleusApplication(backend = NucleusBackend.Tao) { + FileKit.init(appId = "io.github.vinceglb.filekit.sample.nucleus") + + val windowState = rememberWindowState(size = DpSize(width = 920.dp, height = 720.dp)) + + DecoratedWindow( + state = windowState, + title = "FileKit Nucleus Sample", + onCloseRequest = ::exitApplication, + ) { + App() + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 24bc76f3..674b983f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -42,6 +42,7 @@ include(":filekit-dialogs") include(":filekit-dialogs-compose") include(":sample:androidApp") include(":sample:desktopApp") +include(":sample:nucleusApp") include(":sample:shared") include(":sample:webApp") include(":sample:windowsNativeApp")