Added menu to enable/disable hosts on demand. github#13
This commit is contained in:
		
							parent
							
								
									f57955594b
								
							
						
					
					
						commit
						3689a251a8
					
				
					 1 changed files with 22 additions and 3 deletions
				
			
		
							
								
								
									
										25
									
								
								crussh.py
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								crussh.py
									
										
									
									
									
								
							|  | @ -133,6 +133,7 @@ class CruSSH: | |||
|     LayoutTable = gtk.Table() | ||||
|     EntryBox = gtk.Entry() | ||||
|     Clipboard = gtk.Clipboard() | ||||
|     ActiveHostsMenu = gtk.Menu() | ||||
| 
 | ||||
|     ### Methods ### | ||||
|     def reflowTable(self, cols=1, rows=1): | ||||
|  | @ -219,6 +220,19 @@ class CruSSH: | |||
|         EditItem = gtk.MenuItem(label="Edit") | ||||
|         EditMenu = gtk.Menu() | ||||
|         EditItem.set_submenu(EditMenu) | ||||
| 
 | ||||
|         def toggle_func(checkitem, host): | ||||
|             self.Terminals[host].copy_input = checkitem.get_active() | ||||
|         ActiveHostsItem = gtk.MenuItem(label="Active Hosts") | ||||
|         ActiveHostsItem.set_submenu(self.ActiveHostsMenu) | ||||
|         hosts = sorted(self.Terminals.keys(), reverse=True) | ||||
|         for host in hosts: | ||||
|             hostitem = gtk.CheckMenuItem(label=host) | ||||
|             hostitem.set_active(True) | ||||
|             hostitem.connect("toggled", toggle_func, host) | ||||
|             self.ActiveHostsMenu.append(hostitem) | ||||
| 
 | ||||
|         EditMenu.append(ActiveHostsItem) | ||||
|         PrefsItem = gtk.MenuItem(label="Preferences") | ||||
| 
 | ||||
|         def save_func(new_config): | ||||
|  | @ -251,18 +265,21 @@ class CruSSH: | |||
|         self.EntryBox.set_visibility(False) | ||||
|         self.EntryBox.set_invisible_char(' ') | ||||
| 
 | ||||
|         # forward key events to all terminals | ||||
|         # forward key events to all terminals with copy_input set | ||||
|         def feed_input(widget, event): | ||||
|             self.EntryBox.props.buffer.delete_text(0, -1) | ||||
|             # propagate to every terminal | ||||
|             for host in self.Terminals: | ||||
|                 t_event = event.copy() | ||||
|                 self.Terminals[host].event(t_event) | ||||
|                 if self.Terminals[host].copy_input: | ||||
|                     self.Terminals[host].event(t_event) | ||||
|             # this stops regular handler from firing, switching focus. | ||||
|             return True | ||||
| 
 | ||||
|         def feed_paste(widget): | ||||
|             for host in self.Terminals: | ||||
|                 self.Terminals[host].feed_child(self.Clipboard.wait_for_text()) | ||||
|                 if self.Terminals[host].copy_input: | ||||
|                     self.Terminals[host].feed_child(self.Clipboard.wait_for_text()) | ||||
|             self.EntryBox.props.buffer.delete_text(0, -1) | ||||
| 
 | ||||
|         self.EntryBox.connect("key_press_event", feed_input) | ||||
|  | @ -296,6 +313,8 @@ class CruSSH: | |||
|             cmd_str += " " + host | ||||
|             cmd = cmd_str.split(' ') | ||||
|             terminal.fork_command(command=cmd[0], argv=cmd) | ||||
|             # track whether we mirror output to this terminal | ||||
|             terminal.copy_input = True | ||||
|             self.Terminals[host] = terminal | ||||
| 
 | ||||
|             # hook terminals so they reflow layout on exit | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue