Beispiel #1
0
static int	check_buf(char *buf, t_win *win, int position, t_ios *term)
{
	int select;

	select = 0;
	if (buf[0] == 32)
		selection(win->arg, position, &select);
	else if (buf[0] == 4)
	{
		if (tcsetattr(0, TCSADRAIN, term) == -1)
			leave_term();
	}
	else if (buf[0] == 10)
		print_selected(win->arg);
	else if (buf[0] == 114)
		select_reverse(win->arg);
	else if (buf[0] == 97)
		select_all(win->arg);
	else if ((buf[0] == 126 || buf[0] == 127))
	{
		clr_screen();
		win->arg = delete_link(win, position);
	}
	return (select);
}
bool Connection::table_exists( const string &table_name ) {
  AttributeList parameters;
  parameters.push_back( table_name );
  RowSet rows = select_all( "SELECT name FROM sqlite_master WHERE type='table' AND name = ?;",
                            parameters );
  return ( rows.size() ? true : false );
}
Beispiel #3
0
static void	special_keys(unsigned int key, t_entlist *l)
{
	if (key == K_SPACE)
	{
		l->list->hl = l->list->hl == 0 ? 1 : 0;
		go_down(l);
	}
	else if (key == K_A)
	{
		l->sel_v = l->sel_v == 0 ? 1 : 0;
		select_all(l, l->sel_v);
	}
	else if (key == K_R)
	{
		l->sel_v = l->sel_v == 0 ? 1 : 0;
		select_specific(l, R, l->sel_v);
	}
	else if (key == K_D)
	{
		l->sel_v = l->sel_v == 0 ? 1 : 0;
		select_specific(l, D, l->sel_v);
	}
	else if (key == K_X)
	{
		l->sel_v = l->sel_v == 0 ? 1 : 0;
		select_specific(l, X, l->sel_v);
	}
}
Beispiel #4
0
bool
BasicGrid::handle_event_impl(
	UI::Event const& event
) noexcept {
	switch (event.type) {
	case UI::EventType::key_input:
		if (!has_input_control() && event.key_input.mod == KeyMod::none) {
			bool handled = true;
			switch (event.key_input.code) {
			case KeyCode::up   : row_step(-1); break;
			case KeyCode::down : row_step(+1); break;
			case KeyCode::left : col_step(-1); break;
			case KeyCode::right: col_step(+1); break;
			case KeyCode::home: row_abs(0); break;
			case KeyCode::end : row_abs(max_ce(0, row_count() - 1)); break;
			case KeyCode::pgup:
				row_step(min_ce(0, -view().fit_count - 1)); break;
			case KeyCode::pgdn:
				row_step(max_ce(0, +view().fit_count - 1)); break;

			default:
				switch (event.key_input.cp) {
				case 'k': row_step(-1); break;
				case 'j': row_step(+1); break;
				case 'h': col_step(-1); break;
				case 'l': col_step(+1); break;
				case 'a': select_all(); break;
				case 'A': select_none(); break;
				case 's': select_toggle(m_cursor.row, 1); break;
				default:
					handled = false;
					break;
				}
			}
			return handled;
		}
		break;

	case UI::EventType::focus_changed:
		queue_cell_render(
			m_cursor.row, m_cursor.row + 1,
			m_cursor.col, m_cursor.col + 1
		);
		if (is_focused()) {
			App::instance.m_ui.csline->set_location(
				std::to_string(m_cursor.row) + ", " +
				std::to_string(m_cursor.col)
			);
		} else {
			App::instance.m_ui.csline->clear_location();
		}
		return false;

	default:
		break;
	}
	return false;
}
Beispiel #5
0
void
ttext_box::signal_handler_left_button_double_click(const event::tevent event,
												   bool& handled)
{
	DBG_GUI_E << LOG_HEADER << ' ' << event << ".\n";

	select_all();
	handled = true;
}
Beispiel #6
0
/* Called for "None" button. */
static int none_cb()
{
   /* unselect all grids */
   select_all( DB, ALL_BITS, 0 );
   LUI_ListSetStatusAll( gridlister, 0 );
   LUI_ListSetStatusAll( varlister, 0 );
   LUI_ListSetStatusAll( timelister, 0 );
   LUI_ListSetStatusAll( projlister, 0 );
   LUI_ListSetStatusAll( vcslister, 0 );
   estimate_file_size();
   return 0;
}
static gboolean keypress_cb (GtkWidget * widget, GdkEventKey * event)
{
    if (event->keyval == GDK_A && (event->state && GDK_CONTROL_MASK))
        select_all (NULL, TRUE);
    else if (event->keyval == GDK_Delete)
        remove_selected ();
    else if (event->keyval == GDK_Escape)
        gtk_widget_destroy (qm_win);
    else
        return FALSE;

    return TRUE;
}
Beispiel #8
0
layer_manager::layer_manager(QWidget* parent) :
	QWidget(parent),
	layout_(new FlowLayout)
{
	QSizePolicy policy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
	policy.setHeightForWidth(true);
	setSizePolicy(policy);

	setLayout(layout_);
	setFocusPolicy(Qt::StrongFocus);

	auto shortcut = new QShortcut(QKeySequence(tr("Ctrl+A")), this);
	connect(shortcut, SIGNAL(activated()), this, SLOT(select_all()));
}
Beispiel #9
0
	void View_list::key_down(Core *c, Event *e, uint8_t key_name){
		if (key_name == 'a'){
			select_all();
			return;
		}
		if (key_name == 'A'){
			deselect_all();
			return;
		}

		int32_t amount = 64;
		if (key_name == 'N'){
			scroll_all(c, e, amount, 0, 0);
			return;
		}
		if (key_name == 'H'){
			scroll_all(c, e, -amount, 0, 0);
			return;
		}
		if (key_name == 'C'){
			scroll_all(c, e, 0, amount, 0);
			return;
		}
		if (key_name == 'T'){
			scroll_all(c, e, 0, -amount, 0);
			return;
		}
		if (key_name == 'l'){
			layouter = new Virtical_layouter_v1;
			return;
		}
		if (key_name == 's'){
			layouter = new Horizontial_layouter_v1;
			return;
		}
		if (key_name == '/'){
			layouter = new Matrix_layouter;
			return;
		}

		View* v = view_at(e->cursor());
		if (not v) return;

		if (key_name == 'x'){
			v->reset_visible();
			return;
		}
		v->key_down(c, e, key_name);
	}
Beispiel #10
0
BOOL CListCtrlEx::PreTranslateMessage(MSG* pMsg)
{
	if (pMsg->message == WM_KEYDOWN)
	{
		if (GetKeyState(VK_CONTROL) < 0)
		{
			switch (pMsg->wParam)
			{
			case 'A':
				if (GetStyle() & LVS_SINGLESEL)
					break;
				select_all();
				return true;
			case VK_ADD:
				auto_size();
				return true;
			}
		}
	}
	return CListCtrl::PreTranslateMessage(pMsg);
}
Beispiel #11
0
void LineEdit::menu_option(int p_option) {

switch(p_option) {
case MENU_CUT: {
    if (editable) {
        cut_text();
    }
}
break;
case MENU_COPY: {

    copy_text();
}
break;
case MENU_PASTE: {
    if (editable) {
        paste_text();
    }
}
break;
case MENU_CLEAR: {
    if (editable) {
        clear();
    }
}
break;
case MENU_SELECT_ALL: {
    select_all();
}
break;
case MENU_UNDO: {
    undo();
}
break;

}

}
Beispiel #12
0
int main(int argc, char **argv)
{
	int i, become_daemon = 1;

	for(i=1; i<argc; i++) {
		if(argv[i][0] == '-' && argv[i][2] == 0) {
			switch(argv[i][1]) {
			case 'd':
				become_daemon = !become_daemon;
				break;

			case 'v':
				verbose = 1;
				break;

			case 'h':
				printf("usage: %s [options]\n", argv[0]);
				printf("options:\n");
				printf("  -d\tdo not daemonize\n");
				printf("  -v\tverbose output\n");
				printf("  -h\tprint this usage information\n");
				return 0;

			default:
				fprintf(stderr, "unrecognized argument: %s\n", argv[i]);
				return 1;
			}
		} else {
			fprintf(stderr, "unexpected argument: %s\n", argv[i]);
			return 1;
		}
	}

	if(become_daemon) {
		daemonize();
	}
	write_pid_file();

	read_cfg("/etc/spnavrc", &cfg);

	if(!(client_list = malloc(sizeof *client_list))) {
		perror("failed to allocate client list");
		return 1;
	}
	client_list->next = 0;

	signal(SIGINT, sig_handler);
	signal(SIGTERM, sig_handler);
	signal(SIGSEGV, sig_handler);
	signal(SIGHUP, sig_handler);
	signal(SIGUSR1, sig_handler);
	signal(SIGUSR2, sig_handler);

	init_dev();
	init_unix();
#ifdef USE_X11
	init_x11();
#endif

	/* event handling loop */
	while(1) {
		fd_set rd_set;

		if(dev_fd == -1) {
			if(init_dev() == -1) {
				sleep(30);
				continue;
			}
		}

		if(select_all(&rd_set) >= 0) {
			handle_events(&rd_set);
		}
	}

	/* just for the sense of symmetry, execution can't reach this :) */
#ifdef USE_X11
	close_x11();
#endif
	close_dev();
	return 0;
}
Beispiel #13
0
bool TextWidget::on_key_event(const KeyEvent *event) {
    if (!_text_interaction_on)
        return false;

    if (_on_key_event(this, event)) {
        // user ate this event
        return true;
    }

    if (event->action == KeyActionUp)
        return false;

    int start, end;
    get_cursor_slice(start, end);
    switch (event->virt_key) {
        case VirtKeyLeft:
            if (key_mod_ctrl(event->modifiers) && key_mod_shift(event->modifiers)) {
                int new_end = backward_word();
                set_selection(_cursor_start, new_end);
            } else if (key_mod_ctrl(event->modifiers)) {
                int new_start = backward_word();
                set_selection(new_start, new_start);
            } else if (key_mod_shift(event->modifiers)) {
                set_selection(_cursor_start, _cursor_end - 1);
            } else {
                if (start == end) {
                    set_selection(start - 1, start - 1);
                } else {
                    set_selection(start, start);
                }
            }
            return true;
        case VirtKeyRight:
            if (key_mod_ctrl(event->modifiers) && key_mod_shift(event->modifiers)) {
                int new_end = forward_word();
                set_selection(_cursor_start, new_end);
            } else if (key_mod_ctrl(event->modifiers)) {
                int new_start = forward_word();
                set_selection(new_start, new_start);
            } else if (key_mod_shift(event->modifiers)) {
                set_selection(_cursor_start, _cursor_end + 1);
            } else {
                if (start == end) {
                    set_selection(start + 1, end + 1);
                } else {
                    set_selection(end, end);
                }
            }
            return true;
        case VirtKeyBackspace:
            if (start == end) {
                if (key_mod_ctrl(event->modifiers)) {
                    int new_start = backward_word();
                    replace_text(new_start, start, "", 0);
                } else {
                    replace_text(start - 1, end, "", 0);
                }
            } else {
                replace_text(start, end, "", 0);
            }
            return true;
        case VirtKeyDelete:
            if (start == end) {
                if (key_mod_ctrl(event->modifiers)) {
                    int new_start = forward_word();
                    replace_text(start, new_start, "", 0);
                } else {
                    replace_text(start, end + 1, "", 0);
                }
            } else {
                replace_text(start, end, "", 0);
            }
            return true;
        case VirtKeyHome:
            if (key_mod_shift(event->modifiers)) {
                set_selection(_cursor_start, 0);
            } else {
                set_selection(0, 0);
            }
            return true;
        case VirtKeyEnd:
            if (key_mod_shift(event->modifiers)) {
                set_selection(_cursor_start, _label.text().length());
            } else {
                set_selection(_label.text().length(), _label.text().length());
            }
            return true;
        case VirtKeyA:
            if (key_mod_only_ctrl(event->modifiers)) {
                select_all();
                return true;
            }
        case VirtKeyX:
            if (key_mod_only_ctrl(event->modifiers)) {
                cut();
                return true;
            }
        case VirtKeyC:
            if (key_mod_only_ctrl(event->modifiers)) {
                copy();
                return true;
            }
        case VirtKeyV:
            if (key_mod_only_ctrl(event->modifiers)) {
                paste();
                return true;
            }
        default:
            // do nothing
            return true;
    }
}
Beispiel #14
0
 void disable(void) { select_all(); Set_Display_On_Off(0); select(0); }
Beispiel #15
0
 void enable(void) { select_all(); Set_Display_On_Off(1); select(0); }
Beispiel #16
0
	//void print_digit(u8 digit, u8 start_page, u8 start_col);
	void set_brightness(u8 brightness) { select_all(); Set_Contrast_Control(brightness); select(0); }
void UnitTestBulkData::testChangeParts_loop( ParallelMachine pm )
{
  enum { nPerProc = 10 };
  const unsigned p_rank = parallel_machine_rank( pm );
  const unsigned p_size = parallel_machine_size( pm );
  const unsigned nLocalNode = nPerProc + ( 1 < p_size ? 1 : 0 );
  const unsigned nLocalEdge = nPerProc ;

  UnitTestRingMeshFixture ring_mesh( pm , nPerProc , true /* generate parts */ );
  ring_mesh.m_meta_data.commit();
  ring_mesh.generate_mesh( false /* no aura */ );

  Part & part_owns = ring_mesh.m_meta_data.locally_owned_part();
  Part & part_univ = ring_mesh.m_meta_data.universal_part();

  Selector select_owned( ring_mesh.m_meta_data.locally_owned_part() );
  Selector select_used = select_owned | ring_mesh.m_meta_data.globally_shared_part();
  Selector select_all(   ring_mesh.m_meta_data.universal_part() );

  std::vector<unsigned> local_count ;

  for ( unsigned i = 0 ; i < nLocalEdge ; ++i ) {
    const unsigned n = i + nPerProc * p_rank ;
    Entity * const edge = ring_mesh.m_bulk_data.get_entity( 1 , ring_mesh.m_edge_ids[n] );
    STKUNIT_ASSERT( edge != NULL );
    STKUNIT_ASSERT( edge->bucket().member( part_univ ) );
    STKUNIT_ASSERT( edge->bucket().member( part_owns ) );
    STKUNIT_ASSERT( edge->bucket().member( * ring_mesh.m_edge_parts[ n % ring_mesh.m_edge_parts.size() ] ) );
  }

  for ( unsigned i = 0 ; i < nLocalNode ; ++i ) {
    const unsigned n = ( i + nPerProc * p_rank ) % ring_mesh.m_node_ids.size();
    const unsigned e0 = n ;
    const unsigned e1 = ( n + ring_mesh.m_edge_ids.size() - 1 ) % ring_mesh.m_edge_ids.size();
    const unsigned ns = ring_mesh.m_edge_parts.size();
    const unsigned n0 = e0 % ns ;
    const unsigned n1 = e1 % ns ;
    Part * const epart_0 = ring_mesh.m_edge_parts[ n0 < n1 ? n0 : n1 ];
    Part * const epart_1 = ring_mesh.m_edge_parts[ n0 < n1 ? n1 : n0 ];

    Entity * const node = ring_mesh.m_bulk_data.get_entity( 0 , ring_mesh.m_node_ids[n] );
    STKUNIT_ASSERT( node != NULL );
    if ( node->owner_rank() == p_rank ) {
      STKUNIT_ASSERT( node->bucket().member( part_univ ) );
      STKUNIT_ASSERT( node->bucket().member( part_owns ) );
      STKUNIT_ASSERT( node->bucket().member( *epart_0 ) );
      STKUNIT_ASSERT( node->bucket().member( *epart_1 ) );
    }
    else {
      STKUNIT_ASSERT( node->bucket().member( part_univ ) );
      STKUNIT_ASSERT( ! node->bucket().member( part_owns ) );
      STKUNIT_ASSERT( node->bucket().member( * epart_0 ) );
      STKUNIT_ASSERT( node->bucket().member( * epart_1 ) );
    }
  }

  ring_mesh.m_bulk_data.modification_begin();

  if ( 0 == p_rank ) {

    for ( unsigned i = 0 ; i < nLocalEdge ; ++i ) {
      const unsigned n = i + nPerProc * p_rank ;

      PartVector add(1); add[0] = & ring_mesh.m_edge_part_extra ;
      PartVector rem(1); rem[0] = ring_mesh.m_edge_parts[ n % ring_mesh.m_edge_parts.size() ];

      Entity * const edge = ring_mesh.m_bulk_data.get_entity( 1 , ring_mesh.m_edge_ids[n] );
      ring_mesh.m_bulk_data.change_entity_parts( *edge , add , rem );
      STKUNIT_ASSERT( edge->bucket().member( part_univ ) );
      STKUNIT_ASSERT( edge->bucket().member( part_owns ) );
      STKUNIT_ASSERT( edge->bucket().member(ring_mesh.m_edge_part_extra ) );
    }
  }

  ring_mesh.m_bulk_data.modification_end();

  for ( unsigned i = 0 ; i < nLocalNode ; ++i ) {
    const unsigned n = ( i + nPerProc * p_rank ) % ring_mesh.m_node_ids.size();
    const unsigned e0 = n ;
    const unsigned e1 = ( n + ring_mesh.m_edge_ids.size() - 1 ) % ring_mesh.m_edge_ids.size();
    const unsigned ns = ring_mesh.m_edge_parts.size();
    const unsigned n0 = e0 % ns ;
    const unsigned n1 = e1 % ns ;
    Part * ep_0 = e0 < nLocalEdge ? & ring_mesh.m_edge_part_extra : ring_mesh.m_edge_parts[n0] ;
    Part * ep_1 = e1 < nLocalEdge ? & ring_mesh.m_edge_part_extra : ring_mesh.m_edge_parts[n1] ;

    Part * epart_0 = ep_0->mesh_meta_data_ordinal() < ep_1->mesh_meta_data_ordinal() ? ep_0 : ep_1 ;
    Part * epart_1 = ep_0->mesh_meta_data_ordinal() < ep_1->mesh_meta_data_ordinal() ? ep_1 : ep_0 ;

    Entity * const node = ring_mesh.m_bulk_data.get_entity( 0 , ring_mesh.m_node_ids[n] );
    STKUNIT_ASSERT( node != NULL );
    if ( node->owner_rank() == p_rank ) {
      STKUNIT_ASSERT( node->bucket().member( part_owns ) );
    }
    else {
      STKUNIT_ASSERT( ! node->bucket().member( part_owns ) );
    }

    STKUNIT_ASSERT( node->bucket().member( part_univ ) );
    STKUNIT_ASSERT( node->bucket().member( *epart_0 ) );
    STKUNIT_ASSERT( node->bucket().member( *epart_1 ) );
  }
}
Beispiel #18
0
void
get_commands()
{
    int ch;

    for(;;) {
        can_resize = TRUE; /* it's safe to resize now */
        if(!opt_get_bool(BOOL_SHOW_CURSOR))
            hide_cursor();
        if(should_resize)
            refresh_screen();
        ch = getch();
        if(!opt_get_bool(BOOL_SHOW_CURSOR))
            show_cursor();
        can_resize = FALSE; /* it's not safe to resize anymore */
        switch(ch) {
        case 'q':
            return;
        case 'Q':
            quit_abook(QUIT_DONTSAVE);
            break;
        case 'P':
            print_stderr(selected_items() ?
                         -1 : list_get_curitem());
            return;
        case '?':
            display_help(HELP_MAIN);
            refresh_screen();
            break;
        case 'a':
            add_item();
            break;
        case '\r':
            edit_item(-1);
            break;
        case KEY_DC:
        case 'd':
        case 'r':
            ui_remove_items();
            break;
        case 'D':
            duplicate_item();
            break;
        case 12:
            refresh_screen();
            break;

        case 'k':
        case KEY_UP:
            scroll_up();
            break;
        case 'j':
        case KEY_DOWN:
            scroll_down();
            break;
        case 'K':
        case KEY_PPAGE:
            page_up();
            break;
        case 'J':
        case KEY_NPAGE:
            page_down();
            break;

        case 'g':
        case KEY_HOME:
            goto_home();
            break;
        case 'G':
        case KEY_END:
            goto_end();
            break;

        case 'w':
            save_database();
            break;
        case 'l':
            ui_read_database();
            break;
        case 'i':
            import_database();
            break;
        case 'e':
            export_database();
            break;
        case 'C':
            ui_clear_database();
            break;

        case 'o':
            ui_open_datafile();
            break;

        case 's':
            sort_by_field("name");
            break;
        case 'S':
            sort_surname();
            break;
        case 'F':
            sort_by_field(NULL);
            break;

        case '/':
            ui_find(0);
            break;
        case '\\':
            ui_find(1);
            break;

        case ' ':
            if(list_get_curitem() >= 0) {
                list_invert_curitem_selection();
                ui_print_number_of_items();
                refresh_list();
            }
            break;
        case '+':
            select_all();
            refresh_list();
            break;
        case '-':
            select_none();
            refresh_list();
            break;
        case '*':
            invert_selection();
            refresh_list();
            break;
        case 'A':
            move_curitem(MOVE_ITEM_UP);
            break;
        case 'Z':
            move_curitem(MOVE_ITEM_DOWN);
            break;

        case 'm':
            launch_mutt(selected_items() ?
                        -1 : list_get_curitem());
            refresh_screen();
            break;

        case 'p':
            ui_print_database();
            break;

        case 'v':
            launch_wwwbrowser(list_get_curitem());
            refresh_screen();
            break;
        case 'H':
            launch_callpgm(list_get_curitem(), 'H');
            refresh_screen();
            break;
        case 'W':
            launch_callpgm(list_get_curitem(), 'W');
            refresh_screen();
            break;
        case 'M':
            launch_callpgm(list_get_curitem(), 'M');
            refresh_screen();
            break;
        }
    }
}
Beispiel #19
0
//select
void mSelectAllSlot(GtkWidget * widget, gpointer user_data)
{
    select_all(view->g[view->activeGraph]);
}
Beispiel #20
0
LRESULT CALLBACK App::subclass_wndproc_new(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
	//odnalezienie kontrolki
    Control* kontrolka = NULL;
	for(unsigned int i=0; i<Controls::geti()->controls.size(); i++){
        if(Controls::geti()->controls.at(i)->handle == hwnd){
            kontrolka = Controls::geti()->controls.at(i);
            break;
        }
	}
    if(kontrolka==NULL){
        IO::geti()->error("Subclassing: Nie znaleziono kontrolki o podanym uchwycie");
        return 0;
    }
    string nazwa = kontrolka->name;
    //globalne skróty klawiszowe
    if(message == WM_KEYDOWN){
        if(wParam==VK_F1||wParam==VK_F2||wParam==VK_F3||wParam==VK_F5||wParam==VK_F6||wParam==VK_F7||wParam==VK_F8||wParam==VK_F9||wParam==VK_F10||wParam==VK_F11){
            CallWindowProc(windowProc, hwnd, message, wParam, lParam); //przekazanie wy¿ej do mainwindow
            return 0; //przechwycenie
        }
        //wyjœcie z fullscreena
        if(wParam==VK_ESCAPE && Config::geti()->fullscreen_on){
            CallWindowProc(windowProc, hwnd, message, wParam, lParam); //przekazanie wy¿ej do mainwindow
            return 0; //przechwycenie
        }
        //ctrl
        if(is_control_pressed()){
            if(wParam=='S'||wParam=='F'||wParam=='N'||wParam=='B'||wParam==VK_ADD||wParam==VK_SUBTRACT||wParam==VK_LEFT||wParam==VK_RIGHT||wParam=='0'||wParam==VK_NUMPAD0||wParam==VK_OEM_3){
                CallWindowProc(windowProc, hwnd, message, wParam, lParam); //przekazanie wy¿ej do mainwindow
                return 0; //przechwycenie
            }
        }
    }
    if(message == WM_SYSKEYDOWN){
        if(wParam==VK_F10){
            //zamiana WM_SYSKEYDOWN na WM_KEYDOWN
            subclass_wndproc_new(hwnd, WM_KEYDOWN, wParam, lParam);
            return 0;
        }
    }
    //globalne przechwycenie wygaszacza
    if(message == WM_SYSCOMMAND){
        if(wParam == SC_SCREENSAVE){
            CallWindowProc(windowProc, hwnd, message, wParam, lParam); //przekazanie wy¿ej do mainwindow
            return 0; //przechwycenie
        }
    }
	//nowe procedury kontrolek
    if(nazwa=="filename_edit"){
		switch(message){
			case WM_CHAR:{
				if(wParam==VK_ESCAPE){
					Controls::geti()->set_focus("editor");
					return 0;
				}else if(wParam==VK_RETURN){
                    if(!Config::geti()->cmd_show){
                        cmd_switch(1);
                    }
                    Controls::geti()->set_focus("cmd");
                    Controls::geti()->select_all("cmd");
                    return 0;
                }
			}break;
		}
	}
    if(nazwa=="cmd"){
		switch(message){
			case WM_CHAR:{
				if(wParam==VK_ESCAPE){
					Controls::geti()->set_focus("editor");
					return 0;
				}else if(wParam==VK_RETURN){
					exec_cmd();
					return 0; //przechwycenie
				}
			}break;
			case WM_KEYDOWN:{
				if(wParam==VK_UP){
                    Controls::geti()->set_text("cmd", last_cmd);
					SendMessage(Controls::geti()->find("cmd"), EM_SETSEL, last_cmd.length(), last_cmd.length());
					return 0;
				}
				if(wParam==VK_DOWN){
					Controls::geti()->set_text("cmd", "");
					return 0;
				}
			}break;
		}
	}
	if(nazwa=="editor"){ //edytor
		switch(message){
			case WM_SYSKEYDOWN:{
                if(wParam>='1' && wParam<='9'){
                    //zamiana WM_SYSKEYDOWN na WM_KEYDOWN
                    subclass_wndproc_new(hwnd, WM_KEYDOWN, wParam, lParam);
                    return 0;
				}
			}break;
			case WM_KEYDOWN:{
				if(is_control_pressed()){ //ctrl
					if(wParam=='C'){
						copy_text();
						return 0;
					}else if(wParam=='A'){
                        select_all();
                        return 0;
					}else if(wParam=='Z'){
                        undo->revert();
                        return 0;
					}else if(wParam=='R'){
                        refresh_text();
                        return 0;
					}else if(wParam=='T'){
						quick_replace();
						return 0;
					}else if(wParam=='Q'){
						usun_akordy();
						return 0;
					}else if(wParam=='W'){
						save_pattern();
						return 0;
					}else if(wParam=='E'){
                        insert_pattern();
						return 0;
					}else if(wParam=='D'){
                        dodaj_nawias();
						return 0;
					}else if(wParam>='1' && wParam<='9'){
						zapisz_tekst(wParam-'1'+1);
						return 0;
					}
				}else if(is_alt_pressed()){ //alt
					if(wParam>='1' && wParam<='9'){
						wstaw_tekst(wParam-'1'+1);
						return 0;
					}
				}
			}break;
			case WM_CHAR:{
                //dla ka¿dego znaku (bez controla)
                if(!is_control_pressed()){
                    undo->save();
                }
                //undo->save();
				if(wParam == ']'){
					string add_text = "]";
					SendMessage(Controls::geti()->find("editor"), EM_REPLACESEL, 0, (LPARAM)add_text.c_str()); //wstawienie znaku
					refresh_text(); //odœwie¿enie tekstu
                    //zmiana koloru po nawiasie na kolor tekstu
                    CHARFORMAT cf_text;
                    cf_text.cbSize = sizeof(cf_text);
                    SendMessage(Controls::geti()->find("editor"), EM_GETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cf_text);
                    //kolor tekstu + brak pogrubienia
                    cf_text.dwMask = CFM_COLOR | CFM_BOLD;
                    cf_text.crTextColor = RGB(Config::i()->color_text[0], Config::i()->color_text[1], Config::i()->color_text[2]);
                    cf_text.dwEffects = 0;
                    SendMessage(Controls::geti()->find("editor"), EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf_text);
                    return 0;
				}
			}break;
			case WM_MOUSEWHEEL:{
                int zdelta = GET_WHEEL_DELTA_WPARAM(wParam);
				if(LOWORD(wParam)==MK_CONTROL){ //z controlem
                    //zmiana czcionki
					if(zdelta>=0){
						change_font_size(+1);
					}else{
						change_font_size(-1);
					}
                    return 0;
				}else{
                    //scrollowanie edytora
                    int scroll_step = Config::geti()->editor_fontsize + 2;
                    if(zdelta>=0){
						change_scroll(-scroll_step);
					}else{
						change_scroll(+scroll_step);
					}
                    return 0;
                }
			}break;
		}
	}
	if(nazwa=="find_edit"){ //szukany ci¹g znaków
		switch(message){
			case WM_SETFOCUS:{
                if(Controls::i()->get_text("find_edit")==Config::i()->find_edit_placeholder){
                    Controls::i()->set_text("find_edit", "");
                }
				IO::geti()->echo("(Wpisz szukany ci¹g znaków, Enter - szukaj)");
			}break;
            case WM_KILLFOCUS:{
                if(Controls::i()->get_text("find_edit").length()==0){
                    Controls::i()->set_text("find_edit", Config::i()->find_edit_placeholder);
                }
            }break;
			case WM_CHAR:{
				if(wParam==VK_RETURN){
					znajdz();
					return 0;
				}
				if(wParam==VK_TAB){
					Controls::geti()->set_focus("replace_edit");
					return 0;
				}
			}break;
		}
	}
	if(nazwa=="replace_edit"){ //tekst do zamiany
		switch(message){
			case WM_SETFOCUS:{
                if(Controls::i()->get_text("replace_edit")==Config::i()->replace_edit_placeholder){
                    Controls::i()->set_text("replace_edit", "");
                }
                    IO::geti()->echo("(Wpisz tekst do zamiany, Enter - zamieñ w zaznaczeniu lub ca³ym pliku)");
                }break;
            case WM_KILLFOCUS:{
                if(Controls::i()->get_text("replace_edit").length()==0){
                    Controls::i()->set_text("replace_edit", Config::i()->replace_edit_placeholder);
                }
            }break;
			case WM_CHAR:{
				if(wParam==VK_RETURN){
					zamien();
					return 0;
				}
				if(wParam==VK_TAB){
					Controls::geti()->set_focus("find_edit");
					return 0;
				}
			}break;
		}
	}
	if(nazwa=="autoscroll_interval"){ //autoscroll_interval
		switch(message){
			case WM_SETFOCUS:{
				IO::geti()->echo("(Czas miêdzy kolejnymi przebiegami autoscrolla - wyra¿ony w milisekundach)");
			}break;
			case WM_CHAR:{
				if(wParam==VK_RETURN){
					autoscroll_nowait(0);
					return 0;
				}
			}break;
		}
	}
	if(nazwa=="autoscroll_wait"){ //autoscroll_wait
		switch(message){
			case WM_SETFOCUS:{
				IO::geti()->echo("(Czas opóŸnienia przed autoscrollem - wyra¿ony w sekundach)");
			}break;
			case WM_CHAR:{
				if(wParam==VK_RETURN){
					autoscroll_on();
					return 0;
				}
			}break;
		}
	}
	return CallWindowProc(kontrolka->wndproc_old, hwnd, message, wParam, lParam);
}
Beispiel #21
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);
  }
Beispiel #22
0
	void symboltable::check_types() const
	{
		s_ptr<typecontext> global(new typecontext());
		ltypecontext c(global);
		substitution s;
		
		std::map<sid, s_ptr<const sl_polytype_exists>> init_types;
		for(size_t i = 0; i < index.size(); i++)
			if(index[i].t == symbolref::t_var || index[i].t == symbolref::t_fun)
			{
				const s_ptr<const sl_polytype_exists> t(new sl_polytype_exists());
				init_types[i] = t;
				c.register_type(i, std::static_pointer_cast<const sl_polytype>(t));
			}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_construct))
			s = conss[index[i].i]->declare_type(c).composite(s);
		
		ltypecontext corig = c;
		
		for(const sid i : select_all(symbolref::symbolreftype::t_var))
		{
			ltypecontext ctmp = corig;
			s = vars[index[i].i]->declare_type(ctmp).composite(s);
			c.register_type(i, ctmp[i]); //Copy result from ctmp to c;
		}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_fun))
		{
			ltypecontext ctmp = corig;
			s = funs[index[i].i]->declare_type(ctmp).composite(s);
			c.register_type(i, ctmp[i]); //Copy result from ctmp to c;
		}
		
		std::vector<sid> prop_index;
		for(const std::pair<sid, s_ptr<const sl_polytype_exists>> p : init_types)
			prop_index.push_back(p.first);
		
		while(!prop_index.empty())
		{
			bool changed = false;
			
			for(size_t i = 0; i < prop_index.size(); i++)
			{
				const s_ptr<const sl_polytype_exists> t = init_types[prop_index[i]];
				
				std::vector<s_ptr<const sl_type_unbound>> blacklist;
				for(size_t j = 0; j < prop_index.size(); j++)
					if(i != j)
						for(const auto tmp : init_types[prop_index[j]]->fetch_bindings())
							add_to<s_ptr<const sl_type_unbound>>(tmp->apply(s)->tv(), blacklist);
				
				if(any_is_in_ptr<const sl_type_unbound>(std::dynamic_pointer_cast<const sl_polytype_forall>(c[prop_index[i]])->unbind_maintain()->apply(s)->tv(), blacklist))
					continue;
	
				s = t->propagate_findings(c, c[prop_index[i]]->apply(c, s), s);
				
				prop_index.erase(prop_index.begin()+i);
				i--;
				
				changed = true;
				break;
			}
			
			if(!prop_index.empty() && !changed)
			{
				for(size_t i = 0; i < prop_index.size(); i++)
				{
					print_name(prop_index[i], std::cout << std::endl);
					for(const auto t : std::dynamic_pointer_cast<const sl_polytype_forall>(c[prop_index[i]])->unbind_maintain()->apply(s)->tv())
						t->print(std::cout << ' ');
				}
				throw std::runtime_error("Cyclic dependency in definitions, cannot infer type");
			}
		}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_type))
			c.register_type(i, sl_polytype::not_qualify(c.create_fresh(sloc())));
		
		typecontext gtmp = global->apply_maintain(s);
		substitution stmp;
		
		for(const sid i : select_all(symbolref::symbolreftype::t_var))
		{
			gtmp = gtmp.apply(stmp);
			stmp = vars[index[i].i]->fetch_assigned_type(gtmp)->unify(gtmp[i]->unbind(gtmp)).composite(stmp);
		}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_fun))
		{
			gtmp = gtmp.apply(stmp);
			stmp = funs[index[i].i]->fetch_assigned_type(gtmp)->unify(gtmp[i]->unbind(gtmp)).composite(stmp);
		}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_arg))
		{
			gtmp = gtmp.apply(stmp);
			stmp = args[index[i].i]->fetch_assigned_type(gtmp)->unify(gtmp[i]->unbind(gtmp)).composite(stmp);
		}
		
		for(const sid i : select_all(symbolref::symbolreftype::t_local_var))
		{
			gtmp = gtmp.apply(stmp);
			stmp = local_vars[index[i].i]->fetch_assigned_type(gtmp)->unify(gtmp[i]->unbind(gtmp)).composite(stmp);
		}
		
		print(global->apply_maintain(stmp.composite(s)), std::cout << "Typecontext final: " << std::endl);
	}