@ -10,6 +10,7 @@
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# include  "df/viewscreen_tradegoodsst.h" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# include  "df/viewscreen_unitlistst.h" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# include  "df/interface_key.h" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				# include  "df/interfacest.h" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				using  std : : set ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				using  std : : vector ; 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -19,6 +20,7 @@ using namespace DFHack;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				using  namespace  df : : enums ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				using  df : : global : : gps ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				using  df : : global : : gview ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				/*
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Search  Plugin 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -39,6 +41,14 @@ void OutputString(int8_t color, int &x, int y, const std::string &text)
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    x  + =  text . length ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				static  bool  is_live_screen ( const  df : : viewscreen  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				{ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    for  ( df : : viewscreen  * cur  =  & gview - > view ;  cur ;  cur  =  cur - > child ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( cur  = =  screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// START: Base Search functionality
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//
 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -60,6 +70,15 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        track_secondary_values  =  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool  reset_on_change ( ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( valid  & &  is_live_screen ( viewscreen ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        reset_all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    // A new keystroke is received in a searchable screen
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  bool  process_input ( set < df : : interface_key >  * input ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -245,6 +264,9 @@ protected:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                update_secondary_values ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                * sort_list2  =  saved_list2 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            saved_list1 . clear ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            saved_list2 . clear ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        store_reference_values ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        search_string  =  " " ; 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -346,7 +368,12 @@ struct search_hook : T
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    DEFINE_VMETHOD_INTERPOSE ( void ,  feed ,  ( set < df : : interface_key >  * input ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        module . init ( this ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! module . init ( this ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            INTERPOSE_NEXT ( feed ) ( input ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! module . process_input ( input ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            INTERPOSE_NEXT ( feed ) ( input ) ; 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -357,9 +384,10 @@ struct search_hook : T
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    DEFINE_VMETHOD_INTERPOSE ( void ,  render ,  ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        module . init ( this ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        bool  ok  =  module . init ( this ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        INTERPOSE_NEXT ( render ) ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        module . render ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ok ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            module . render ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -382,10 +410,10 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  void  render ( )  const 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! viewscreen - > in_group_mode ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            print_search_option ( 1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            print_search_option ( 2 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        else 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            int  x  =  1 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            int  x  =  2 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            OutputString ( 15 ,  x ,  gps - > dimy  -  2 ,  " Tab to enable Search " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -402,13 +430,18 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            search_parent : : do_post_update_check ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  void   init ( df : : viewscreen_storesst  * screen )   
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool   init ( df : : viewscreen_storesst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( screen  ! =  viewscreen  & &  ! reset_on_change ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! valid ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            viewscreen  =  screen ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            search_parent : : init ( & screen - > item_cursor ,  & screen - > items ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -461,21 +494,25 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        print_search_option ( 28 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  void   init ( df : : viewscreen_unitlistst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool   init ( df : : viewscreen_unitlistst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( screen  ! =  viewscreen  & &  ! reset_on_change ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! valid ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            viewscreen  =  screen ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            search_parent : : init ( & screen - > cursor_pos [ viewscreen - > page ] ,  & screen - > units [ viewscreen - > page ] ,  & screen - > jobs [ viewscreen - > page ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				private : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  string  get_element_description ( df : : unit  * element )  const 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        string  desc  =  Translation : : TranslateName ( Units : : getVisibleName ( element ) ,  false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( viewscreen - > page  = =  1 ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            desc  + =  Units : : getProfessionName ( element ) ;  // Check animal type too
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        desc  + =  " ,  "  +  Units : : getProfessionName ( element ) ;  // Check animal type too
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  desc ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -529,6 +566,29 @@ private:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  Items : : getDescription ( element ,  0 ,  true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  bool  should_check_input ( set < df : : interface_key >  * input ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( is_entry_mode ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( input - > count ( interface_key : : TRADE_TRADE )  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            input - > count ( interface_key : : TRADE_OFFER )  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            input - > count ( interface_key : : TRADE_SEIZE ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            // Block the keys if were searching
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            if  ( ! search_string . empty ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                input - > clear ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            // Trying to trade, reset search
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            clear_search ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            reset_all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -540,14 +600,19 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        print_search_option ( 2 ,  26 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  void   init ( df : : viewscreen_tradegoodsst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool   init ( df : : viewscreen_tradegoodsst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( screen  ! =  viewscreen  & &  ! reset_on_change ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! valid ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            viewscreen  =  screen ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            search_parent : : init ( & screen - > trader_cursor ,  & screen - > trader_items ,  & screen - > trader_selected ,  ' q ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            track_secondary_values  =  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -564,14 +629,19 @@ public:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        print_search_option ( 42 ,  26 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    virtual  void   init ( df : : viewscreen_tradegoodsst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    bool   init ( df : : viewscreen_tradegoodsst  * screen ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( screen  ! =  viewscreen  & &  ! reset_on_change ( ) ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            return  false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        if  ( ! valid ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            viewscreen  =  screen ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            search_parent : : init ( & screen - > broker_cursor ,  & screen - > broker_items ,  & screen - > broker_selected ,  ' w ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				            track_secondary_values  =  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        return  true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
			
			 
			 
			
				@ -589,7 +659,7 @@ DFHACK_PLUGIN("search");
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				DFhackCExport  command_result  plugin_init  (  color_ostream  & out ,  vector  < PluginCommand >  & commands ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				{ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( ! gps  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    if  ( ! gps  | |  ! gview  | |  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ! INTERPOSE_HOOK ( unitlist_search_hook ,  feed ) . apply ( )  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ! INTERPOSE_HOOK ( unitlist_search_hook ,  render ) . apply ( )  | | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        ! INTERPOSE_HOOK ( trade_search_merc_hook ,  feed ) . apply ( )  | | 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -620,10 +690,10 @@ DFhackCExport command_result plugin_onstatechange ( color_ostream &out, state_ch
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				{ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    switch  ( event )  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    case  SC_VIEWSCREEN_CHANGED : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        unitlist_search_hook : : module . reset_ all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        trade_search_merc_hook : : module . reset_ all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        trade_search_fort_hook : : module . reset_ all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        stocks_search_hook : : module . reset_ all ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        unitlist_search_hook : : module . reset_ on_change ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        trade_search_merc_hook : : module . reset_ on_change ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        trade_search_fort_hook : : module . reset_ on_change ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        stocks_search_hook : : module . reset_ on_change ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				        break ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				    default :