def loop(self, screen):
     view = CursesView(forest, forest.statistics, forest.record)
     view.initialize()
 
     while forest.has_trees() and forest.current_tick <= args.duration:
         view.display(screen)
         forest.tick()
         sleep(args.sleep_time)
Beispiel #2
0
        def validator(c):
          if c == 27:
            # ctrl A >then> ctrl K
            # regex = None
            return 7
          elif c == 10:
            return 7 # RETURN key -- CTRL-g = 7 and CTRL-j = 10
          else:
            curses_view.search_textbox.do_command(c)

            if c == curses.KEY_UP and Control.current_regex_index > 0:
              Control.current_regex_index -= 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, Control.regex_patterns[Control.current_regex_index].value)
            elif c == curses.KEY_DOWN and Control.current_regex_index < len(Control.regex_patterns) - 1:
              Control.current_regex_index += 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, Control.regex_patterns[Control.current_regex_index].value)
            elif c == curses.KEY_DOWN and Control.current_regex_index == len(Control.regex_patterns) - 1:
              Control.current_regex_index += 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, curses_view.search_prompt)

            if curses_view.search_textbox.gather() is '':
              return 7
Beispiel #3
0
    def pressed_slash():
      Control.reload_notes = False
      if TixMode.current == TixMode.LIST:
        Control.reload_thread_lock.acquire()

        def validator(c):
          if c == 27:
            # ctrl A >then> ctrl K
            # regex = None
            return 7
          elif c == 10:
            return 7 # RETURN key -- CTRL-g = 7 and CTRL-j = 10
          else:
            curses_view.search_textbox.do_command(c)

            if c == curses.KEY_UP and Control.current_regex_index > 0:
              Control.current_regex_index -= 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, Control.regex_patterns[Control.current_regex_index].value)
            elif c == curses.KEY_DOWN and Control.current_regex_index < len(Control.regex_patterns) - 1:
              Control.current_regex_index += 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, Control.regex_patterns[Control.current_regex_index].value)
            elif c == curses.KEY_DOWN and Control.current_regex_index == len(Control.regex_patterns) - 1:
              Control.current_regex_index += 1
              curses_view.footer_pad.clear()
              CursesView.add_str(curses_view.footer_pad, curses_view.search_prompt)

            if curses_view.search_textbox.gather() is '':
              return 7

        regex = ""
        try:
          curses.curs_set(1)
        except curses.error: # iphone
          pass
        Control.current_regex_index = len(Control.regex_patterns)
        curses_view.footer_pad.clear()
        CursesView.add_str(curses_view.footer_pad, curses_view.search_prompt)
        self.is_searching = True
        regex = curses_view.search_textbox.edit(validator)
        self.is_searching = False
        try:
          curses.curs_set(0)
        except curses.error: # iphone
          pass
        if regex != None:
          regex = regex[len(curses_view.search_prompt):]
          if regex.strip():
            h = History(curses_view.search_prompt + regex)
            h.append_to_file(utils.get_search_history_path())
            Control.regex_patterns.append(h)
          Control.list_visible_index = 0
          curses_view.adjust_scroll(len(self.stored_items))

          list_modes = self.stored_items.modes()
          current_mode = list_modes[UserMode.current]

          for note in self.stored_items:
            if note.is_search_match(regex):
              if (current_mode == UserMode.ALL or current_mode in note.modes):
                note.visible(True)
              elif (current_mode == UserMode.NOTAG and not note.modes):
                note.visible(True)
            else:
              note.visible(False)

        Control.reload_thread_lock.release()