📄 scicalc.cxx
字号:
ready = 1; } else { value[top] = 180.0 * value[top] / M_PI; set_display(value[top], NORM); ready = 1; };}voidSciCalc::cb_but_dr(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_dr_i(o, v);}inline voidSciCalc::cb_but_drg_i(Fl_Button *, void *){ drgmode++; drgmode %= 3; set_drgdisp();}voidSciCalc::cb_but_drg(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_drg_i(o, v);}inline voidSciCalc::cb_but_leftbr_i(Fl_Button *, void *){ add_left_bracket();}voidSciCalc::cb_but_leftbr(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_leftbr_i(o, v);}inline voidSciCalc::cb_but_rightbr_i(Fl_Button *, void *){ add_right_bracket();}voidSciCalc::cb_but_rightbr(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_rightbr_i(o, v);}inline voidSciCalc::cb_but_exch_i(Fl_Button *, void *){ exchange();}voidSciCalc::cb_but_exch(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_exch_i(o, v);}inline voidSciCalc::cb_but_invx_i(Fl_Button *, void *){ value[top] = 1.0 / value[top]; set_display(value[top], NORM); ready = 1;}voidSciCalc::cb_but_invx(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_invx_i(o, v);}inline voidSciCalc::cb_but_fact_i(Fl_Button *, void *){ factorial();}voidSciCalc::cb_but_fact(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_fact_i(o, v);}inline voidSciCalc::cb_but_Mplus_i(Fl_Button *, void *){ if (!inv) mem += value[top]; else mem -= value[top]; set_display(value[top], NORM); ready = 1; set_memdisp();}voidSciCalc::cb_but_Mplus(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_Mplus_i(o, v);}inline voidSciCalc::cb_but_Mmult_i(Fl_Button *, void *){ if (!inv) mem *= value[top]; else mem /= value[top]; set_display(value[top], NORM); ready = 1; set_memdisp();}voidSciCalc::cb_but_Mmult(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_Mmult_i(o, v);}inline voidSciCalc::cb_but_Mclear_i(Fl_Button *, void *v){ if (!inv) { mem = 0.0; set_display(value[top], NORM); ready = 1; set_memdisp(); } else memexch();}voidSciCalc::cb_but_Mclear(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_Mclear_i(o, v);}inline voidSciCalc::cb_but_Mst_i(Fl_Button *, void *){ mem = value[top]; set_display(value[top], NORM); ready = 1; set_memdisp();}voidSciCalc::cb_but_Mst(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_Mst_i(o, v);}inline voidSciCalc::cb_but_Mrc_i(Fl_Button *, void *){ value[top] = mem; set_display(value[top], NORM); ready = 1;}voidSciCalc::cb_but_Mrc(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_Mrc_i(o, v);}inline voidSciCalc::cb_check_inv_i(Fl_Button *, void *){ if (inv) { inv = 0; setnormlabels(); } else { inv = 1; setinvlabels(); };}voidSciCalc::cb_check_inv(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_check_inv_i(o, v);}inline voidSciCalc::cb_but_quit_i(Fl_Button *, void *){ main_window->hide(); delete main_window;}voidSciCalc::cb_but_quit(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_but_quit_i(o, v);}// this needs to show the sci button window and resize the simple button windowinline voidSciCalc::cb_to_sci_mode_i(Fl_Button * o, void *){ SciMode = TRUE; to_sci_mode->hide(); to_simple_mode->show(); check_inv->show(); num_mode_window->show(); sci_view_window->show(); sci_view_window->redraw(); tmp_y = 70 + (old_h - 70) * 4 / 10; tmp_h = old_h - tmp_y; SetButtonWindowGeometry(0, tmp_y, old_w, tmp_h, 5, 5); simple_view_window->resize(0, tmp_y, old_w, tmp_h); but_7->resize(FL_BUTT_GEO(1, 2)); but_8->resize(FL_BUTT_GEO(2, 2)); but_9->resize(FL_BUTT_GEO(3, 2)); but_4->resize(FL_BUTT_GEO(1, 3)); but_5->resize(FL_BUTT_GEO(2, 3)); but_6->resize(FL_BUTT_GEO(3, 3)); but_1->resize(FL_BUTT_GEO(1, 4)); but_2->resize(FL_BUTT_GEO(2, 4)); but_3->resize(FL_BUTT_GEO(3, 4)); but_0->resize(FL_BUTT_GEO(1, 5)); but_dot->resize(FL_BUTT_GEO(2, 5)); but_sign->resize(FL_BUTT_GEO(3, 5)); but_C->resize(FL_BUTT_GEO(4, 2)); but_AC->resize(FL_BUTT_GEO(5, 2)); but_X->resize(FL_BUTT_GEO(4, 3)); but_div->resize(FL_BUTT_GEO(5, 3)); but_plus->resize(FL_BUTT_GEO(4, 4)); but_minus->resize(FL_BUTT_GEO(5, 4)); but_pi->resize(FL_BUTT_GEO(4, 5)); but_eval->resize(FL_BUTT_GEO(5, 5)); but_Mplus->resize(FL_BUTT_GEO(1, 1)); but_Mmult->resize(FL_BUTT_GEO(2, 1)); but_Mclear->resize(FL_BUTT_GEO(3, 1)); but_Mst->resize(FL_BUTT_GEO(4, 1)); but_Mrc->resize(FL_BUTT_GEO(5, 1)); main_window->redraw();}voidSciCalc::cb_to_sci_mode(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_to_sci_mode_i(o, v);}// this needs to hide the sci button window and resize the simple button windowinline voidSciCalc::cb_to_simple_mode_i(Fl_Button * o, void *){ SciMode = FALSE; tmp_y = 70; tmp_h = old_h - tmp_y; sci_view_window->hide(); num_mode_window->hide(); check_inv->hide(); to_simple_mode->hide(); to_sci_mode->show(); radio_2->value(0); radio_8->value(0); radio_16->value(0); radio_10->value(1); SetButtonWindowGeometry(0, tmp_y, old_w, tmp_h, 5, 5); simple_view_window->resize(0, tmp_y, old_w, tmp_h); but_7->resize(FL_BUTT_GEO(1, 2)); but_8->resize(FL_BUTT_GEO(2, 2)); but_9->resize(FL_BUTT_GEO(3, 2)); but_4->resize(FL_BUTT_GEO(1, 3)); but_5->resize(FL_BUTT_GEO(2, 3)); but_6->resize(FL_BUTT_GEO(3, 3)); but_1->resize(FL_BUTT_GEO(1, 4)); but_2->resize(FL_BUTT_GEO(2, 4)); but_3->resize(FL_BUTT_GEO(3, 4)); but_0->resize(FL_BUTT_GEO(1, 5)); but_dot->resize(FL_BUTT_GEO(2, 5)); but_sign->resize(FL_BUTT_GEO(3, 5)); but_C->resize(FL_BUTT_GEO(4, 2)); but_AC->resize(FL_BUTT_GEO(5, 2)); but_X->resize(FL_BUTT_GEO(4, 3)); but_div->resize(FL_BUTT_GEO(5, 3)); but_plus->resize(FL_BUTT_GEO(4, 4)); but_minus->resize(FL_BUTT_GEO(5, 4)); but_pi->resize(FL_BUTT_GEO(4, 5)); but_eval->resize(FL_BUTT_GEO(5, 5)); but_Mplus->resize(FL_BUTT_GEO(1, 1)); but_Mmult->resize(FL_BUTT_GEO(2, 1)); but_Mclear->resize(FL_BUTT_GEO(3, 1)); but_Mst->resize(FL_BUTT_GEO(4, 1)); but_Mrc->resize(FL_BUTT_GEO(5, 1)); change_base(10); main_window->redraw();}voidSciCalc::cb_to_simple_mode(Fl_Button * o, void *v){ ((SciCalc *) v)->cb_to_simple_mode_i(o, v);}/* members *//********/SciCalc::SciCalc(bool Scientific = FALSE): Fl_Double_Window(0, 0, WIDTH, HEIGHT, "Calculator"){ SciMode = Scientific; old_w = WIDTH; old_h = HEIGHT; ButtonGeometryInvalidate(); { // // Main Calculator Container Window // Fl_Window *o = main_window = this; o->box(FL_UP_BOX); o->user_data((void *) (this)); { // // LED Display Window // Fl_Double_Window *o = status_window = new Fl_Double_Window(0, 0, WIDTH, 70); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); { StaticText *o = leddisplay = new StaticText(5, 3, WIDTH - 8, 24); o->box(FL_DOWN_BOX); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->labelfont(1); o->labelsize(16); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->align(FL_ALIGN_RIGHT | FL_ALIGN_INSIDE); status_window->add((Fl_Widget *) o); } { Fl_Group *o = out_data_group = new Fl_Group(((WIDTH - 135) / 2), 27, 136, 16); // o->color(46); { StaticText *o = box_DEGRAD = new StaticText(((WIDTH - 135) / 2), 29, 37, 15); //27 o->box(FL_ENGRAVED_BOX); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->callback((Fl_Callback *) cb_box_DEGRAD, this); o->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); out_data_group->add((Fl_Widget *) o); } { StaticText *o = box_bracket = new StaticText(((WIDTH - 135) / 2) + 36, 29, 65, 15); o->box(FL_ENGRAVED_BOX); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); out_data_group->add((Fl_Widget *) o); } { StaticText *o = box_M = new StaticText(((WIDTH - 135) / 2) + 100, 29, 37, 15); o->box(FL_ENGRAVED_BOX); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->callback((Fl_Callback *) cb_box_M, this); o->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); out_data_group->add((Fl_Widget *) o); } o->end(); status_window->add((Fl_Widget *) o); } // Remember to scale all of these... { // // Numbers Mode Window: 2, 8, 10, or 16 // Fl_Double_Window *o = num_mode_window = new Fl_Double_Window(((WIDTH - 93) / 2), 44, 93, 22); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); if (!SciMode) o->hide(); { Fl_Button *o = radio_2 = new Fl_Button(3, 4, 20, 15, "2"); o->type(102); o->labelsize(10); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->callback((Fl_Callback *) cb_radio_2, this); } { Fl_Button *o = radio_8 = new Fl_Button(24, 4, 21, 15, "8"); o->type(102); o->labelsize(10); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->callback((Fl_Callback *) cb_radio_8, this); } { Fl_Button *o = radio_10 = new Fl_Button(46, 4, 21, 15, "10"); o->type(102); o->value(1); o->labelsize(10); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->callback((Fl_Callback *) cb_radio_10, this); } { Fl_Button *o = radio_16 = new Fl_Button(68, 4, 21, 15, "16"); o->type(102); o->labelsize(10); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); o->selection_color(NxApp::Instance()-> getGlobalColor(HILIGHT)); o->labelcolor(NxApp::Instance()->getGlobalColor(APP_FG)); o->callback((Fl_Callback *) cb_radio_16, this); } o->end(); status_window->add((Fl_Widget *) o); } // // INV Button on SCI Mode's top left-hand side // { Fl_Button *o = check_inv = new Fl_Button((((WIDTH - 93) / 2) - 32) / 2, 46, WIDTH / 6 /*32 */ , 21, "inv"); if (!SciMode) o->hide(); o->type(1); o->labelfont(0); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->labelcolor(NxApp::Instance()->getGlobalColor(BUTTON_TEXT)); o->callback((Fl_Callback *) cb_check_inv, this); status_window->add((Fl_Widget *) o); } // // SCI button on Reg Mode's top right-hand side // { Fl_Button *o = to_sci_mode = new Fl_Button(WIDTH - ((((WIDTH - 93) / 2) - 32) / 2 + 29), 46, WIDTH / 6 /*29 */ , 21, "Sci"); if (SciMode) o->hide(); o->labelfont(0); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->labelcolor(NxApp::Instance()->getGlobalColor(BUTTON_TEXT)); o->callback((Fl_Callback *) cb_to_sci_mode, this); status_window->add((Fl_Widget *) o); } // REG button on SCI Mode's top right-hand side { Fl_Button *o = to_simple_mode = new Fl_Button(WIDTH - ((((WIDTH - 93) / 2) - 32) / 2 + 29), 46, WIDTH / 6 /*29 */ , 21, "Reg"); if (!SciMode) o->hide(); o->labelfont(0); o->labelsize(11); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->labelcolor(NxApp::Instance()->getGlobalColor(BUTTON_TEXT)); o->callback((Fl_Callback *) cb_to_simple_mode, this); status_window->add((Fl_Widget *) o); } } // This is the end of the status_window section { if (SciMode) { tmp_y = 70 + (HEIGHT - 70) * 4 / 10; } else { tmp_y = 70; } tmp_x = 0; tmp_h = HEIGHT - tmp_y; tmp_w = WIDTH; SetButtonWindowGeometry(tmp_x, tmp_y, tmp_w, tmp_h, 5, 5); // // Regular Mode Window // Fl_Double_Window *o = simple_view_window = new Fl_Double_Window(tmp_x, tmp_y, tmp_w, tmp_h); o->color(NxApp::Instance()->getGlobalColor(APP_BG)); { Fl_Button *o = but_7 = new Fl_Button(FL_BUTT_GEO(1, 2), "7"); o->box(FL_UP_BOX); o->shortcut(0x37); o->labelfont(1); o->labelsize(16); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->callback((Fl_Callback *) cb_but_7, this); simple_view_window->add((Fl_Widget *) o); } { Fl_Button *o = but_8 = new Fl_Button(FL_BUTT_GEO(2, 2), "8"); o->box(FL_UP_BOX); o->shortcut(0x38); o->labelfont(1); o->labelsize(16); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->callback((Fl_Callback *) cb_but_8, this); simple_view_window->add((Fl_Widget *) o); } { Fl_Button *o = but_9 = new Fl_Button(FL_BUTT_GEO(3, 2), "9"); o->box(FL_UP_BOX); o->shortcut(0x39); o->labelfont(1); o->labelsize(16); o->color(NxApp::Instance()->getGlobalColor(BUTTON_FACE)); o->selection_color(NxApp::Instance()-> getGlobalColor(BUTTON_PUSH)); o->callback((Fl_Callback *) cb_but_9, this); simple_view_window->add((Fl_Widget *) o); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -