[geany/geany-plugins] d92fd5: MultiTerm: Implement the other config VTE properties

Matthew Brush git-noreply at xxxxx
Tue Apr 9 02:53:48 UTC 2013


Branch:      refs/heads/master
Author:      Matthew Brush <matt at geany.org>
Committer:   Matthew Brush <matt at geany.org>
Date:        Tue, 09 Apr 2013 02:53:48 UTC
Commit:      d92fd537426ea466032e254db7cb227027b602af
             https://github.com/geany/geany-plugins/commit/d92fd537426ea466032e254db7cb227027b602af

Log Message:
-----------
MultiTerm: Implement the other config VTE properties

There was a bunch of VTE properties that were documented in the config
file comments but I never got around to implementing them. The current
implementation needs some re-factoring now since there's a lot of
duplicated code and it could be greatly simplified.

Also remove comments about unimplemented cwd-tracking feature.


Modified Paths:
--------------
    multiterm/src/defconf.vala
    multiterm/src/shell-config.vala
    multiterm/src/terminal.vala

Modified: multiterm/src/defconf.vala
21 files changed, 8 insertions(+), 13 deletions(-)
===================================================================
@@ -102,14 +102,6 @@ command=
 # Make the tab's label track the VTE title
 track_title=true
 
-# Save and restore the current working directory each close/open
-track_cwd=true
-
-# Stores the CWD to change to on loading, blank for no change dir.
-# If track_cwd is set to true, this value will be automatically updated
-# otherwise this same value will be changed to each load.
-terminal_cwd=
-
 # Background color, foreground color and font for the VTE
 bg_color=#ffffff
 fg_color=#000000
@@ -130,17 +122,20 @@ font=Monospace 9
 #cursor_shape=block
 
 # Controls how erasing characters is handled, one of:
-#   auto, ascii_backspace, ascii_delete, delete_sequences, tty
+#   auto, ascii_backspace, ascii_delete, delete_sequence, tty
 #backspace_binding=auto
 
 # Whether to hide the mouse pointer on key press if it's in the
-# terminal window pointer_autohide=false
+# terminal window
+#pointer_autohide=false
 
 # Scroll to the prompt at the bottom of the scrollback buffer on key
-# press scroll_on_keystroke=true
+# press
+#scroll_on_keystroke=true
 
 # Scroll to the bottom of the scrollback buffer when the child sends
-# output scroll_on_output=false
+# output
+#scroll_on_output=false
 
 # The number of lines to keep in the scrollback buffer
 #scrollback_lines=512
@@ -155,7 +150,7 @@ font=Monospace 9
 # the word-chars characters as parts of words, and all other
 # characters as word separators. Ranges of characters can be
 # specified by separating them with a hyphen.
-#word_chars=
+word_chars=-A-Za-z0-9,./\\?%&#:_
 
 
 #=======================================================================


Modified: multiterm/src/shell-config.vala
226 files changed, 226 insertions(+), 0 deletions(-)
===================================================================
@@ -19,6 +19,8 @@
  * MA 02110-1301, USA.
  */
 
+using Vte;
+
 namespace MultiTerm
 {
 	public class ShellConfig
@@ -121,5 +123,229 @@ namespace MultiTerm
 				cfg.store_eventually();
 			}
 		}
+
+		public bool allow_bold
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "allow_bold"); }
+				catch (KeyFileError err) { return true; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "allow_bold", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public bool audible_bell
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "audible_bell"); }
+				catch (KeyFileError err) { return true; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "audible_bell", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public TerminalCursorBlinkMode cursor_blink_mode
+		{
+			get
+			{
+				try
+				{
+					string blink_mode = kf.get_string(_section, "cursor_blink_mode").down();
+					if (blink_mode == "on" || blink_mode == "true")
+						return TerminalCursorBlinkMode.ON;
+					else if (blink_mode == "off" || blink_mode == "false")
+						return TerminalCursorBlinkMode.OFF;
+					else
+						return TerminalCursorBlinkMode.SYSTEM;
+				}
+				catch (KeyFileError err) { return TerminalCursorBlinkMode.SYSTEM; }
+			}
+			set
+			{
+				switch (value)
+				{
+					case TerminalCursorBlinkMode.ON:
+						kf.set_string(_section, "cursor_blink_mode", "on");
+						break;
+					case TerminalCursorBlinkMode.OFF:
+						kf.set_string(_section, "cursor_blink_mode", "off");
+						break;
+					default:
+						kf.set_string(_section, "cursor_blink_mode", "system");
+						break;
+				}
+				cfg.store_eventually();
+			}
+		}
+
+		public TerminalCursorShape cursor_shape
+		{
+			get
+			{
+				try
+				{
+					string shape = kf.get_string(_section, "cursor_shape").down();
+					if (shape == "ibeam")
+						return TerminalCursorShape.IBEAM;
+					else if (shape == "underline")
+						return TerminalCursorShape.UNDERLINE;
+					else
+						return TerminalCursorShape.BLOCK;
+				}
+				catch (KeyFileError err) { return TerminalCursorShape.BLOCK; }
+			}
+			set
+			{
+				switch (value)
+				{
+					case TerminalCursorShape.IBEAM:
+						kf.set_string(_section, "cursor_shape", "ibeam");
+						break;
+					case TerminalCursorShape.UNDERLINE:
+						kf.set_string(_section, "cursor_shape", "underline");
+						break;
+					default:
+						kf.set_string(_section, "cursor_shape", "block");
+						break;
+				}
+				cfg.store_eventually();
+			}
+		}
+
+		public TerminalEraseBinding backspace_binding
+		{
+			get
+			{
+				try
+				{
+					string binding = kf.get_string(_section, "backspace_binding").down();
+					if (binding == "ascii_backspace")
+						return TerminalEraseBinding.ASCII_BACKSPACE;
+					else if (binding == "ascii_delete")
+						return TerminalEraseBinding.ASCII_DELETE;
+					else if (binding == "delete_sequence")
+						return TerminalEraseBinding.DELETE_SEQUENCE;
+					else if (binding == "tty")
+						return TerminalEraseBinding.TTY;
+					else
+						return TerminalEraseBinding.AUTO;
+				}
+				catch (KeyFileError err) { return TerminalEraseBinding.AUTO; }
+			}
+			set
+			{
+				switch (value)
+				{
+					case TerminalEraseBinding.ASCII_BACKSPACE:
+						kf.set_string(_section, "backspace_binding", "ascii_backspace");
+						break;
+					case TerminalEraseBinding.ASCII_DELETE:
+						kf.set_string(_section, "backspace_binding", "ascii_delete");
+						break;
+					case TerminalEraseBinding.DELETE_SEQUENCE:
+						kf.set_string(_section, "backspace_binding", "delete_sequence");
+						break;
+					case TerminalEraseBinding.TTY:
+						kf.set_string(_section, "backspace_binding", "tty");
+						break;
+					default:
+						kf.set_string(_section, "backspace_binding", "auto");
+						break;
+				}
+				cfg.store_eventually();
+			}
+		}
+
+		public bool pointer_autohide
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "pointer_autohide"); }
+				catch (KeyFileError err) { return false; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "pointer_autohide", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public bool scroll_on_keystroke
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "scroll_on_keystroke"); }
+				catch (KeyFileError err) { return true; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "scroll_on_keystroke", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public bool scroll_on_output
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "scroll_on_output"); }
+				catch (KeyFileError err) { return false; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "scroll_on_output", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public int scrollback_lines
+		{
+			get
+			{
+				try { return kf.get_integer(_section, "scrollback_lines"); }
+				catch (KeyFileError err) { return 512; }
+			}
+			set
+			{
+				kf.set_integer(_section, "scrollback_lines", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public bool visible_bell
+		{
+			get
+			{
+				try { return kf.get_boolean(_section, "visible_bell"); }
+				catch (KeyFileError err) { return false; }
+			}
+			set
+			{
+				kf.set_boolean(_section, "visible_bell", value);
+				cfg.store_eventually();
+			}
+		}
+
+		public string word_chars
+		{
+			owned get
+			{
+				try { return kf.get_string(_section, "word_chars"); }
+				catch (KeyFileError err) { return ""; }
+			}
+			set
+			{
+				kf.set_string(_section, "word_chars", value);
+				cfg.store_eventually();
+			}
+		}
 	}
 }


Modified: multiterm/src/terminal.vala
28 files changed, 27 insertions(+), 1 deletions(-)
===================================================================
@@ -130,7 +130,7 @@ namespace MultiTerm
 			HBox hbox;
 
 			this.sh = sh;
-            if (this.sh.command.strip() == "")
+			if (this.sh.command.strip() == "")
 				this.sh.command = "sh";
 
 			terminal = new Vte.Terminal();
@@ -151,9 +151,35 @@ namespace MultiTerm
 			terminal.child_exited.connect(on_child_exited);
 
 			if (this.sh.cfg != null)
+			{
 				terminal.set_font_from_string(this.sh.font);
+				terminal.set_allow_bold(this.sh.allow_bold);
+				terminal.set_audible_bell(this.sh.audible_bell);
+				terminal.set_cursor_blink_mode(this.sh.cursor_blink_mode);
+				terminal.set_cursor_shape(this.sh.cursor_shape);
+				terminal.set_backspace_binding(this.sh.backspace_binding);
+				terminal.set_mouse_autohide(this.sh.pointer_autohide);
+				terminal.set_scroll_on_keystroke(this.sh.scroll_on_keystroke);
+				terminal.set_scroll_on_output(this.sh.scroll_on_output);
+				terminal.set_scrollback_lines(this.sh.scrollback_lines);
+				terminal.set_visible_bell(this.sh.visible_bell);
+				terminal.set_word_chars(this.sh.word_chars);
+			}
 			else
+			{
 				terminal.set_font_from_string("Monospace 9");
+				terminal.set_allow_bold(true);
+				terminal.set_audible_bell(true);
+				terminal.set_cursor_blink_mode(TerminalCursorBlinkMode.SYSTEM);
+				terminal.set_cursor_shape(TerminalCursorShape.BLOCK);
+				terminal.set_backspace_binding(TerminalEraseBinding.AUTO);
+				terminal.set_mouse_autohide(false);
+				terminal.set_scroll_on_keystroke(true);
+				terminal.set_scroll_on_output(false);
+				terminal.set_scrollback_lines(512);
+				terminal.set_visible_bell(false);
+				terminal.set_word_chars("");
+			}
 
 			terminal.realize.connect(on_vte_realize); /* colors can only be set on realize (lame) */
 			run_command(this.sh.command);



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list