static gint selection_popup_click (GtkWidget *w, gpointer p) { gchar *item = (gchar *) p; int ci = 0; if (!strcmp(item, _("Summary statistics"))) { ci = SUMMARY; } else if (!strcmp(item, _("Correlation matrix"))) { ci = CORR; } if (ci == CORR && missvals_in_selection()) { gchar *title = g_strdup_printf("gretl: %s", _("correlation matrix")); gretlopt opt = OPT_NONE; int resp; resp = uniform_corr_option(title, &opt); if (!canceled(resp)) { char *buf = main_window_selection_as_string(); if (buf != NULL) { do_menu_op(ci, buf, opt); free(buf); } } g_free(title); } else if (ci != 0) { char *buf = main_window_selection_as_string(); if (buf != NULL) { do_menu_op(ci, buf, OPT_NONE); free(buf); } } else if (!strcmp(item, _("Display values"))) { display_selected(); } else if (!strcmp(item, _("Cross-correlogram"))) { xcorrgm_callback(); } else if (!strcmp(item, _("Time series plot"))) { plot_from_selection(GR_PLOT); } else if (!strcmp(item, _("XY scatterplot"))) { plot_from_selection(GR_XY); } else if (!strcmp(item, _("Copy to clipboard"))) { csv_selected_to_clipboard(); } else if (!strcmp(item, _("Edit values"))) { show_spreadsheet(SHEET_EDIT_VARLIST); } else if (!strcmp(item, _("Delete"))) { delete_selected_vars(); } else if (!strcmp(item, _("Add logs"))) { add_logs_etc(LOGS, 0); } else if (!strcmp(item, _("Add differences"))) { add_logs_etc(DIFF, 0); } else if (!strcmp(item, _("Define list"))) { make_list_from_main(); } else if (!strcmp(item, _("Define new variable..."))) { genr_callback(); } gtk_widget_destroy(mdata->popup); return FALSE; }
QtCalculator :: QtCalculator( Calculator *_corba, QWidget *parent, const char *name ) : QDialog( parent, name ) { corba = _corba; mInternalSpacing=4; key_pressed = false; selection_timer = new QTimer; status_timer = new QTimer; connect(status_timer,SIGNAL(timeout()),this,SLOT(clear_status_label())); connect(selection_timer,SIGNAL(timeout()),this,SLOT(selection_timed_out())); readSettings(); QFont buttonfont( KGlobalSettings::generalFont() ); buttonfont.setStyleStrategy( QFont::PreferAntialias ); // Set the window caption/title // connect(kapp,SIGNAL(kdisplayPaletteChanged()),this,SLOT(set_colors())); // setCaption( kapp->caption() ); // create help button QPushButton *pb; pb = new QPushButton( this, "helpbutton" ); pb->setText( "kCalc" ); pb->setFont( QFont("times",12,QFont::Bold,FALSE) ); QToolTip::add( pb, i18n("KCalc Setup/Help") ); connect( pb, SIGNAL(clicked()), SLOT(configclicked()) ); // Create the display calc_display = new DLabel( this, "display" ); calc_display->setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); calc_display->setAlignment( AlignRight|AlignVCenter ); calc_display->setFocus(); calc_display->setFocusPolicy( QWidget::StrongFocus ); connect(calc_display,SIGNAL(clicked()),this,SLOT(display_selected())); statusINVLabel = new QLabel( this, "INV" ); Q_CHECK_PTR( statusINVLabel ); statusINVLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); statusINVLabel->setAlignment( AlignCenter ); statusINVLabel->setText("NORM"); statusHYPLabel = new QLabel( this, "HYP" ); Q_CHECK_PTR( statusHYPLabel ); statusHYPLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); statusHYPLabel->setAlignment( AlignCenter ); statusERRORLabel = new QLabel( this, "ERROR" ); Q_CHECK_PTR( statusERRORLabel ); statusERRORLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); statusERRORLabel->setAlignment( AlignLeft|AlignVCenter ); // create angle button group QAccel *accel = new QAccel( this ); QButtonGroup *angle_group = new QButtonGroup( 3, Horizontal,this, "AngleButtons" ); angle_group->setTitle(i18n( "Angle") ); anglebutton[0] = new QRadioButton( angle_group ); anglebutton[0]->setText( "&Deg" ) ; anglebutton[0]->setChecked( TRUE); accel->connectItem( accel->insertItem(Key_D + ALT), this , SLOT(Deg_Selected()) ); anglebutton[1] = new QRadioButton( angle_group ); anglebutton[1]->setText( "&Rad" ); accel->connectItem( accel->insertItem(Key_R + ALT), this , SLOT(Rad_Selected()) ); anglebutton[2] = new QRadioButton( angle_group ); anglebutton[2]->setText( "&Gra" ); accel->connectItem( accel->insertItem(Key_G + ALT), this , SLOT(Gra_Selected()) ); connect( angle_group, SIGNAL(clicked(int)), SLOT(angle_selected(int)) ); ////////////////////////////////////////////////////////////////////// // // Create Number Base Button Group // QButtonGroup *base_group = new QButtonGroup( 4, Horizontal,this, "BaseButtons" ); base_group->setTitle( i18n("Base") ); basebutton[0] = new QRadioButton( base_group ); basebutton[0]->setText( "&Hex" ); accel->connectItem( accel->insertItem(Key_H + ALT), this , SLOT(Hex_Selected()) ); basebutton[1] = new QRadioButton( base_group ); basebutton[1]->setText( "D&ec" ); basebutton[1]->setChecked(TRUE); accel->connectItem( accel->insertItem(Key_E + ALT), this , SLOT(Dec_Selected()) ); basebutton[2] = new QRadioButton( base_group ); basebutton[2]->setText( "&Oct" ); accel->connectItem( accel->insertItem(Key_O + ALT), this , SLOT(Oct_Selected()) ); basebutton[3] = new QRadioButton( base_group); basebutton[3]->setText( "&Bin" ); accel->connectItem( accel->insertItem(Key_B + ALT), this , SLOT(Bin_Selected()) ); connect( base_group, SIGNAL(clicked(int)), SLOT(base_selected(int)) ); //////////////////////////////////////////////////////////////////////// // // Create Calculator Buttons // // First the widgets that are the parents of the buttons mSmallPage = new QWidget(this); mLargePage = new QWidget(this); pbhyp = new QPushButton("Hyp", mSmallPage, "hypbutton" ); connect( pbhyp, SIGNAL(toggled(bool)), SLOT(pbhyptoggled(bool))); pbhyp->setToggleButton(TRUE); pbinv = new QPushButton( "Inv", mSmallPage, "InverseButton" ); connect( pbinv, SIGNAL(toggled(bool)), SLOT(pbinvtoggled(bool))); pbinv->setToggleButton(TRUE); pbA = new QPushButton("A",mSmallPage, "Abutton" ); connect( pbA, SIGNAL(toggled(bool)), SLOT(pbAtoggled(bool))); pbA->setToggleButton(TRUE); pbSin = new QPushButton("Sin",mSmallPage, "Sinbutton" ); connect( pbSin, SIGNAL(toggled(bool)), SLOT(pbSintoggled(bool))); pbSin->setToggleButton(TRUE); pbplusminus = new QPushButton( "+/-", mSmallPage, "plusminusbutton" ); connect( pbplusminus, SIGNAL(toggled(bool)), SLOT(pbplusminustoggled(bool))); pbplusminus->setToggleButton(TRUE); pbplusminus->setFont(buttonfont); pbB = new QPushButton("B", mSmallPage, "Bbutton" ); connect( pbB, SIGNAL(toggled(bool)), SLOT(pbBtoggled(bool))); pbB->setToggleButton(TRUE); pbCos = new QPushButton("Cos",mSmallPage, "Cosbutton" ); pbCos->setText( "Cos" ); connect( pbCos, SIGNAL(toggled(bool)), SLOT(pbCostoggled(bool))); pbCos->setToggleButton(TRUE); pbreci = new QPushButton("1/x",mSmallPage, "recibutton" ); connect( pbreci, SIGNAL(toggled(bool)), SLOT(pbrecitoggled(bool))); pbreci->setToggleButton(TRUE); pbC = new QPushButton( "C", mSmallPage, "Cbutton" ); connect( pbC, SIGNAL(toggled(bool)), SLOT(pbCtoggled(bool))); pbC->setToggleButton(TRUE); pbTan = new QPushButton("Tan" ,mSmallPage, "Tanbutton" ); connect( pbTan, SIGNAL(toggled(bool)), SLOT(pbTantoggled(bool))); pbTan->setToggleButton(TRUE); pbfactorial = new QPushButton("x!",mSmallPage, "factorialbutton" ); connect( pbfactorial, SIGNAL(toggled(bool)), SLOT(pbfactorialtoggled(bool))); pbfactorial->setToggleButton(TRUE); pbD = new QPushButton("D",mSmallPage, "Dbutton" ); connect( pbD, SIGNAL(toggled(bool)), SLOT(pbDtoggled(bool))); pbD->setToggleButton(TRUE); pblog = new QPushButton("Log",mSmallPage, "logbutton" ); connect( pblog, SIGNAL(toggled(bool)), SLOT(pblogtoggled(bool))); pblog->setToggleButton(TRUE); pbsquare = new QPushButton( "x^2", mSmallPage, "squarebutton" ); connect( pbsquare, SIGNAL(toggled(bool)), SLOT(pbsquaretoggled(bool))); pbsquare->setToggleButton(TRUE); pbE = new QPushButton("E",mSmallPage, "Ebutton" ); connect( pbE, SIGNAL(toggled(bool)), SLOT(pbEtoggled(bool))); pbE->setToggleButton(TRUE); pbln = new QPushButton( "Ln", mSmallPage, "lnbutton" ); connect( pbln, SIGNAL(toggled(bool)), SLOT(pblntoggled(bool))); pbln->setToggleButton(TRUE); pbpower = new QPushButton("x^y",mSmallPage, "powerbutton" ); connect( pbpower, SIGNAL(toggled(bool)), SLOT(pbpowertoggled(bool))); pbpower->setToggleButton(TRUE); pbF = new QPushButton("F",mSmallPage, "Fbutton" ); connect( pbF, SIGNAL(toggled(bool)), SLOT(pbFtoggled(bool))); pbF->setToggleButton(TRUE); pbEE = new QPushButton("EE",mLargePage, "EEbutton" ); pbEE->setToggleButton(TRUE); connect( pbEE, SIGNAL(toggled(bool)), SLOT(EEtoggled(bool))); pbMR = new QPushButton("MR",mLargePage, "MRbutton" ); connect( pbMR, SIGNAL(toggled(bool)), SLOT(pbMRtoggled(bool))); pbMR->setToggleButton(TRUE); pbMR->setFont(buttonfont); pbMplusminus = new QPushButton("M+-",mLargePage, "Mplusminusbutton" ); connect( pbMplusminus, SIGNAL(toggled(bool)), SLOT(pbMplusminustoggled(bool))); pbMplusminus->setToggleButton(TRUE); pbMC = new QPushButton("MC",mLargePage, "MCbutton" ); connect( pbMC, SIGNAL(toggled(bool)), SLOT(pbMCtoggled(bool))); pbMC->setToggleButton(TRUE); pbClear = new QPushButton("C",mLargePage, "Clearbutton" ); connect( pbClear, SIGNAL(toggled(bool)), SLOT(pbCleartoggled(bool))); pbClear->setToggleButton(TRUE); pbAC = new QPushButton("AC", mLargePage, "ACbutton" ); connect( pbAC, SIGNAL(toggled(bool)), SLOT(pbACtoggled(bool))); pbAC->setToggleButton(TRUE); pb7 = new QPushButton("7",mLargePage, "7button" ); connect( pb7, SIGNAL(toggled(bool)), SLOT(pb7toggled(bool))); pb7->setToggleButton(TRUE); pb8 = new QPushButton("8",mLargePage, "8button" ); connect( pb8, SIGNAL(toggled(bool)), SLOT(pb8toggled(bool))); pb8->setToggleButton(TRUE); pb9 = new QPushButton("9",mLargePage,"9button" ); connect( pb9, SIGNAL(toggled(bool)), SLOT(pb9toggled(bool))); pb9->setToggleButton(TRUE); pbparenopen = new QPushButton("(",mLargePage, "parenopenbutton" ); connect( pbparenopen, SIGNAL(toggled(bool)), SLOT(pbparenopentoggled(bool))); pbparenopen->setToggleButton(TRUE); pbparenclose = new QPushButton(")",mLargePage, "parenclosebutton" ); connect( pbparenclose, SIGNAL(toggled(bool)), SLOT(pbparenclosetoggled(bool))); pbparenclose->setToggleButton(TRUE); pband = new QPushButton("And",mLargePage, "andbutton" ); connect( pband, SIGNAL(toggled(bool)), SLOT(pbandtoggled(bool))); pband->setToggleButton(TRUE); pband->setFont(buttonfont); pb4 = new QPushButton("4",mLargePage, "4button" ); connect( pb4, SIGNAL(toggled(bool)), SLOT(pb4toggled(bool))); pb4->setToggleButton(TRUE); pb5 = new QPushButton("5",mLargePage, "5button" ); connect( pb5, SIGNAL(toggled(bool)), SLOT(pb5toggled(bool))); pb5->setToggleButton(TRUE); pb6 = new QPushButton("6",mLargePage, "6button" ); connect( pb6, SIGNAL(toggled(bool)), SLOT(pb6toggled(bool))); pb6->setToggleButton(TRUE); pbX = new QPushButton("X",mLargePage, "Multiplybutton" ); connect( pbX, SIGNAL(toggled(bool)), SLOT(pbXtoggled(bool))); pbX->setToggleButton(TRUE); pbdivision = new QPushButton("/",mLargePage, "divisionbutton" ); connect( pbdivision, SIGNAL(toggled(bool)), SLOT(pbdivisiontoggled(bool))); pbdivision->setToggleButton(TRUE); pbor = new QPushButton("Or",mLargePage, "orbutton" ); connect( pbor, SIGNAL(toggled(bool)), SLOT(pbortoggled(bool))); pbor->setToggleButton(TRUE); pb1 = new QPushButton("1",mLargePage, "1button" ); connect( pb1, SIGNAL(toggled(bool)), SLOT(pb1toggled(bool))); pb1->setToggleButton(TRUE); pb2 = new QPushButton("2",mLargePage, "2button" ); connect( pb2, SIGNAL(toggled(bool)), SLOT(pb2toggled(bool))); pb2->setToggleButton(TRUE); pb3 = new QPushButton("3",mLargePage, "3button" ); connect( pb3, SIGNAL(toggled(bool)), SLOT(pb3toggled(bool))); pb3->setToggleButton(TRUE); pbplus = new QPushButton("+",mLargePage, "plusbutton" ); connect( pbplus, SIGNAL(toggled(bool)), SLOT(pbplustoggled(bool))); pbplus->setToggleButton(TRUE); pbminus = new QPushButton("-",mLargePage, "minusbutton" ); connect( pbminus, SIGNAL(toggled(bool)), SLOT(pbminustoggled(bool))); pbminus->setToggleButton(TRUE); pbshift = new QPushButton("Lsh",mLargePage, "shiftbutton" ); connect( pbshift, SIGNAL(toggled(bool)), SLOT(pbshifttoggled(bool))); pbshift->setToggleButton(TRUE); pbperiod = new QPushButton(".",mLargePage, "periodbutton" ); connect( pbperiod, SIGNAL(toggled(bool)), SLOT(pbperiodtoggled(bool))); pbperiod->setToggleButton(TRUE); pb0 = new QPushButton("0",mLargePage, "0button" ); connect( pb0, SIGNAL(toggled(bool)), SLOT(pb0toggled(bool))); pb0->setToggleButton(TRUE); pbequal = new QPushButton("=",mLargePage, "equalbutton" ); connect( pbequal, SIGNAL(toggled(bool)), SLOT(pbequaltoggled(bool))); pbequal->setToggleButton(TRUE); pbpercent = new QPushButton("%",mLargePage, "percentbutton" ); connect( pbpercent, SIGNAL(toggled(bool)), SLOT(pbpercenttoggled(bool))); pbpercent->setToggleButton(TRUE); pbnegate = new QPushButton("Cmp",mLargePage, "OneComplementbutton" ); connect( pbnegate, SIGNAL(toggled(bool)), SLOT(pbnegatetoggled(bool))); pbnegate->setToggleButton(TRUE); pbmod = new QPushButton("Mod",mLargePage, "modbutton" ); connect( pbmod, SIGNAL(toggled(bool)), SLOT(pbmodtoggled(bool))); pbmod->setToggleButton(TRUE); QGridLayout *smallBtnLayout = new QGridLayout(mSmallPage, 6, 3, 0, mInternalSpacing); QGridLayout *largeBtnLayout = new QGridLayout(mLargePage, 5, 6, 0, mInternalSpacing); QHBoxLayout *topLayout = new QHBoxLayout(); QHBoxLayout *radioLayout = new QHBoxLayout(); QHBoxLayout *btnLayout = new QHBoxLayout(); QHBoxLayout *statusLayout = new QHBoxLayout(); // bring them all together QVBoxLayout *mainLayout = new QVBoxLayout(this, mInternalSpacing, mInternalSpacing ); mainLayout->addLayout(topLayout ); mainLayout->addLayout(radioLayout, 1); mainLayout->addLayout(btnLayout); mainLayout->addLayout(statusLayout); // button layout btnLayout->addWidget(mSmallPage,0,AlignTop); btnLayout->addSpacing(mInternalSpacing); btnLayout->addWidget(mLargePage,0,AlignTop); // small button layout smallBtnLayout->addWidget(pbhyp, 0, 0); smallBtnLayout->addWidget(pbinv, 0, 1); smallBtnLayout->addWidget(pbA, 0, 2); smallBtnLayout->addWidget(pbSin, 1, 0); smallBtnLayout->addWidget(pbplusminus, 1, 1); smallBtnLayout->addWidget(pbB, 1, 2); smallBtnLayout->addWidget(pbCos, 2, 0); smallBtnLayout->addWidget(pbreci, 2, 1); smallBtnLayout->addWidget(pbC, 2, 2); smallBtnLayout->addWidget(pbTan, 3, 0); smallBtnLayout->addWidget(pbfactorial, 3, 1); smallBtnLayout->addWidget(pbD, 3, 2); smallBtnLayout->addWidget(pblog, 4, 0); smallBtnLayout->addWidget(pbsquare, 4, 1); smallBtnLayout->addWidget(pbE, 4, 2); smallBtnLayout->addWidget(pbln, 5, 0); smallBtnLayout->addWidget(pbpower, 5, 1); smallBtnLayout->addWidget(pbF, 5, 2); smallBtnLayout->setRowStretch(0, 0); smallBtnLayout->setRowStretch(1, 0); smallBtnLayout->setRowStretch(2, 0); smallBtnLayout->setRowStretch(3, 0); smallBtnLayout->setRowStretch(4, 0); smallBtnLayout->setRowStretch(5, 0); // large button layout largeBtnLayout->addWidget(pbEE, 0, 0); largeBtnLayout->addWidget(pbMR, 0, 1); largeBtnLayout->addWidget(pbMplusminus, 0, 2); largeBtnLayout->addWidget(pbMC, 0, 3); largeBtnLayout->addWidget(pbClear, 0, 4); largeBtnLayout->addWidget(pbAC, 0, 5); largeBtnLayout->addWidget(pb7, 1, 0); largeBtnLayout->addWidget(pb8, 1, 1); largeBtnLayout->addWidget(pb9, 1, 2); largeBtnLayout->addWidget(pbparenopen, 1, 3); largeBtnLayout->addWidget(pbparenclose, 1, 4); largeBtnLayout->addWidget(pband, 1, 5); largeBtnLayout->addWidget(pb4, 2, 0); largeBtnLayout->addWidget(pb5, 2, 1); largeBtnLayout->addWidget(pb6, 2, 2); largeBtnLayout->addWidget(pbX, 2, 3); largeBtnLayout->addWidget(pbdivision, 2, 4); largeBtnLayout->addWidget(pbor, 2, 5); largeBtnLayout->addWidget(pb1, 3, 0); largeBtnLayout->addWidget(pb2, 3, 1); largeBtnLayout->addWidget(pb3, 3, 2); largeBtnLayout->addWidget(pbplus, 3, 3); largeBtnLayout->addWidget(pbminus, 3, 4); largeBtnLayout->addWidget(pbshift, 3, 5); largeBtnLayout->addWidget(pbperiod, 4, 0); largeBtnLayout->addWidget(pb0, 4, 1); largeBtnLayout->addWidget(pbequal, 4, 2); largeBtnLayout->addWidget(pbpercent, 4, 3); largeBtnLayout->addWidget(pbnegate, 4, 4); largeBtnLayout->addWidget(pbmod, 4, 5); largeBtnLayout->addColSpacing(0,10); largeBtnLayout->addColSpacing(1,10); largeBtnLayout->addColSpacing(2,10); largeBtnLayout->addColSpacing(3,10); largeBtnLayout->addColSpacing(4,10); topLayout->addWidget(pb); topLayout->addWidget(calc_display, 10); // radiobutton layout radioLayout->addWidget(base_group); radioLayout->addWidget(angle_group); // status layout statusLayout->addWidget(statusINVLabel); statusLayout->addWidget(statusHYPLabel); statusLayout->addWidget(statusERRORLabel, 10); mNumButtonList.append(pb0); mNumButtonList.append(pb1); mNumButtonList.append(pb2); mNumButtonList.append(pb3); mNumButtonList.append(pb4); mNumButtonList.append(pb5); mNumButtonList.append(pb6); mNumButtonList.append(pb7); mNumButtonList.append(pb8); mNumButtonList.append(pb9); mFunctionButtonList.append(pbhyp); mFunctionButtonList.append(pbinv); mFunctionButtonList.append(pbSin); mFunctionButtonList.append(pbplusminus); mFunctionButtonList.append(pbCos); mFunctionButtonList.append(pbreci); mFunctionButtonList.append(pbTan); mFunctionButtonList.append(pbfactorial); mFunctionButtonList.append(pblog); mFunctionButtonList.append(pbsquare); mFunctionButtonList.append(pbln); mFunctionButtonList.append(pbpower); mHexButtonList.append(pbA); mHexButtonList.append(pbB); mHexButtonList.append(pbC); mHexButtonList.append(pbD); mHexButtonList.append(pbE); mHexButtonList.append(pbF); mMemButtonList.append(pbEE); mMemButtonList.append(pbMR); mMemButtonList.append(pbMplusminus); mMemButtonList.append(pbMC); mMemButtonList.append(pbClear); mMemButtonList.append(pbAC); mOperationButtonList.append(pbX); mOperationButtonList.append(pbparenopen); mOperationButtonList.append(pbparenclose); mOperationButtonList.append(pband); mOperationButtonList.append(pbdivision); mOperationButtonList.append(pbor); mOperationButtonList.append(pbplus); mOperationButtonList.append(pbminus); mOperationButtonList.append(pbshift); mOperationButtonList.append(pbperiod); mOperationButtonList.append(pbequal); mOperationButtonList.append(pbpercent); mOperationButtonList.append(pbnegate); mOperationButtonList.append(pbmod); set_colors(); set_precision(); set_style(); updateGeometry(); setFixedHeight(minimumHeight()); InitializeCalculator(); }