Пример #1
0
void SliderTestCase::PageUpDown()
{
#if wxUSE_UIACTIONSIMULATOR
    EventCounter pageup(m_slider, wxEVT_SCROLL_PAGEUP);
    EventCounter pagedown(m_slider, wxEVT_SCROLL_PAGEDOWN);

    wxUIActionSimulator sim;

    m_slider->SetFocus();

    sim.Char(WXK_PAGEUP);
    sim.Char(WXK_PAGEDOWN);

    wxYield();

    CPPUNIT_ASSERT_EQUAL(1, pageup.GetCount());
    CPPUNIT_ASSERT_EQUAL(1, pagedown.GetCount());
#endif
}
Пример #2
0
/**
 * Edit a stream
 * @param console_in   stream to read console from
 * @param console_out  stream to write console to
 * @param stream  stream to read/write file to
 */
void muon_edit(handle_t console_in, handle_t console_out, const char *title, handle_t stream)
  {
  int rc;
  int i;

  editor_t *ed = (editor_t *) neutron_malloc(sizeof(editor_t));
  memset(ed, 0, sizeof(editor_t));
  ed->console_in = console_in;
  ed->console_out = console_out;
  ed->title = title;
  ed->anchor = -1;

  rc = load_file(ed, stream);

  get_console_size(ed);

  bool done = false;
  int key;

  ed->refresh = 1;
  while (!done)
    {
    if (ed->refresh)
      {
      draw_screen(ed);
      draw_full_statusline(ed);
      ed->refresh = 0;
      ed->lineupdate = 0;
      }
    else if (ed->lineupdate)
      {
      update_line(ed);
      ed->lineupdate = 0;
      draw_statusline(ed);
      }
    else
      {
      draw_statusline(ed);
      }

    position_cursor(ed);

    key = getkey(ed);

    if (key >= ' ' && key <= 0x7F)
      {
      insert_char(ed, (char) key);
      }
    else
      {
      switch (key)
        {
        case KEY_F1:
          help(ed);
          break;
        case KEY_F5:
          redraw_screen(ed);
          break;
       case KEY_UP:
         up(ed, 0);
          break;
        case KEY_DOWN:
          down(ed, 0);
          break;
        case KEY_LEFT:
          left(ed, 0);
          break;
        case KEY_RIGHT:
          right(ed, 0);
          break;
        case KEY_HOME:
          home(ed, 0);
          break;
        case KEY_END:
          end(ed, 0);
          break;
        case KEY_PGUP:
          pageup(ed, 0);
          break;
        case KEY_PGDN:
          pagedown(ed, 0);
          break;
        case KEY_CTRL_RIGHT:
          wordright(ed, 0);
          break;
        case KEY_CTRL_LEFT:
          wordleft(ed, 0);
          break;
        case KEY_CTRL_HOME:
          top(ed, 0);
          break;
        case KEY_CTRL_END:
          bottom(ed, 0);
          break;
        case KEY_SHIFT_UP:
          up(ed, 1);
          break;
        case KEY_SHIFT_DOWN:
          down(ed, 1);
          break;
        case KEY_SHIFT_LEFT:
          left(ed, 1);
          break;
        case KEY_SHIFT_RIGHT:
          right(ed, 1);
          break;
        case KEY_SHIFT_PGUP:
          pageup(ed, 1);
          break;
        case KEY_SHIFT_PGDN:
          pagedown(ed, 1);
          break;
        case KEY_SHIFT_HOME:
          home(ed, 1);
          break;
        case KEY_SHIFT_END:
          end(ed, 1);
          break;
        case KEY_SHIFT_CTRL_RIGHT:
          wordright(ed, 1);
          break;
        case KEY_SHIFT_CTRL_LEFT:
          wordleft(ed, 1);
          break;
        case KEY_SHIFT_CTRL_HOME:
          top(ed, 1);
          break;
        case KEY_SHIFT_CTRL_END:
          bottom(ed, 1);
          break;
        case ctrl('a'):
          select_all(ed);
          break;
        case ctrl('c'):
          copy_selection(ed);
          break;
        case ctrl('f'):
          find_text(ed, 0);
          break;
        case ctrl('l'):
          goto_line(ed);
          break;
        case ctrl('g'):
          find_text(ed, 1);
          break;
        case KEY_TAB:
          indent(ed, INDENT);
          break;
        case KEY_SHIFT_TAB:
          unindent(ed, INDENT);
          break;
        case KEY_ENTER:
          newline(ed);
          break;
        case KEY_BACKSPACE:
          backspace(ed);
          break;
        case KEY_DEL:
          del(ed);
          break;
        case ctrl('x'):
          cut_selection(ed);
          break;
        case ctrl('z'):
          undo(ed);
          break;
        case ctrl('r'):
          redo(ed);
          break;
        case ctrl('v'):
          paste_selection(ed);
          break;
        case ctrl('s'):
          save_editor(ed);
          break;
        case ctrl('q'):
          done = close_editor(ed);
          break;
        }
      }
    }

  gotoxy(ed, 0, ed->lines + 1);

  outstr(ed, RESET_COLOR CLREOL);

  if (ed->clipboard)
    neutron_free(ed->clipboard);

  if (ed->search)
    neutron_free(ed->search);

  if (ed->linebuf)
    neutron_free(ed->linebuf);

  clear_undo(ed);
  neutron_free(ed);
  }
Пример #3
0
int main(int argc,char *argv[])
{    
	/*+++++++++++++++++Определения переменных функции main()+++++++++++++++++++++++++++++++++++*/
	unsigned char c;				/*Код клавиши (комбинации клавиш), который вводим.*/
    unsigned char func_c;			/*Флаг функциональной клавиши*/
    unsigned char shift;			/*Флаг нажатия shift*/

	/*++++++++++++++++++Объявления внешних переменных используемых в main()++++++++++++++++++++*/
	extern int line,pos;			/*Положение курсора относительно строк редактируемого файла*/
    extern int xt,yt,xk,yk;			/*Координаты окна экрана(xk, yk) и массива(xt, yt)*/
   		
	start(argc,argv);
	first_frame();
	
	/*Основной цикл*/
    while(1)		
    {
        /*При нажатии функциональных клавиш, в отличии от обычных, возвращается не один код, а два:
        первый 0 или 224 (0xE0) (зависит от того, на какой клавиатуре нажата функциональная клавиша:
        основной или дополнительной), а второй - уже непосредственно код функциональной клавиши.
        Например, при нажатии стрелки влево в буфер клавиатуры попадет два байта: 224 и 74. Все было бы
        хорошо, но 224 - это код русской буквы "а" (для данного locale), поэтому нужна дополнительная 
        проверка на пустоту буфера.	*/
        c=getch();		/*Считывание нажатой клавиши*/
        func_c=0;		/*Сброс флага нажатия функциональной клавиши*/
        if(kbhit() && (c==0x0 || c==0xE0))		/*Если буфер клавиатуры не пуст и считанный код равен 0 или 224*/
        {
            c=getch();	/*Считывание расширенного кода*/
            func_c=1;	/*Установка флага нажатия функциональной клавиши*/
        }
        /*------------------------------------------------------------------------------*/
        /*Проверка нажатия shift (при пошаговой отладке не работает)*/
        shift=(GetKeyState(VK_SHIFT) & PRESS)?1:0;  
        /*------------------------------------------------------------------------------*/
        line=yk+yt;		/*Cтрока, в которой сейчас находится курсор*/
        pos=xk+xt;		/*Столбец, в котором сейчас находится курсор*/
        /*------------------------------------------------------------------------------*/
        if(!func_c)		/*Обработка символьных клавиш, и символьных управляющих клавиш*/
			switch(c) 
            {  

			case 2:			/*Ctrl-B*/
				ctrl_b();
				break;

			case 5:			/*Ctrl-E*/
				ctrl_e();
				break;

			case 14:		/*Ctrl-N*/
				ctrl_n();
				break;

            case 21:		/*Ctrl-U*/
               	ctrl_u();
				break;

			case 27:		/*Esc*/
				esc();	

			case 68:		/*shift_D*/
				shift_d(shift);
				break;

            default:		/*Indent*/
				if(c>31)	/*Исключаем управляющие символы*/
					indent(c);
				break;                
            }
        else			/*Обработка функциональных клавиш*/        
            switch(c) 
            {
                case 72:		/*Up*/
					up(shift);
                    break;

                case 80:		/*Down*/
					down(shift);
                    break;

                case 75:		/*Left*/
					left(shift);
                    break;

                case 77:		/*Right*/
					right(shift);
                    break;
                
                case 73:		/*PgUp*/               
					pageup();										
                    break;

                case 81:		/*PgDown*/
					pagedown();                										
                    break;
                
                case 83:		/*del*/  
                    del();                
                    break;
                                                    
                case 71:		/*Home*/
					home();
                    break;
                              
                case 79:		/*End*/
					end();
                    break;

                case 119:		/*Ctrl-Home*/
                	ctrl_home();
                    break;
                
                case 117:		/*Ctrl-End*/
					ctrl_end();
                    break;
                
                case 93:		/*Shift-F10*/
					shift_f10(argv[1]);
				
				case 59:		/*F1*/
                    f1();             
                    break;   

				case 60:		/*F2*/
					f2(argv[1]);
					break;

				case 65:		/*F7*/
					f7();
					break;

					
            }        
    }
}