Add copy IP/MAC buttons
This commit is contained in:
parent
9305b1e0ef
commit
a86058f8bd
|
@ -0,0 +1,45 @@
|
||||||
|
package net.shadowfacts.phycon.screen
|
||||||
|
|
||||||
|
import net.minecraft.client.util.math.MatrixStack
|
||||||
|
import net.minecraft.util.Identifier
|
||||||
|
import net.shadowfacts.cacao.geometry.Point
|
||||||
|
import net.shadowfacts.cacao.geometry.Size
|
||||||
|
import net.shadowfacts.cacao.util.texture.Texture
|
||||||
|
import net.shadowfacts.cacao.view.TextureView
|
||||||
|
import net.shadowfacts.cacao.view.button.AbstractButton
|
||||||
|
import net.shadowfacts.phycon.PhysicalConnectivity
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shadowfacts
|
||||||
|
*/
|
||||||
|
class ClipboardButton(
|
||||||
|
handler: (ClipboardButton) -> Unit,
|
||||||
|
): AbstractButton<ClipboardButton>(
|
||||||
|
TextureView(DEFAULT)
|
||||||
|
) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val DEFAULT = Texture(Identifier(PhysicalConnectivity.MODID, "textures/gui/icons.png"), 16, 0)
|
||||||
|
private val HOVER = Texture(Identifier(PhysicalConnectivity.MODID, "textures/gui/icons.png"), 0, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
private val textureView: TextureView
|
||||||
|
get() = content as TextureView
|
||||||
|
|
||||||
|
init {
|
||||||
|
intrinsicContentSize = Size(9.0, 7.0)
|
||||||
|
content.intrinsicContentSize = Size(9.0, 7.0)
|
||||||
|
|
||||||
|
this.handler = handler
|
||||||
|
|
||||||
|
this.background = null
|
||||||
|
this.hoveredBackground = null
|
||||||
|
this.disabledBackground = null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun draw(matrixStack: MatrixStack, mouse: Point, delta: Float) {
|
||||||
|
textureView.texture = if (mouse in bounds) HOVER else DEFAULT
|
||||||
|
super.draw(matrixStack, mouse, delta)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,13 +1,16 @@
|
||||||
package net.shadowfacts.phycon.screen.console
|
package net.shadowfacts.phycon.screen.console
|
||||||
|
|
||||||
|
import net.minecraft.client.MinecraftClient
|
||||||
import net.minecraft.text.TranslatableText
|
import net.minecraft.text.TranslatableText
|
||||||
import net.shadowfacts.cacao.geometry.Axis
|
import net.shadowfacts.cacao.geometry.Axis
|
||||||
import net.shadowfacts.cacao.util.Color
|
import net.shadowfacts.cacao.util.Color
|
||||||
import net.shadowfacts.cacao.view.Label
|
import net.shadowfacts.cacao.view.Label
|
||||||
import net.shadowfacts.cacao.view.StackView
|
import net.shadowfacts.cacao.view.StackView
|
||||||
|
import net.shadowfacts.cacao.view.View
|
||||||
import net.shadowfacts.cacao.viewcontroller.ViewController
|
import net.shadowfacts.cacao.viewcontroller.ViewController
|
||||||
import net.shadowfacts.kiwidsl.dsl
|
import net.shadowfacts.kiwidsl.dsl
|
||||||
import net.shadowfacts.phycon.block.DeviceBlockEntity
|
import net.shadowfacts.phycon.block.DeviceBlockEntity
|
||||||
|
import net.shadowfacts.phycon.screen.ClipboardButton
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author shadowfacts
|
* @author shadowfacts
|
||||||
|
@ -30,14 +33,29 @@ class DeviceDetailsViewController(val device: DeviceBlockEntity): ViewController
|
||||||
textColor = Color.TEXT
|
textColor = Color.TEXT
|
||||||
}
|
}
|
||||||
stack.addArrangedSubview(ipLabel)
|
stack.addArrangedSubview(ipLabel)
|
||||||
|
val copyIP = ClipboardButton {
|
||||||
|
MinecraftClient.getInstance().keyboard.clipboard = device.ipAddress.toString()
|
||||||
|
}
|
||||||
|
view.addSubview(copyIP)
|
||||||
|
|
||||||
val macLabel = Label(TranslatableText("gui.phycon.console.details.mac", device.macAddress.toString())).apply {
|
val macLabel = Label(TranslatableText("gui.phycon.console.details.mac", device.macAddress.toString())).apply {
|
||||||
textColor = Color.TEXT
|
textColor = Color.TEXT
|
||||||
}
|
}
|
||||||
stack.addArrangedSubview(macLabel)
|
stack.addArrangedSubview(macLabel)
|
||||||
|
val copyMAC = ClipboardButton {
|
||||||
|
MinecraftClient.getInstance().keyboard.clipboard = device.macAddress.toString()
|
||||||
|
}
|
||||||
|
view.addSubview(copyMAC)
|
||||||
|
|
||||||
view.solver.dsl {
|
view.solver.dsl {
|
||||||
stack.leftAnchor equalTo view.leftAnchor
|
stack.leftAnchor equalTo view.leftAnchor
|
||||||
stack.topAnchor equalTo view.topAnchor
|
stack.topAnchor equalTo view.topAnchor
|
||||||
|
|
||||||
|
copyIP.leftAnchor equalTo (ipLabel.rightAnchor + 2)
|
||||||
|
copyIP.topAnchor equalTo ipLabel.topAnchor
|
||||||
|
|
||||||
|
copyMAC.leftAnchor equalTo (macLabel.rightAnchor + 2)
|
||||||
|
copyMAC.topAnchor equalTo macLabel.topAnchor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 894 B |
Loading…
Reference in New Issue