2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							@@ -24,6 +24,6 @@ require (
 | 
				
			|||||||
	gopkg.in/vansante/go-ffprobe.v2 v2.0.2
 | 
						gopkg.in/vansante/go-ffprobe.v2 v2.0.2
 | 
				
			||||||
	gopkg.in/yaml.v2 v2.3.0
 | 
						gopkg.in/yaml.v2 v2.3.0
 | 
				
			||||||
	maunium.net/go/mautrix v0.7.6
 | 
						maunium.net/go/mautrix v0.7.6
 | 
				
			||||||
	maunium.net/go/mauview v0.1.1
 | 
						maunium.net/go/mauview v0.1.2
 | 
				
			||||||
	maunium.net/go/tcell v0.2.0
 | 
						maunium.net/go/tcell v0.2.0
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							@@ -121,5 +121,7 @@ maunium.net/go/mautrix v0.7.6 h1:jB9oCimPq0mVyolwQBC/9N1fu21AU+Ryq837cLf4gOo=
 | 
				
			|||||||
maunium.net/go/mautrix v0.7.6/go.mod h1:Va/74MijqaS0DQ3aUqxmFO54/PMfr1LVsCOcGRHbYmo=
 | 
					maunium.net/go/mautrix v0.7.6/go.mod h1:Va/74MijqaS0DQ3aUqxmFO54/PMfr1LVsCOcGRHbYmo=
 | 
				
			||||||
maunium.net/go/mauview v0.1.1 h1:wfTXyPx3LGAGpTskh+UbBv/QItUWnEpaneHmywoYnfY=
 | 
					maunium.net/go/mauview v0.1.1 h1:wfTXyPx3LGAGpTskh+UbBv/QItUWnEpaneHmywoYnfY=
 | 
				
			||||||
maunium.net/go/mauview v0.1.1/go.mod h1:3QBUiuLct9moP1LgDhCGIg0Ovxn38Bd2sGndnUOuj4o=
 | 
					maunium.net/go/mauview v0.1.1/go.mod h1:3QBUiuLct9moP1LgDhCGIg0Ovxn38Bd2sGndnUOuj4o=
 | 
				
			||||||
 | 
					maunium.net/go/mauview v0.1.2 h1:6Y3GpyckIlzCNkry6k025YhWg8oh5XJFj3RAMf4VwWo=
 | 
				
			||||||
 | 
					maunium.net/go/mauview v0.1.2/go.mod h1:3QBUiuLct9moP1LgDhCGIg0Ovxn38Bd2sGndnUOuj4o=
 | 
				
			||||||
maunium.net/go/tcell v0.2.0 h1:1Q0kN3wCOGAIGu1r3QHADsjSUOPDylKREvCv3EzJpVg=
 | 
					maunium.net/go/tcell v0.2.0 h1:1Q0kN3wCOGAIGu1r3QHADsjSUOPDylKREvCv3EzJpVg=
 | 
				
			||||||
maunium.net/go/tcell v0.2.0/go.mod h1:9Apcb3lNNS6C6lCqKT9UFp7BTRzHXfWE+/tgufsAMho=
 | 
					maunium.net/go/tcell v0.2.0/go.mod h1:9Apcb3lNNS6C6lCqKT9UFp7BTRzHXfWE+/tgufsAMho=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -454,60 +454,8 @@ func cmdUnknownCommand(cmd *Command) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func cmdHelp(cmd *Command) {
 | 
					func cmdHelp(cmd *Command) {
 | 
				
			||||||
	cmd.Reply(`# General
 | 
						view := cmd.MainView
 | 
				
			||||||
/help           - Show this "temporary" help message.
 | 
						view.ShowModal(NewHelpModal(view))
 | 
				
			||||||
/quit           - Quit gomuks.
 | 
					 | 
				
			||||||
/clearcache     - Clear cache and quit gomuks.
 | 
					 | 
				
			||||||
/logout         - Log out of Matrix.
 | 
					 | 
				
			||||||
/toggle <thing> - Temporary command to toggle various UI features.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Things: rooms, users, baremessages, images, typingnotif, unverified
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Sending special messages
 | 
					 | 
				
			||||||
/me <message>        - Send an emote message.
 | 
					 | 
				
			||||||
/notice <message>    - Send a notice (generally used for bot messages).
 | 
					 | 
				
			||||||
/rainbow <message>   - Send rainbow text (markdown not supported).
 | 
					 | 
				
			||||||
/rainbowme <message> - Send rainbow text in an emote.
 | 
					 | 
				
			||||||
/reply [text]        - Reply to the selected message.
 | 
					 | 
				
			||||||
/react <reaction>    - React to the selected message.
 | 
					 | 
				
			||||||
/redact [reason]     - Redact the selected message.
 | 
					 | 
				
			||||||
/edit                - Edit the selected message.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Encryption
 | 
					 | 
				
			||||||
/fingerprint - View the fingerprint of your device.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/devices <user id>               - View the device list of a user.
 | 
					 | 
				
			||||||
/device <user id> <device id>    - Show info about a specific device.
 | 
					 | 
				
			||||||
/unverify <user id> <device id>  - Un-verify a device.
 | 
					 | 
				
			||||||
/blacklist <user id> <device id> - Blacklist a device.
 | 
					 | 
				
			||||||
/verify <user id> <device id> [fingerprint]
 | 
					 | 
				
			||||||
    - Verify a device. If the fingerprint is not provided,
 | 
					 | 
				
			||||||
      interactive emoji verification will be started.
 | 
					 | 
				
			||||||
/reset-session - Reset the outbound Megolm session in the current room.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/import <file> - Import encryption keys
 | 
					 | 
				
			||||||
/export <file> - Export encryption keys
 | 
					 | 
				
			||||||
/export-room <file> - Export encryption keys for the current room.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Rooms
 | 
					 | 
				
			||||||
/pm <user id> <...>   - Create a private chat with the given user(s).
 | 
					 | 
				
			||||||
/create [room name]   - Create a room.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/join <room> [server] - Join a room.
 | 
					 | 
				
			||||||
/accept               - Accept the invite.
 | 
					 | 
				
			||||||
/reject               - Reject the invite.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/invite <user id>     - Invite the given user to the room.
 | 
					 | 
				
			||||||
/roomnick <name>      - Change your per-room displayname.
 | 
					 | 
				
			||||||
/tag <tag> <priority> - Add the room to <tag>.
 | 
					 | 
				
			||||||
/untag <tag>          - Remove the room from <tag>.
 | 
					 | 
				
			||||||
/tags                 - List the tags the room is in.
 | 
					 | 
				
			||||||
/alias <act> <name>   - Add or remove local addresses.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/leave                     - Leave the current room.
 | 
					 | 
				
			||||||
/kick   <user id> [reason] - Kick a user.
 | 
					 | 
				
			||||||
/ban    <user id> [reason] - Ban a user.
 | 
					 | 
				
			||||||
/unban  <user id>          - Unban a user.`)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func cmdLeave(cmd *Command) {
 | 
					func cmdLeave(cmd *Command) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										106
									
								
								ui/help-modal.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								ui/help-modal.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					package ui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"maunium.net/go/tcell"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"maunium.net/go/gomuks/debug"
 | 
				
			||||||
 | 
						"maunium.net/go/mauview"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const helpText = `# General
 | 
				
			||||||
 | 
					/help           - Show this help dialog.
 | 
				
			||||||
 | 
					/quit           - Quit gomuks.
 | 
				
			||||||
 | 
					/clearcache     - Clear cache and quit gomuks.
 | 
				
			||||||
 | 
					/logout         - Log out of Matrix.
 | 
				
			||||||
 | 
					/toggle <thing> - Temporary command to toggle various UI features.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Sending special messages
 | 
				
			||||||
 | 
					/me <message>        - Send an emote message.
 | 
				
			||||||
 | 
					/notice <message>    - Send a notice (generally used for bot messages).
 | 
				
			||||||
 | 
					/rainbow <message>   - Send rainbow text.
 | 
				
			||||||
 | 
					/rainbowme <message> - Send rainbow text in an emote.
 | 
				
			||||||
 | 
					/reply [text]        - Reply to the selected message.
 | 
				
			||||||
 | 
					/react <reaction>    - React to the selected message.
 | 
				
			||||||
 | 
					/redact [reason]     - Redact the selected message.
 | 
				
			||||||
 | 
					/edit                - Edit the selected message.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Encryption
 | 
				
			||||||
 | 
					/fingerprint - View the fingerprint of your device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/devices <user id>               - View the device list of a user.
 | 
				
			||||||
 | 
					/device <user id> <device id>    - Show info about a specific device.
 | 
				
			||||||
 | 
					/unverify <user id> <device id>  - Un-verify a device.
 | 
				
			||||||
 | 
					/blacklist <user id> <device id> - Blacklist a device.
 | 
				
			||||||
 | 
					/verify <user id> <device id> [fingerprint]
 | 
				
			||||||
 | 
					    - Verify a device. If the fingerprint is not provided,
 | 
				
			||||||
 | 
					      interactive emoji verification will be started.
 | 
				
			||||||
 | 
					/reset-session - Reset the outbound Megolm session in the current room.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/import <file> - Import encryption keys
 | 
				
			||||||
 | 
					/export <file> - Export encryption keys
 | 
				
			||||||
 | 
					/export-room <file> - Export encryption keys for the current room.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Rooms
 | 
				
			||||||
 | 
					/pm <user id> <...>   - Create a private chat with the given user(s).
 | 
				
			||||||
 | 
					/create [room name]   - Create a room.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/join <room> [server] - Join a room.
 | 
				
			||||||
 | 
					/accept               - Accept the invite.
 | 
				
			||||||
 | 
					/reject               - Reject the invite.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/invite <user id>     - Invite the given user to the room.
 | 
				
			||||||
 | 
					/roomnick <name>      - Change your per-room displayname.
 | 
				
			||||||
 | 
					/tag <tag> <priority> - Add the room to <tag>.
 | 
				
			||||||
 | 
					/untag <tag>          - Remove the room from <tag>.
 | 
				
			||||||
 | 
					/tags                 - List the tags the room is in.
 | 
				
			||||||
 | 
					/alias <act> <name>   - Add or remove local addresses.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/leave                     - Leave the current room.
 | 
				
			||||||
 | 
					/kick   <user id> [reason] - Kick a user.
 | 
				
			||||||
 | 
					/ban    <user id> [reason] - Ban a user.
 | 
				
			||||||
 | 
					/unban  <user id>          - Unban a user.`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type HelpModal struct {
 | 
				
			||||||
 | 
						mauview.FocusableComponent
 | 
				
			||||||
 | 
						parent *MainView
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewHelpModal(parent *MainView) *HelpModal {
 | 
				
			||||||
 | 
						hm := &HelpModal{parent: parent}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						text := mauview.NewTextView().
 | 
				
			||||||
 | 
							SetText(helpText).
 | 
				
			||||||
 | 
							SetScrollable(true).
 | 
				
			||||||
 | 
							SetWrap(false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						box := mauview.NewBox(text).
 | 
				
			||||||
 | 
							SetBorder(true).
 | 
				
			||||||
 | 
							SetTitle("Help").
 | 
				
			||||||
 | 
							SetBlurCaptureFunc(func() bool {
 | 
				
			||||||
 | 
								hm.parent.HideModal()
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						box.Focus()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						hm.FocusableComponent = mauview.FractionalCenter(box, 42, 10, 0.5, 0.5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return hm
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (hm *HelpModal) Focus() {
 | 
				
			||||||
 | 
						debug.Print("focus")
 | 
				
			||||||
 | 
						hm.FocusableComponent.Focus()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (hm *HelpModal) Blur() {
 | 
				
			||||||
 | 
						debug.Print("blur")
 | 
				
			||||||
 | 
						hm.FocusableComponent.Blur()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (hm *HelpModal) OnKeyEvent(event mauview.KeyEvent) bool {
 | 
				
			||||||
 | 
						if event.Key() == tcell.KeyEscape || event.Rune() == 'q' {
 | 
				
			||||||
 | 
							hm.parent.HideModal()
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return hm.FocusableComponent.OnKeyEvent(event)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user