curseSplitOutput.hh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include <deque>
  3. #include "curseOutput.hh"
  4. class CurseSplitOutput: public CurseOutput
  5. {
  6. public:
  7. CurseSplitOutput(const Params &);
  8. virtual ~CurseSplitOutput();
  9. /**
  10. * Display data, and shutdown ncurses at the end
  11. **/
  12. void run(const std::deque<std::string> &, const std::deque<JSonElement *> &);
  13. void checkSelection(const JSonElement *item, const std::pair<int, int> &cursor);
  14. Optional<bool> evalKey(int k);
  15. bool redraw();
  16. bool redraw(std::pair<int, int> &, const std::pair<unsigned int, unsigned int> &, JSonElement *);
  17. bool writeContainer(std::pair<int, int> &, const std::pair<unsigned int, unsigned int> &, const JSonContainer *);
  18. bool writeContent(std::pair<int, int> &cursor, const std::pair<unsigned int, unsigned int> &maxSize, std::list<JSonElement*> *_item);
  19. bool writeKey(const std::string &key, const size_t keylen, std::pair<int, int> &cursor, const std::pair<unsigned int, unsigned int> &maxSize, OutputFlag flags, unsigned int extraLen =0);
  20. bool writeKey(const std::string &key, const size_t keylen, const std::string &after, size_t afterlen, std::pair<int, int> &cursor, const std::pair<unsigned int, unsigned int> &maxSize, OutputFlag flags);
  21. unsigned int write(const int &x, const int &y, const char item, unsigned int maxWidth, OutputFlag flags);
  22. unsigned int write(const int &x, const int &y, const std::string &str, const size_t strlen, unsigned int maxWidth, const OutputFlag flags);
  23. bool jumpToNextSearch(const JSonElement *current, bool &selectFound);
  24. bool jumpToNextSearch();
  25. unsigned int search(const SearchPattern &search_pattern);
  26. unsigned int search(const SearchPattern &search_pattern, const JSonElement *current);
  27. /**
  28. * get the screen size
  29. **/
  30. const std::pair<unsigned int, unsigned int> getScreenSize() const;
  31. /**
  32. * Initialize ncurses
  33. **/
  34. void init();
  35. /**
  36. * Release ncurses
  37. **/
  38. void shutdown();
  39. void destroyAllSubWin();
  40. /**
  41. * get flags to be passed to write.
  42. * Contains indications on who to write item
  43. **/
  44. const OutputFlag getFlag(const JSonElement *item) const;
  45. const OutputFlag getFlag(const JSonElement *item, const JSonElement *selection) const;
  46. protected:
  47. std::deque<std::string> fileNames;
  48. std::deque<JSonElement *> roots;
  49. std::deque<const JSonElement *> selection, select_up, select_down;
  50. std::deque<WINDOW *> subwindows;
  51. /**
  52. * currently searching pattern and its results
  53. **/
  54. std::deque<std::list<const JSonElement*> > search_result;
  55. /**
  56. * Viewport start
  57. **/
  58. std::deque<int> scrollTop;
  59. WINDOW *currentWin;
  60. size_t nbInputs, selectedWin, workingWin;
  61. };