1 // $Id: display.h,v 1.23 2012/02/29 00:29:58 ewalkup Exp $ 2 3 /* 4 Copyright 2002 Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein 5 6 This software is distributed free of charge for non-commercial use 7 and is copyrighted. Of course, we do not guarantee that the software 8 works, and are not responsible for any damage you may cause or have. 9 */ 10 11 #ifndef DISPLAY_H 12 #define DISPLAY_H 13 14 #include <string> 15 #include <vector> 16 17 #include "menudefs.h" // for menu_return_type 18 #include "vectorx.h" 19 20 class Dialog; 21 class NewMenu; 22 class MenuDisplayQuantaVec; 23 class MenuDisplayGroup; 24 class ToggleMenuItem2dGroup; 25 class MenuDisplayLine; 26 class MenuDisplayTable; 27 28 class Display 29 { 30 public: Display()31 Display() {}; ~Display()32 virtual ~Display() {}; 33 virtual menu_return_type DisplayNewMenu(NewMenu&) = 0; 34 virtual menu_return_type DisplayRaw(StringVec1d) = 0; 35 // 36 virtual void ShowMenuDisplayGroup(MenuDisplayGroup&) = 0; 37 virtual void ShowMenuDisplay2dGroup(ToggleMenuItem2dGroup&) = 0; 38 virtual void ShowMenuDisplayLine(MenuDisplayLine&) = 0; 39 virtual void ShowMenuDisplayTable(MenuDisplayTable&) = 0; 40 // 41 virtual void DisplayDialogOutput(std::string) = 0; 42 virtual std::string GetUserInput() = 0; 43 }; 44 45 class ScrollingDisplay : public Display 46 { 47 protected: 48 void ShowMenuDisplayQuantaVec(MenuDisplayQuantaVec); 49 void Prompt(); 50 void Title(const std::string & title, const std::string & info); 51 void DisplayOneLine(std::string); 52 void ShowOneMenuLine(std::string,std::string,std::string); 53 void ShowExtraMenuLines(std::vector<string> storedMenuText, std::vector<string> generatedMenuText); 54 std::vector<std::string> BreakAtCarriageReturns(std::string); 55 std::vector<std::string> MakeDisplayableUnits(std::string, long int width); 56 void ChideOnInconsistencies(StringVec1d inconsistencies); 57 public: 58 ScrollingDisplay(); 59 ~ScrollingDisplay(); 60 // 61 virtual menu_return_type DisplayNewMenu(NewMenu&); 62 virtual menu_return_type DisplayRaw(StringVec1d); 63 // 64 virtual void ShowMenuDisplayGroup(MenuDisplayGroup&); 65 virtual void ShowMenuDisplay2dGroup(ToggleMenuItem2dGroup&); 66 virtual void ShowMenuDisplayLine(MenuDisplayLine&); 67 virtual void ShowMenuDisplayTable(MenuDisplayTable&); 68 // 69 virtual void DisplayDialogOutput(std::string); 70 virtual std::string GetUserInput(); 71 // 72 void Warn(std::vector<std::string> warnings); 73 }; 74 75 class NoDisplay : public Display 76 { 77 public: 78 NoDisplay() ; 79 ~NoDisplay(); 80 virtual menu_return_type DisplayNewMenu(NewMenu&); 81 virtual menu_return_type DisplayRaw(StringVec1d); 82 // 83 virtual void ShowMenuDisplayGroup(MenuDisplayGroup&); 84 virtual void ShowMenuDisplay2dGroup(ToggleMenuItem2dGroup&); 85 virtual void ShowMenuDisplayLine(MenuDisplayLine&); 86 virtual void ShowMenuDisplayTable(MenuDisplayTable&); 87 // 88 virtual void DisplayDialogOutput(std::string); 89 virtual std::string GetUserInput(); 90 }; 91 92 #endif // DISPLAY_H 93 94 //____________________________________________________________________________________ 95