Added support for zenity dialogs in linux

This commit is contained in:
Abdelilah El Aissaoui 2021-10-30 19:06:03 +02:00
parent 1a67170b5b
commit 73659a2a10
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package app.extensions
import java.util.*
fun runCommand(command: String): String? {
return try {
var result: String?
Runtime.getRuntime().exec(command).inputStream.use { inputStream ->
Scanner(inputStream).useDelimiter("\\A").use { s ->
result = if (s.hasNext())
s.next()
else
null
}
}
result
} catch (ex: Exception) {
ex.printStackTrace()
null
}
}

View File

@ -1,10 +1,41 @@
import app.AppStateManager
import app.extensions.runCommand
import app.git.GitManager
import java.io.IOException
import java.util.*
import javax.swing.JFileChooser
fun openRepositoryDialog(gitManager: GitManager) {
val os = System.getProperty("os.name")
val appStateManager = gitManager.appStateManager
val latestDirectoryOpened = appStateManager.latestOpenedRepositoryPath
if(os.lowercase() == "linux") {
val checkZenityInstalled = runCommand("which zenity 2>/dev/null")
val isZenityInstalled = !checkZenityInstalled.isNullOrEmpty()
if(isZenityInstalled) {
val openDirectory = runCommand(
"zenity --file-selection --title=\"Select your git directory\" --directory --filename=\"$latestDirectoryOpened\""
)?.replace("\n", "")
if(!openDirectory.isNullOrEmpty())
gitManager.openRepository(openDirectory)
} else
openRepositoryDialog(gitManager, latestDirectoryOpened)
} else {
openRepositoryDialog(gitManager, latestDirectoryOpened)
}
}
private fun openRepositoryDialog(
gitManager: GitManager,
latestDirectoryOpened: String
) {
val fileChooser = if (latestDirectoryOpened.isEmpty())
JFileChooser()
else