feat: outputs displayed (i hate compose this framework is not ready at all)

This commit is contained in:
aro 2022-11-27 18:02:21 +01:00
parent b77de56091
commit 3008a2a5ef
7 changed files with 46 additions and 51 deletions

View file

@ -1,6 +1,5 @@
package xyz.atnrch.wrench.components package xyz.atnrch.wrench.components
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
@ -19,7 +18,6 @@ fun WatcherDisplay(
watcherManager: WatcherManager watcherManager: WatcherManager
) { ) {
var currentClick by remember { mutableStateOf(-1) } var currentClick by remember { mutableStateOf(-1) }
val interactionSource = remember { MutableInteractionSource() }
Row { Row {
if (watcherManager.getEntries().isEmpty()) { if (watcherManager.getEntries().isEmpty()) {
@ -31,7 +29,7 @@ fun WatcherDisplay(
Text("Add a file to start...") Text("Add a file to start...")
} }
} else { } else {
InputEntries(watcherManager, interactionSource) { currentClick = it } InputEntries(watcherManager) { currentClick = it }
OutputEntries(watcherManager, currentClick) OutputEntries(watcherManager, currentClick)
} }
} }

View file

@ -11,8 +11,8 @@ import xyz.atnrch.wrench.watcher.WatcherManager
@Composable @Composable
fun WrenchScaffold() { fun WrenchScaffold() {
val entries: MutableMap<Int, WatcherEntry> = remember { mutableStateMapOf() } val entries: MutableMap<Int, WatcherEntry> = remember { mutableStateMapOf() }
val watcher = remember { Watcher(entries) }
val watcherManager = remember { WatcherManager(entries) } val watcherManager = remember { WatcherManager(entries) }
val watcher = remember { Watcher(watcherManager) }
var buttonState by remember { mutableStateOf(false) } var buttonState by remember { mutableStateOf(false) }
Scaffold( Scaffold(

View file

@ -1,6 +1,5 @@
package xyz.atnrch.wrench.components.center package xyz.atnrch.wrench.components.center
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import xyz.atnrch.wrench.registery.RegisterComposable import xyz.atnrch.wrench.registery.RegisterComposable
import xyz.atnrch.wrench.watcher.WatcherEntry import xyz.atnrch.wrench.watcher.WatcherEntry
@ -10,7 +9,6 @@ import java.io.File
@Composable @Composable
fun DummyTextEntry( fun DummyTextEntry(
watcherManager: WatcherManager, watcherManager: WatcherManager,
interactionSource: MutableInteractionSource,
onEntrySelected: (id: Int) -> Unit onEntrySelected: (id: Int) -> Unit
) { ) {
val id = 0 val id = 0
@ -19,8 +17,7 @@ fun DummyTextEntry(
id, id,
WatcherEntry(File("/home/aro/IdeaProjects/Wrench/dummy"), arrayListOf()), WatcherEntry(File("/home/aro/IdeaProjects/Wrench/dummy"), arrayListOf()),
watcherManager, watcherManager,
onEntrySelected, onEntrySelected
interactionSource
) )
} }
} }

View file

@ -2,7 +2,6 @@ package xyz.atnrch.wrench.components.center
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.PointerMatcher import androidx.compose.foundation.PointerMatcher
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.onClick import androidx.compose.foundation.onClick
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.* import androidx.compose.runtime.*
@ -25,13 +24,12 @@ fun WatcherTextEntry(
id: Int, id: Int,
entry: WatcherEntry, entry: WatcherEntry,
watcherManager: WatcherManager, watcherManager: WatcherManager,
onEntrySelected: (id: Int) -> Unit, onEntrySelected: (id: Int) -> Unit
interactionSource: MutableInteractionSource,
) { ) {
var dialogState by remember { mutableStateOf(false) } var dialogState by remember { mutableStateOf(false) }
Text( Text(
text = "${entry.file.absolutePath}", text = entry.file.absolutePath,
style = TextStyle( style = TextStyle(
color = if(ACTIVE_COMPOSABLE == id) Color.Red else Color.Black, color = if(ACTIVE_COMPOSABLE == id) Color.Red else Color.Black,
fontSize = TextUnit(15F, TextUnitType.Sp), fontSize = TextUnit(15F, TextUnitType.Sp),
@ -40,7 +38,6 @@ fun WatcherTextEntry(
modifier = Modifier modifier = Modifier
.onClick( .onClick(
matcher = PointerMatcher.mouse(PointerButton.Primary), matcher = PointerMatcher.mouse(PointerButton.Primary),
interactionSource = interactionSource,
onClick = { onClick = {
println("Active composable ID was $ACTIVE_COMPOSABLE") println("Active composable ID was $ACTIVE_COMPOSABLE")
ACTIVE_COMPOSABLE = id ACTIVE_COMPOSABLE = id

View file

@ -2,7 +2,6 @@ package xyz.atnrch.wrench.components.center.input
import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -17,7 +16,6 @@ import xyz.atnrch.wrench.watcher.WatcherManager
@Composable @Composable
fun InputEntries( fun InputEntries(
watcherManager: WatcherManager, watcherManager: WatcherManager,
interactionSource: MutableInteractionSource,
onEntryClick: (id: Int) -> Unit onEntryClick: (id: Int) -> Unit
) { ) {
Box( Box(
@ -38,8 +36,7 @@ fun InputEntries(
it.key, it.key,
it.value, it.value,
watcherManager, watcherManager,
onEntryClick, onEntryClick
interactionSource
) )
} }
} }

View file

@ -9,6 +9,8 @@ import androidx.compose.material.Text
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PostAdd import androidx.compose.material.icons.filled.PostAdd
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@ -19,6 +21,7 @@ import xyz.atnrch.wrench.logger.Logger
import xyz.atnrch.wrench.ui.UIColors import xyz.atnrch.wrench.ui.UIColors
import xyz.atnrch.wrench.watcher.WatcherEntry import xyz.atnrch.wrench.watcher.WatcherEntry
import xyz.atnrch.wrench.watcher.WatcherManager import xyz.atnrch.wrench.watcher.WatcherManager
import java.nio.file.Path
import kotlin.io.path.pathString import kotlin.io.path.pathString
@Composable @Composable
@ -26,6 +29,8 @@ fun OutputEntries(
watcherManager: WatcherManager, watcherManager: WatcherManager,
currentSelectedInputId: Int currentSelectedInputId: Int
) { ) {
val outputs: MutableList<Path> = remember { mutableStateListOf() }
Box( Box(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
modifier = Modifier modifier = Modifier
@ -40,7 +45,9 @@ fun OutputEntries(
) { ) {
val entry: WatcherEntry? = watcherManager.getFromId(currentSelectedInputId) val entry: WatcherEntry? = watcherManager.getFromId(currentSelectedInputId)
if (entry != null) { if (entry != null) {
if (entry.map.isEmpty()) { outputs.clear()
outputs.addAll(entry.map)
Box( Box(
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
@ -48,19 +55,20 @@ fun OutputEntries(
verticalArrangement = Arrangement.SpaceEvenly, verticalArrangement = Arrangement.SpaceEvenly,
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
if (entry.map.isEmpty()) { if (outputs.isEmpty()) {
Text("No output") Text("No outputs.")
} else { } else {
entry.map.forEach { outputs.forEach {
Text(it.pathString) Text(it.pathString)
} }
} }
Spacer(Modifier.height(28.dp)) Spacer(Modifier.height(24.dp))
Button( Button(
onClick = { onClick = {
showDirectoryPicker({ showDirectoryPicker({
Logger.info("Path: ${it.absolutePath}") Logger.info("Path: ${it.absolutePath}")
entry.map.add(it.toPath()) entry.map.add(it.toPath())
outputs.add(it.toPath())
}, { }, {
Logger.info("No file selected.") Logger.info("No file selected.")
}) })
@ -79,4 +87,3 @@ fun OutputEntries(
} }
} }
} }
}

View file

@ -6,7 +6,7 @@ import xyz.atnrch.wrench.logger.Logger
import java.nio.file.Files import java.nio.file.Files
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
class Watcher(private val entries: MutableMap<Int, WatcherEntry>) { class Watcher(private val watcherManager: WatcherManager) {
companion object { companion object {
var WATCHING = false var WATCHING = false
} }
@ -21,8 +21,7 @@ class Watcher(private val entries: MutableMap<Int, WatcherEntry>) {
Logger.info("Started Watcher.") Logger.info("Started Watcher.")
while (WATCHING) { while (WATCHING) {
delay(TimeUnit.SECONDS.toMillis(5)) delay(TimeUnit.SECONDS.toMillis(5))
val manager = WatcherManager(entries) for (entry: WatcherEntry in watcherManager.getEntries().values) {
for (entry: WatcherEntry in manager.getEntries().values) {
entry.map.forEach { entry.map.forEach {
Files.copy(entry.file.toPath(), it.toAbsolutePath()) Files.copy(entry.file.toPath(), it.toAbsolutePath())
} }