Преглед на файлове

Added FullRowSelect property

tznind преди 4 години
родител
ревизия
31bdec4535
променени са 2 файла, в които са добавени 20 реда и са изтрити 3 реда
  1. 12 3
      Terminal.Gui/Views/TableView.cs
  2. 8 0
      UICatalog/Scenarios/TableEditor.cs

+ 12 - 3
Terminal.Gui/Views/TableView.cs

@@ -147,6 +147,11 @@ namespace Terminal.Gui {
 		/// </summary>
 		/// </summary>
 		public TableStyle Style { get => style; set {style = value; Update(); } }
 		public TableStyle Style { get => style; set {style = value; Update(); } }
 						
 						
+		/// <summary>
+		/// True to select the entire row at once.  False to select individual cells.  Defaults to false
+		/// </summary>
+		public bool FullRowSelect {get;set;}
+
 		/// <summary>
 		/// <summary>
 		/// Horizontal scroll offset.  The index of the first column in <see cref="Table"/> to display when when rendering the view.
 		/// Horizontal scroll offset.  The index of the first column in <see cref="Table"/> to display when when rendering the view.
 		/// </summary>
 		/// </summary>
@@ -446,7 +451,9 @@ namespace Terminal.Gui {
 				Move (current.X, row);
 				Move (current.X, row);
 
 
 				// Set color scheme based on whether the current cell is the selected one
 				// Set color scheme based on whether the current cell is the selected one
-				bool isSelectedCell = rowToRender == SelectedRow && current.Column.Ordinal == SelectedColumn;
+				bool isSelectedCell = rowToRender == SelectedRow && 
+					(current.Column.Ordinal == SelectedColumn || FullRowSelect);
+
 				Driver.SetAttribute (isSelectedCell ? ColorScheme.HotFocus : ColorScheme.Normal);
 				Driver.SetAttribute (isSelectedCell ? ColorScheme.HotFocus : ColorScheme.Normal);
 
 
 				var val = Table.Rows [rowToRender][current.Column];
 				var val = Table.Rows [rowToRender][current.Column];
@@ -456,8 +463,10 @@ namespace Terminal.Gui {
 				
 				
 				Driver.AddStr (TruncateOrPad(val,representation,availableWidthForCell,colStyle));
 				Driver.AddStr (TruncateOrPad(val,representation,availableWidthForCell,colStyle));
 				
 				
-				// Reset color scheme to normal and render the vertical line (or space) at the end of the cell
-				Driver.SetAttribute (ColorScheme.Normal);
+				// If not in full row select mode always, reset color scheme to normal and render the vertical line (or space) at the end of the cell
+				if(!FullRowSelect)
+					Driver.SetAttribute (ColorScheme.Normal);
+
 				RenderSeparator(current.X-1,row,false);
 				RenderSeparator(current.X-1,row,false);
 			}
 			}
 
 

+ 8 - 0
UICatalog/Scenarios/TableEditor.cs

@@ -20,6 +20,7 @@ namespace UICatalog.Scenarios {
 		private MenuItem miHeaderMidline;
 		private MenuItem miHeaderMidline;
 		private MenuItem miHeaderUnderline;
 		private MenuItem miHeaderUnderline;
 		private MenuItem miCellLines;
 		private MenuItem miCellLines;
+		private MenuItem miFullRowSelect;
 
 
 		public override void Setup ()
 		public override void Setup ()
 		{
 		{
@@ -47,6 +48,7 @@ namespace UICatalog.Scenarios {
 					miHeaderOverline = new MenuItem ("_HeaderOverLine", "", () => ToggleOverline()){Checked = tableView.Style.ShowHorizontalHeaderOverline, CheckType = MenuItemCheckStyle.Checked },
 					miHeaderOverline = new MenuItem ("_HeaderOverLine", "", () => ToggleOverline()){Checked = tableView.Style.ShowHorizontalHeaderOverline, CheckType = MenuItemCheckStyle.Checked },
 					miHeaderMidline = new MenuItem ("_HeaderMidLine", "", () => ToggleHeaderMidline()){Checked = tableView.Style.ShowVerticalHeaderLines, CheckType = MenuItemCheckStyle.Checked },
 					miHeaderMidline = new MenuItem ("_HeaderMidLine", "", () => ToggleHeaderMidline()){Checked = tableView.Style.ShowVerticalHeaderLines, CheckType = MenuItemCheckStyle.Checked },
 					miHeaderUnderline =new MenuItem ("_HeaderUnderLine", "", () => ToggleUnderline()){Checked = tableView.Style.ShowHorizontalHeaderUnderline, CheckType = MenuItemCheckStyle.Checked },
 					miHeaderUnderline =new MenuItem ("_HeaderUnderLine", "", () => ToggleUnderline()){Checked = tableView.Style.ShowHorizontalHeaderUnderline, CheckType = MenuItemCheckStyle.Checked },
+					miFullRowSelect =new MenuItem ("_FullRowSelect", "", () => ToggleFullRowSelect()){Checked = tableView.FullRowSelect, CheckType = MenuItemCheckStyle.Checked },
 					miCellLines =new MenuItem ("_CellLines", "", () => ToggleCellLines()){Checked = tableView.Style.ShowVerticalCellLines, CheckType = MenuItemCheckStyle.Checked },
 					miCellLines =new MenuItem ("_CellLines", "", () => ToggleCellLines()){Checked = tableView.Style.ShowVerticalCellLines, CheckType = MenuItemCheckStyle.Checked },
 					new MenuItem ("_AllLines", "", () => ToggleAllCellLines()),
 					new MenuItem ("_AllLines", "", () => ToggleAllCellLines()),
 					new MenuItem ("_NoLines", "", () => ToggleNoCellLines()),
 					new MenuItem ("_NoLines", "", () => ToggleNoCellLines()),
@@ -114,6 +116,12 @@ namespace UICatalog.Scenarios {
 			tableView.Style.ShowHorizontalHeaderUnderline = miHeaderUnderline.Checked;
 			tableView.Style.ShowHorizontalHeaderUnderline = miHeaderUnderline.Checked;
 			tableView.Update();
 			tableView.Update();
 		}
 		}
+		private void ToggleFullRowSelect ()
+		{
+			miFullRowSelect.Checked = !miFullRowSelect.Checked;
+			tableView.FullRowSelect= miFullRowSelect.Checked;
+			tableView.Update();
+		}
 		private void ToggleCellLines()
 		private void ToggleCellLines()
 		{
 		{
 			miCellLines.Checked = !miCellLines.Checked;
 			miCellLines.Checked = !miCellLines.Checked;