feat: minmode
This commit is contained in:
parent
50b52ecf58
commit
9908cb01ce
11 changed files with 167 additions and 72 deletions
|
@ -33,9 +33,13 @@ compose.desktop {
|
||||||
application {
|
application {
|
||||||
mainClass = "xyz.atnrch.wrench.WrenchApp"
|
mainClass = "xyz.atnrch.wrench.WrenchApp"
|
||||||
nativeDistributions {
|
nativeDistributions {
|
||||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.AppImage)
|
targetFormats(TargetFormat.AppImage)
|
||||||
packageName = "Wrench"
|
packageName = "Wrench"
|
||||||
packageVersion = "1.0.0"
|
packageVersion = "1.0.0"
|
||||||
|
linux {
|
||||||
|
packageName = "Wrench"
|
||||||
|
//iconFile.set(project.file(""))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,10 @@
|
||||||
package xyz.atnrch.wrench
|
package xyz.atnrch.wrench
|
||||||
|
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.ui.window.singleWindowApplication
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.Window
|
||||||
|
import androidx.compose.ui.window.application
|
||||||
|
import androidx.compose.ui.window.rememberWindowState
|
||||||
import xyz.atnrch.wrench.components.WrenchScaffold
|
import xyz.atnrch.wrench.components.WrenchScaffold
|
||||||
import xyz.atnrch.wrench.logger.Logger
|
import xyz.atnrch.wrench.logger.Logger
|
||||||
import javax.swing.UIManager
|
import javax.swing.UIManager
|
||||||
|
@ -11,10 +14,16 @@ class WrenchApp {
|
||||||
const val PREFIX: String = "(Wrench)"
|
const val PREFIX: String = "(Wrench)"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun main(args: Array<String>) = singleWindowApplication {
|
fun main(args: Array<String>) = application {
|
||||||
|
val state = rememberWindowState(width = 1000.dp, height = 1024.dp)
|
||||||
|
Window(
|
||||||
|
state = state,
|
||||||
|
onCloseRequest = ::exitApplication
|
||||||
|
) {
|
||||||
Logger.info("Starting Wrench...")
|
Logger.info("Starting Wrench...")
|
||||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
|
||||||
MaterialTheme { WrenchScaffold() }
|
MaterialTheme { WrenchScaffold(state) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,33 +1,61 @@
|
||||||
package xyz.atnrch.wrench.components
|
package xyz.atnrch.wrench.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.components.center.empty.DefaultDisplay
|
import xyz.atnrch.wrench.components.center.empty.DefaultDisplay
|
||||||
import xyz.atnrch.wrench.components.center.input.InputEntries
|
import xyz.atnrch.wrench.components.center.input.InputEntries
|
||||||
import xyz.atnrch.wrench.components.center.output.OutputEntries
|
import xyz.atnrch.wrench.components.center.output.OutputEntries
|
||||||
import xyz.atnrch.wrench.watcher.WatcherManager
|
import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun WatcherDisplay(
|
fun WatcherDisplay(
|
||||||
|
state: WindowState,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
currentClick: Int,
|
currentClick: Int,
|
||||||
outputs: MutableList<Path>,
|
outputs: MutableList<Path>,
|
||||||
onEntryClick: (id: Int) -> Unit
|
onEntryClick: (id: Int) -> Unit
|
||||||
) {
|
) {
|
||||||
|
if (state.size.width <= 600.dp) {
|
||||||
Row(
|
Column(
|
||||||
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 55.dp)
|
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 55.dp),
|
||||||
|
verticalArrangement = Arrangement.Top,
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
if (watcherManager.getEntries().isEmpty()) {
|
displayEntries(true, watcherManager, currentClick, outputs, onEntryClick)
|
||||||
//watcherManager.addFile(File("/home/aro/IdeaProjects/Wrench/dummy"))
|
}
|
||||||
DefaultDisplay()
|
|
||||||
} else {
|
} else {
|
||||||
InputEntries(watcherManager, onEntryClick)
|
Row(
|
||||||
OutputEntries(watcherManager, currentClick, outputs)
|
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 55.dp),
|
||||||
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
horizontalArrangement = Arrangement.Center
|
||||||
|
) {
|
||||||
|
displayEntries(false, watcherManager, currentClick, outputs, onEntryClick)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun displayEntries(
|
||||||
|
minmode: Boolean,
|
||||||
|
watcherManager: WatcherManager,
|
||||||
|
currentClick: Int,
|
||||||
|
outputs: MutableList<Path>,
|
||||||
|
onEntryClick: (id: Int) -> Unit
|
||||||
|
) {
|
||||||
|
if (watcherManager.getEntries().isEmpty()) {
|
||||||
|
watcherManager.addFile(File("/home/aro/IdeaProjects/Wrench/dummy"))
|
||||||
|
DefaultDisplay()
|
||||||
|
} else {
|
||||||
|
InputEntries(minmode, watcherManager, onEntryClick)
|
||||||
|
OutputEntries(minmode, watcherManager, currentClick, outputs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import androidx.compose.material.Scaffold
|
||||||
import androidx.compose.material.ScaffoldState
|
import androidx.compose.material.ScaffoldState
|
||||||
import androidx.compose.material.rememberScaffoldState
|
import androidx.compose.material.rememberScaffoldState
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.components.bottom.BottomAppBar
|
import xyz.atnrch.wrench.components.bottom.BottomAppBar
|
||||||
import xyz.atnrch.wrench.components.bottom.FloatingButton
|
import xyz.atnrch.wrench.components.bottom.FloatingButton
|
||||||
import xyz.atnrch.wrench.components.top.TopBar
|
import xyz.atnrch.wrench.components.top.TopBar
|
||||||
|
@ -15,7 +16,7 @@ import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun WrenchScaffold() {
|
fun WrenchScaffold(state: WindowState) {
|
||||||
val scaffoldState: ScaffoldState = rememberScaffoldState()
|
val scaffoldState: ScaffoldState = rememberScaffoldState()
|
||||||
val entries: MutableMap<Int, WatcherEntry> = remember { mutableStateMapOf() }
|
val entries: MutableMap<Int, WatcherEntry> = remember { mutableStateMapOf() }
|
||||||
val outputs: MutableList<Path> = remember { mutableStateListOf() }
|
val outputs: MutableList<Path> = remember { mutableStateListOf() }
|
||||||
|
@ -30,6 +31,6 @@ fun WrenchScaffold() {
|
||||||
floatingActionButton = { FloatingButton(watcherManager) },
|
floatingActionButton = { FloatingButton(watcherManager) },
|
||||||
isFloatingActionButtonDocked = true,
|
isFloatingActionButtonDocked = true,
|
||||||
backgroundColor = UIColors.PRIMARY,
|
backgroundColor = UIColors.PRIMARY,
|
||||||
bottomBar = { BottomAppBar(watcherManager, watcher, currentClick, outputs) { currentClick = it } }
|
bottomBar = { BottomAppBar(state, watcherManager, watcher, currentClick, outputs) { currentClick = it } }
|
||||||
) { WatcherDisplay(watcherManager, currentClick, outputs) { currentClick = it } }
|
) { WatcherDisplay(state, watcherManager, currentClick, outputs) { currentClick = it } }
|
||||||
}
|
}
|
|
@ -13,9 +13,11 @@ import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.NoteAdd
|
import androidx.compose.material.icons.filled.NoteAdd
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.scale
|
||||||
import androidx.compose.ui.draw.shadow
|
import androidx.compose.ui.draw.shadow
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.components.center.showDirectoryPicker
|
import xyz.atnrch.wrench.components.center.showDirectoryPicker
|
||||||
import xyz.atnrch.wrench.logger.Logger
|
import xyz.atnrch.wrench.logger.Logger
|
||||||
import xyz.atnrch.wrench.ui.UIColors
|
import xyz.atnrch.wrench.ui.UIColors
|
||||||
|
@ -25,10 +27,13 @@ import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AddOutputButton(
|
fun AddOutputButton(
|
||||||
|
state: WindowState,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
outputs: MutableList<Path>,
|
outputs: MutableList<Path>,
|
||||||
currentClick: Int
|
currentClick: Int
|
||||||
) {
|
) {
|
||||||
|
val scaleFactor: Float = if (state.size.width <= 600.dp) 0.85f else 1f
|
||||||
|
|
||||||
Button(
|
Button(
|
||||||
onClick =
|
onClick =
|
||||||
{
|
{
|
||||||
|
@ -50,7 +55,7 @@ fun AddOutputButton(
|
||||||
),
|
),
|
||||||
shape = RoundedCornerShape(100),
|
shape = RoundedCornerShape(100),
|
||||||
border = BorderStroke(2.dp, UIColors.ORANGE),
|
border = BorderStroke(2.dp, UIColors.ORANGE),
|
||||||
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false)
|
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false).scale(scaleFactor)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.NoteAdd,
|
Icons.Filled.NoteAdd,
|
||||||
|
|
|
@ -3,6 +3,7 @@ package xyz.atnrch.wrench.components.bottom
|
||||||
import androidx.compose.foundation.shape.CornerSize
|
import androidx.compose.foundation.shape.CornerSize
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.ui.UIColors
|
import xyz.atnrch.wrench.ui.UIColors
|
||||||
import xyz.atnrch.wrench.watcher.Watcher
|
import xyz.atnrch.wrench.watcher.Watcher
|
||||||
import xyz.atnrch.wrench.watcher.WatcherManager
|
import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
|
@ -10,6 +11,7 @@ import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BottomAppBar(
|
fun BottomAppBar(
|
||||||
|
state: WindowState,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
watcher: Watcher,
|
watcher: Watcher,
|
||||||
currentClick: Int,
|
currentClick: Int,
|
||||||
|
@ -21,5 +23,5 @@ fun BottomAppBar(
|
||||||
CornerSize(percent = 50)
|
CornerSize(percent = 50)
|
||||||
),
|
),
|
||||||
backgroundColor = UIColors.DARK
|
backgroundColor = UIColors.DARK
|
||||||
) { BottomRowNew(watcherManager, watcher, currentClick, outputs, onCurrentClick) }
|
) { BottomRowNew(state, watcherManager, watcher, currentClick, outputs, onCurrentClick) }
|
||||||
}
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package xyz.atnrch.wrench.components.bottom
|
||||||
|
|
||||||
|
import androidx.compose.foundation.BorderStroke
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
|
import androidx.compose.material.Button
|
||||||
|
import androidx.compose.material.ButtonDefaults
|
||||||
|
import androidx.compose.material.Icon
|
||||||
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.filled.Update
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.scale
|
||||||
|
import androidx.compose.ui.draw.shadow
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
|
import xyz.atnrch.wrench.ui.UIColors
|
||||||
|
import xyz.atnrch.wrench.watcher.Watcher
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun MoveFilesButton(
|
||||||
|
state: WindowState,
|
||||||
|
watcher: Watcher
|
||||||
|
) {
|
||||||
|
val scaleFactor: Float = if (state.size.width <= 600.dp) 0.85f else 1f
|
||||||
|
|
||||||
|
Button(
|
||||||
|
onClick = { watcher.move() },
|
||||||
|
colors = ButtonDefaults.buttonColors(UIColors.DARK, Color.White),
|
||||||
|
contentPadding = PaddingValues(
|
||||||
|
start = 14.dp,
|
||||||
|
top = 6.dp,
|
||||||
|
end = 14.dp,
|
||||||
|
bottom = 6.dp
|
||||||
|
),
|
||||||
|
shape = RoundedCornerShape(100),
|
||||||
|
border = BorderStroke(2.dp, UIColors.GREEN),
|
||||||
|
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false).scale(scaleFactor)
|
||||||
|
) {
|
||||||
|
Icon(
|
||||||
|
Icons.Filled.Update,
|
||||||
|
tint = UIColors.GREEN,
|
||||||
|
contentDescription = "Start",
|
||||||
|
modifier = Modifier.size(22.dp)
|
||||||
|
)
|
||||||
|
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
|
||||||
|
Text("Move files")
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,26 +13,29 @@ import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Delete
|
import androidx.compose.material.icons.filled.Delete
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.scale
|
||||||
import androidx.compose.ui.draw.shadow
|
import androidx.compose.ui.draw.shadow
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.registery.ACTIVE_COMPOSABLE
|
import xyz.atnrch.wrench.registery.ACTIVE_COMPOSABLE
|
||||||
import xyz.atnrch.wrench.ui.UIColors
|
import xyz.atnrch.wrench.ui.UIColors
|
||||||
import xyz.atnrch.wrench.watcher.WatcherEntry
|
|
||||||
import xyz.atnrch.wrench.watcher.WatcherManager
|
import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RemoveOutputButton(
|
fun RemoveOutputButton(
|
||||||
|
state: WindowState,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
outputs: MutableList<Path>,
|
outputs: MutableList<Path>,
|
||||||
currentClick: Int,
|
currentClick: Int,
|
||||||
onCurrentClick: (Int) -> Unit
|
onCurrentClick: (Int) -> Unit
|
||||||
) {
|
) {
|
||||||
|
val scaleFactor: Float = if (state.size.width <= 600.dp) 0.85f else 1f
|
||||||
|
|
||||||
Button(
|
Button(
|
||||||
onClick =
|
onClick =
|
||||||
{
|
{
|
||||||
val entry: WatcherEntry? = watcherManager.getFromId(currentClick)
|
|
||||||
watcherManager.removeFile(currentClick)
|
watcherManager.removeFile(currentClick)
|
||||||
outputs.clear()
|
outputs.clear()
|
||||||
ACTIVE_COMPOSABLE = -1
|
ACTIVE_COMPOSABLE = -1
|
||||||
|
@ -47,7 +50,7 @@ fun RemoveOutputButton(
|
||||||
),
|
),
|
||||||
shape = RoundedCornerShape(100),
|
shape = RoundedCornerShape(100),
|
||||||
border = BorderStroke(2.dp, UIColors.STRESS),
|
border = BorderStroke(2.dp, UIColors.STRESS),
|
||||||
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false)
|
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false).scale(scaleFactor)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Filled.Delete,
|
Icons.Filled.Delete,
|
||||||
|
|
|
@ -1,62 +1,32 @@
|
||||||
package xyz.atnrch.wrench.components.bottom
|
package xyz.atnrch.wrench.components.bottom
|
||||||
|
|
||||||
import androidx.compose.foundation.BorderStroke
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.size
|
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
||||||
import androidx.compose.material.Button
|
|
||||||
import androidx.compose.material.ButtonDefaults
|
|
||||||
import androidx.compose.material.Icon
|
|
||||||
import androidx.compose.material.Text
|
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.Update
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.shadow
|
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import xyz.atnrch.wrench.ui.UIColors
|
import androidx.compose.ui.window.WindowState
|
||||||
import xyz.atnrch.wrench.watcher.Watcher
|
import xyz.atnrch.wrench.watcher.Watcher
|
||||||
import xyz.atnrch.wrench.watcher.WatcherManager
|
import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BottomRowNew(
|
fun BottomRowNew(
|
||||||
|
state: WindowState,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
watcher: Watcher,
|
watcher: Watcher,
|
||||||
currentClick: Int,
|
currentClick: Int,
|
||||||
outputs: MutableList<Path>,
|
outputs: MutableList<Path>,
|
||||||
onCurrentClick: (Int) -> Unit,
|
onCurrentClick: (Int) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
val buttonWidth = if (state.size.width <= 600.dp) 0.dp else 10.dp
|
||||||
|
|
||||||
Spacer(Modifier.width(10.dp))
|
Spacer(Modifier.width(10.dp))
|
||||||
Button(
|
MoveFilesButton(state, watcher)
|
||||||
onClick = { watcher.move() },
|
|
||||||
colors = ButtonDefaults.buttonColors(UIColors.DARK, Color.White),
|
|
||||||
contentPadding = PaddingValues(
|
|
||||||
start = 14.dp,
|
|
||||||
top = 6.dp,
|
|
||||||
end = 14.dp,
|
|
||||||
bottom = 6.dp
|
|
||||||
),
|
|
||||||
shape = RoundedCornerShape(100),
|
|
||||||
border = BorderStroke(2.dp, UIColors.GREEN),
|
|
||||||
modifier = Modifier.shadow(24.dp, RoundedCornerShape(100), false)
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
Icons.Filled.Update,
|
|
||||||
tint = UIColors.GREEN,
|
|
||||||
contentDescription = "Start",
|
|
||||||
modifier = Modifier.size(22.dp)
|
|
||||||
)
|
|
||||||
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
|
|
||||||
Text("Move files")
|
|
||||||
}
|
|
||||||
if (currentClick != -1) {
|
if (currentClick != -1) {
|
||||||
Spacer(Modifier.width(10.dp))
|
Spacer(Modifier.width(buttonWidth))
|
||||||
AddOutputButton(watcherManager, outputs, currentClick)
|
AddOutputButton(state, watcherManager, outputs, currentClick)
|
||||||
Spacer(Modifier.width(10.dp))
|
Spacer(Modifier.width(buttonWidth))
|
||||||
RemoveOutputButton(watcherManager, outputs, currentClick, onCurrentClick)
|
RemoveOutputButton(state, watcherManager, outputs, currentClick, onCurrentClick)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,19 +16,13 @@ import xyz.atnrch.wrench.watcher.WatcherManager
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun InputEntries(
|
fun InputEntries(
|
||||||
|
minmode: Boolean,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
onEntryClick: (id: Int) -> Unit
|
onEntryClick: (id: Int) -> Unit
|
||||||
) {
|
) {
|
||||||
Box(
|
Box(
|
||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
modifier = Modifier
|
modifier = getModifier(minmode, onEntryClick)
|
||||||
.fillMaxHeight()
|
|
||||||
.fillMaxWidth(0.5f)
|
|
||||||
.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
|
|
||||||
.clickable {
|
|
||||||
ACTIVE_COMPOSABLE = -1
|
|
||||||
onEntryClick.invoke(-1)
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
InputTopText()
|
InputTopText()
|
||||||
Column(
|
Column(
|
||||||
|
@ -46,3 +40,28 @@ fun InputEntries(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun getModifier(
|
||||||
|
minmode: Boolean,
|
||||||
|
onEntryClick: (id: Int) -> Unit
|
||||||
|
): Modifier {
|
||||||
|
return if (minmode)
|
||||||
|
Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.fillMaxHeight(0.5f)
|
||||||
|
.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
|
||||||
|
.clickable {
|
||||||
|
ACTIVE_COMPOSABLE = -1
|
||||||
|
onEntryClick.invoke(-1)
|
||||||
|
} else {
|
||||||
|
Modifier
|
||||||
|
.fillMaxHeight()
|
||||||
|
.fillMaxWidth(0.5f)
|
||||||
|
.border(BorderStroke(4.dp, UIColors.ORANGE), RectangleShape)
|
||||||
|
.clickable {
|
||||||
|
ACTIVE_COMPOSABLE = -1
|
||||||
|
onEntryClick.invoke(-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import kotlin.io.path.pathString
|
||||||
@OptIn(ExperimentalUnitApi::class)
|
@OptIn(ExperimentalUnitApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun OutputEntries(
|
fun OutputEntries(
|
||||||
|
minmode: Boolean,
|
||||||
watcherManager: WatcherManager,
|
watcherManager: WatcherManager,
|
||||||
currentClick: Int,
|
currentClick: Int,
|
||||||
outputs: MutableList<Path>
|
outputs: MutableList<Path>
|
||||||
|
|
Reference in a new issue