mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-10 02:20:14 +08:00
Wrapper: update native window
This commit is contained in:
parent
eb1a15de76
commit
f6c508883f
@ -161,7 +161,6 @@ class MiraiDownloaderProgressBarInUI(): MiraiDownloadProgressBar{
|
||||
}
|
||||
|
||||
override fun complete() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,17 +7,16 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE")
|
||||
|
||||
package net.mamoe.mirai.console.wrapper
|
||||
|
||||
import kotlinx.coroutines.*
|
||||
import java.awt.Frame
|
||||
import java.awt.Panel
|
||||
import java.awt.TextArea
|
||||
import java.awt.Toolkit
|
||||
import java.io.File
|
||||
import java.lang.StringBuilder
|
||||
import java.net.URLClassLoader
|
||||
import java.util.*
|
||||
import javax.swing.JFrame
|
||||
import javax.swing.JPanel
|
||||
|
||||
|
||||
val contentPath by lazy {
|
||||
@ -31,8 +30,8 @@ val contentPath by lazy {
|
||||
object WrapperMain {
|
||||
internal var uiBarOutput = StringBuilder()
|
||||
private val uilog = StringBuilder()
|
||||
internal fun uiLog(any: Any?){
|
||||
if(any!=null) {
|
||||
internal fun uiLog(any: Any?) {
|
||||
if (any != null) {
|
||||
uilog.append(any)
|
||||
}
|
||||
}
|
||||
@ -40,33 +39,27 @@ object WrapperMain {
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
gc()
|
||||
if(args.contains("native") || args.contains("-native")){
|
||||
|
||||
val f = Frame("Mirai-Console Version Check")
|
||||
if (args.contains("native") || args.contains("-native")) {
|
||||
val f = JFrame("Mirai-Console Version Check")
|
||||
f.setSize(500, 200)
|
||||
f.setLocationRelativeTo(null)
|
||||
f.isResizable = false
|
||||
val srcSize= Toolkit.getDefaultToolkit().screenSize
|
||||
|
||||
val width = 300
|
||||
val height = 200
|
||||
|
||||
val p = Panel()
|
||||
val textArea = TextArea()
|
||||
textArea.isEditable = false
|
||||
p.add(textArea)
|
||||
p.isVisible = true
|
||||
|
||||
f.setLocation((srcSize.width-width)/2, (srcSize.height-height)/2)
|
||||
f.setSize(width, height)
|
||||
val p = JPanel()
|
||||
f.add(p)
|
||||
val textArea = TextArea()
|
||||
p.add(textArea)
|
||||
textArea.isEditable = false
|
||||
|
||||
f.isVisible = true
|
||||
|
||||
uiLog("正在进行版本检查\n")
|
||||
|
||||
var uiOpen = true
|
||||
GlobalScope.launch {
|
||||
while (isActive && uiOpen){
|
||||
while (isActive && uiOpen) {
|
||||
delay(16)//60 fps
|
||||
withContext(Dispatchers.Main){
|
||||
withContext(Dispatchers.Main) {
|
||||
textArea.text = uilog.toString() + "\n" + uiBarOutput.toString()
|
||||
}
|
||||
}
|
||||
@ -85,27 +78,27 @@ object WrapperMain {
|
||||
}
|
||||
start(CONSOLE_GRAPHICAL)
|
||||
|
||||
}else{
|
||||
} else {
|
||||
preStartInNonNative()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun preStartInNonNative(){
|
||||
private fun preStartInNonNative() {
|
||||
println("You are running Mirai-Console-Wrapper under " + System.getProperty("user.dir"))
|
||||
var type = WrapperProperties.determineConsoleType(WrapperProperties.content)
|
||||
if(type!=null){
|
||||
if (type != null) {
|
||||
println("Starting Mirai Console $type, reset by clear /content/")
|
||||
}else{
|
||||
} else {
|
||||
println("Please select Console Type")
|
||||
println("请选择 Console 版本")
|
||||
println("=> Pure : pure console")
|
||||
println("=> Graphical : graphical UI except unix")
|
||||
println("=> Terminal : [Not Supported Yet] console in unix")
|
||||
val scanner = Scanner(System.`in`)
|
||||
while (type == null){
|
||||
var input = scanner.next()
|
||||
input = input.toUpperCase()[0] + input.toLowerCase().substring(1)
|
||||
while (type == null) {
|
||||
var input = scanner.next()
|
||||
input = input.toUpperCase()[0] + input.toLowerCase().substring(1)
|
||||
println("Selecting $input")
|
||||
type = WrapperProperties.determineConsoleType(input)
|
||||
}
|
||||
@ -133,7 +126,7 @@ object WrapperMain {
|
||||
start(type)
|
||||
}
|
||||
|
||||
private fun start(type: String){
|
||||
private fun start(type: String) {
|
||||
val loader = MiraiClassLoader(
|
||||
CoreUpdater.getProtocolLib()!!,
|
||||
ConsoleUpdater.getFile()!!,
|
||||
@ -149,7 +142,7 @@ object WrapperMain {
|
||||
).getMethod("load", String::class.java, String::class.java)
|
||||
.invoke(null, CoreUpdater.getCurrentVersion(), ConsoleUpdater.getCurrentVersion())
|
||||
}
|
||||
CONSOLE_GRAPHICAL -> {
|
||||
CONSOLE_GRAPHICAL -> {
|
||||
loader.loadClass(
|
||||
"net.mamoe.mirai.console.graphical.MiraiConsoleGraphicalLoader"
|
||||
).getMethod("load", String::class.java, String::class.java)
|
||||
@ -160,21 +153,22 @@ object WrapperMain {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private class MiraiClassLoader(
|
||||
protocol: File,
|
||||
console: File,
|
||||
parent: ClassLoader?
|
||||
): URLClassLoader(arrayOf(
|
||||
protocol.toURI().toURL(),
|
||||
console.toURI().toURL()
|
||||
), parent)
|
||||
) : URLClassLoader(
|
||||
arrayOf(
|
||||
protocol.toURI().toURL(),
|
||||
console.toURI().toURL()
|
||||
), parent
|
||||
)
|
||||
|
||||
|
||||
private object WrapperProperties{
|
||||
val contentFile by lazy{
|
||||
private object WrapperProperties {
|
||||
val contentFile by lazy {
|
||||
File(contentPath.absolutePath + "/.wrapper.txt").also {
|
||||
if(!it.exists())it.createNewFile()
|
||||
if (!it.exists()) it.createNewFile()
|
||||
}
|
||||
}
|
||||
|
||||
@ -185,19 +179,19 @@ private object WrapperProperties{
|
||||
|
||||
fun determineConsoleType(
|
||||
type: String
|
||||
):String?{
|
||||
if(type == CONSOLE_PURE || type == CONSOLE_GRAPHICAL || type == CONSOLE_TERMINAL){
|
||||
): String? {
|
||||
if (type == CONSOLE_PURE || type == CONSOLE_GRAPHICAL || type == CONSOLE_TERMINAL) {
|
||||
return type
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private fun gc(){
|
||||
GlobalScope.launch{
|
||||
private fun gc() {
|
||||
GlobalScope.launch {
|
||||
while (true) {
|
||||
delay(1000*60*5)
|
||||
delay(1000 * 60 * 5)
|
||||
System.gc()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user