« get me outta code hell

mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui.js')
-rw-r--r--ui.js44
1 files changed, 42 insertions, 2 deletions
diff --git a/ui.js b/ui.js
index c9e30e5..2777326 100644
--- a/ui.js
+++ b/ui.js
@@ -59,7 +59,7 @@ const {
 } = require('tui-lib')
 
 /* text editor features disabled because theyre very much incomplete and havent
- * gotten much use from me or anyonea afaik!
+ * gotten much use from me or anyone afaik!
 const TuiTextEditor = require('tui-text-editor')
 */
 
@@ -242,6 +242,12 @@ class AppElement extends FocusElement {
     })
     */
 
+    this.logPane = new Pane()
+    this.addChild(this.logPane)
+
+    this.log = new Log()
+    this.logPane.addChild(this.log)
+
     if (!this.config.showTabberPane) {
       this.tabberPane.visible = false
     }
@@ -430,7 +436,8 @@ class AppElement extends FocusElement {
       'handleProcessMetadataProgress',
       'handleQueueUpdated',
       'handleAddedQueuePlayer',
-      'handleRemovedQueuePlayer'
+      'handleRemovedQueuePlayer',
+      'handleLogMessage'
     ]) {
       this[key] = this[key].bind(this)
     }
@@ -501,12 +508,14 @@ class AppElement extends FocusElement {
     this.backend.on('processMetadata progress', this.handleProcessMetadataProgress)
     this.backend.on('added queue player', this.handleAddedQueuePlayer)
     this.backend.on('removed queue player', this.handleRemovedQueuePlayer)
+    this.backend.on('log message', this.handleLogMessage)
   }
 
   removeBackendListeners() {
     this.backend.removeListener('processMetadata progress', this.handleProcessMetadataProgress)
     this.backend.removeListener('added queue player', this.handleAddedQueuePlayer)
     this.backend.removeListener('removed queue player', this.handleRemovedQueuePlayer)
+    this.backend.removeListener('log message', this.handleLogMessage)
   }
 
   handleAddedQueuePlayer(queuePlayer) {
@@ -520,6 +529,10 @@ class AppElement extends FocusElement {
     }
   }
 
+  handleLogMessage(text) {
+    this.log.newLogMessage(text)
+  }
+
   async handlePlayingDetails(track, oldTrack, queuePlayer) {
     const PIE = this.getPlaybackInfoElementForQueuePlayer(queuePlayer)
     if (PIE) {
@@ -1247,10 +1260,21 @@ class AppElement extends FocusElement {
     }
     */
 
+    if (this.logPane.visible) {
+      this.logPane.w = leftWidth
+      this.logPane.h = 6
+      this.log.fillParent()
+      this.log.fixLayout()
+    }
+
     if (this.tabberPane.visible) {
       this.tabberPane.w = leftWidth
       this.tabberPane.y = bottomY
       this.tabberPane.h = topY - this.tabberPane.y
+      if (this.logPane.visible) {
+        this.tabberPane.h -= this.logPane.h
+        this.logPane.y = this.tabberPane.bottom
+      }
       /*
       if (this.textInfoPane.visible) {
         this.tabberPane.h -= this.textInfoPane.h
@@ -4366,4 +4390,20 @@ class NotesTextEditor extends TuiTextEditor {
 }
 */
 
+class Log extends ListScrollForm {
+  constructor() {
+    super('vertical')
+  }
+
+  newLogMessage(text) {
+    const logMessage = new LogMessage(text)
+    this.addInput(logMessage)
+    this.fixLayout()
+    this.scrollToEnd()
+    return logMessage
+  }
+}
+
+class LogMessage extends Button {}
+
 module.exports = AppElement