diff --git a/src/main/kotlin/app/ui/Menu.kt b/src/main/kotlin/app/ui/Menu.kt index 31a65e3..1729240 100644 --- a/src/main/kotlin/app/ui/Menu.kt +++ b/src/main/kotlin/app/ui/Menu.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.unit.sp import app.theme.primaryTextColor import app.viewmodels.MenuViewModel +// TODO Add tooltips to all the buttons @Composable fun Menu( menuViewModel: MenuViewModel, @@ -79,6 +80,12 @@ fun Menu( ) Spacer(modifier = Modifier.weight(1f)) + + IconMenuButton( + modifier = Modifier.padding(end = 8.dp), + icon = painterResource("source.svg"), + onClick = { menuViewModel.openFolderInFileExplorer() }, + ) } } @@ -124,3 +131,39 @@ fun MenuButton( } } +@Composable +fun IconMenuButton( + modifier: Modifier = Modifier, + enabled: Boolean = true, + icon: Painter, + onClick: () -> Unit +) { + val iconColor = if (enabled) { + MaterialTheme.colors.primary + } else { + MaterialTheme.colors.secondaryVariant + } + + OutlinedButton( + modifier = modifier + .padding(horizontal = 2.dp), + enabled = enabled, + onClick = onClick, + ) { + Row( + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + ) { + Image( + painter = icon, + contentDescription = null, + modifier = Modifier + .padding(horizontal = 4.dp) + .size(24.dp), + colorFilter = ColorFilter.tint(iconColor), + ) + } + + } +} + diff --git a/src/main/kotlin/app/viewmodels/MenuViewModel.kt b/src/main/kotlin/app/viewmodels/MenuViewModel.kt index bc94738..310a5be 100644 --- a/src/main/kotlin/app/viewmodels/MenuViewModel.kt +++ b/src/main/kotlin/app/viewmodels/MenuViewModel.kt @@ -4,6 +4,8 @@ import app.git.RefreshType import app.git.RemoteOperationsManager import app.git.StashManager import app.git.TabState +import java.awt.Desktop +import java.io.File import javax.inject.Inject class MenuViewModel @Inject constructor( @@ -38,4 +40,10 @@ class MenuViewModel @Inject constructor( return@safeProcessing RefreshType.UNCOMMITED_CHANGES } + + fun openFolderInFileExplorer() = tabState.runOperation { git -> + Desktop.getDesktop().open(git.repository.directory.parentFile) + + return@runOperation RefreshType.NONE + } } \ No newline at end of file diff --git a/src/main/resources/source.svg b/src/main/resources/source.svg new file mode 100644 index 0000000..160eae0 --- /dev/null +++ b/src/main/resources/source.svg @@ -0,0 +1 @@ + \ No newline at end of file