void main_loop() { char c; int rinc=100,storage_pos=1; while (c!='Q') { display_pos(); c=getch(); if (c==27) c=getch(); move(20,0); //printw("keycode: %d ",c); switch (c) { case 32: reset();break; /* SPACE */ case 104: /* h */ case 72: helpscreen();break; /* H */ case 82: rsend("RS");break; /* R */ case 121: /* y */ case 122: rmove_base(rinc);break; /* z */ case 120: rmove_base(-rinc);break; /* x */ case 113: rmove_shoulder(rinc);break; /* q */ case 97: rmove_shoulder(-rinc);break; /* a */ case 119: rmove_elbow(rinc);break; /* w */ case 115: rmove_elbow(-rinc);break; /* s */ case 101: rmove_pitch(rinc);break; /* e */ case 100: rmove_pitch(-rinc);break; /* d */ case 114: rmove_turnhand(rinc);break; /* r */ case 116: rmove_turnhand(-rinc);break; /* t */ case 102: rmove_grip(1);break; /* f */ case 103: rmove_grip(0);break; /* g */ case 45: /* - */ rinc -= rinc/2; if (rinc < MIN_INC) rinc=MIN_INC; show_panel(6,itoa(rinc)); break; case 43: /* + */ rinc = rinc < 100 ? 100:rinc+100; if (rinc > MAX_INC) rinc= MAX_INC; show_panel(6,itoa(rinc)); break; case 68: posdata[storage_pos].saved=0; /* D */ show_panel(7,itoa(storage_pos));break; case 44: storage_pos+=49; /* , */ case 5: storage_pos++ ; /* CRSR_left */ if (storage_pos > POS_SPACE) storage_pos=POS_SPACE; show_panel(7,itoa(storage_pos)); break; case 46: storage_pos-=49; /* . */ case 4: storage_pos-- ; /* CRSR_right */ if (storage_pos < 1) storage_pos=1; show_panel(7,itoa(storage_pos)); break; case 2: store_position(storage_pos);break; /* CRSR_down */ case 3: recall_position(storage_pos);break;/* CRSR_up */ case 71: rsend("RN 1");break; /* SHIFT_G */ case 7: run_program();break; /* CTRL_G */ case 65 : load_posdata(); /* CTRL_CRSR_UP" */ show_panel(7,itoa(storage_pos));break; case 66 : save_posdata();break; /* CTRL_CRSR_DOWN */ } } }
int GrowToolbar::event_handler( GlowWind *w, glow_eEvent event, int x, int y, double fx, double fy) { int sts, lsts; int hot_type; int idx, mask_idx, category; double rx, ry; if ( invisible || dimmed) return 0; if ( !ctx->trace_started) return GrowNode::event_handler( w, event, x, y, fx, fy); switch ( event) { case glow_eEvent_Key_Right: case glow_eEvent_Key_Left: case glow_eEvent_Key_BackSpace: case glow_eEvent_Key_Return: case glow_eEvent_Key_Ascii: case glow_eEvent_Key_Up: case glow_eEvent_Key_Down: return 0; default: ; } // Convert koordinates to local koordinates trf.reverse( fx, fy, &rx, &ry); sts = 0; if ( event == ctx->event_move_node) { sts = nc->event_handler( w, event, rx, ry); if ( sts) { /* Register node for potential movement */ ctx->move_insert( this); store_position(); } return sts; } else if ( event == ctx->event_create_con) { return sts; } switch ( event) { case glow_eEvent_MB1Down: if ( ctx->trace_started) { sts = nc_event_handler( w, event, rx, ry, &idx); if ( sts) ((GrowNode *)nc->a.a[idx])->set_color_inverse(1); } break; case glow_eEvent_MB1Up: if ( ctx->trace_started) { sts = nc_event_handler( w, event, rx, ry, &idx); if ( sts) ((GrowNode *)nc->a.a[idx])->set_color_inverse(0); } break; case glow_eEvent_CursorMotion: { int redraw = 0; if ( ctx->hot_mode == glow_eHotMode_TraceAction) { if ( ctx->hot_found) sts = 0; else { if ( is_sensitive()) { sts = nc_event_handler( w, event, rx, ry, &idx); if ( sts) { ((GrowNode *)nc->a.a[idx])->set_hot(1); redraw = 1; ctx->hot_found = 1; } } } } else { if ( ctx->hot_found) sts = 0; else { sts = nc_event_handler( w, event, rx, ry, &idx); if ( sts) ctx->hot_found = 1; } } if ( sts && !hot && !(ctx->node_movement_active || ctx->node_movement_paste_active)) { if ( (hot_type = ctx->send_hot_request( this))) { if ( !ctx->trace_started) { ctx->gdraw->set_cursor( w, glow_eDrawCursor_CrossHair); hot = 1; redraw = 1; ctx->tiptext_event( this, x, y); } else if ( hot_type & glow_mHotType_CursorCrossHair) { ctx->gdraw->set_cursor( w, glow_eDrawCursor_CrossHair); hot_tool = idx + 1; lsts = get_mask_index( idx, &category, &mask_idx); if ( ODD(lsts)) ctx->tiptext_toolbar_event( this, x, y, category, mask_idx); redraw = 1; } else if ( hot_type & glow_mHotType_CursorHand) { ctx->gdraw->set_cursor( w, glow_eDrawCursor_Hand); hot_tool = idx + 1; lsts = get_mask_index( idx, &category, &mask_idx); if ( ODD(lsts)) ctx->tiptext_toolbar_event( this, x, y, category, mask_idx); redraw = 1; } } } if ( !sts && (( !ctx->trace_started && hot) || (ctx->trace_started && hot_tool))) { if ( !ctx->hot_found) ctx->gdraw->set_cursor( w, glow_eDrawCursor_Normal); if ( root_node) root_node->erase( w); else erase( w); if ( hot_tool) ((GrowNode *)nc->a.a[hot_tool - 1])->set_hot(0); hot_tool = 0; hot = 0; redraw = 1; ctx->tiptext->remove_text( this); } if ( redraw) { draw(); } break; } case glow_eEvent_MB1Click: sts = nc_event_handler( w, event, rx, ry, &idx); if ( sts) { lsts = get_mask_index( idx, &category, &mask_idx); if ( ODD(lsts)) ((GrowCtx *)ctx)->send_toolbar_callback( this, event, fx, fy, category, mask_idx); } break; default: sts = nc_event_handler( w, event, rx, ry, &idx); } return sts; }