GUI::GUI() { setWindowTitle("Generate Color Map"); setWindowIcon(QIcon(":cg-logo.png")); _brewerseq_widget = new ColorMapBrewerSequentialWidget; _brewerdiv_widget = new ColorMapBrewerDivergingWidget; _brewerqual_widget = new ColorMapBrewerQualitativeWidget; _plseq_lightness_widget = new ColorMapPLSequentialLightnessWidget; _plseq_saturation_widget = new ColorMapPLSequentialSaturationWidget; _plseq_rainbow_widget = new ColorMapPLSequentialRainbowWidget; _plseq_blackbody_widget = new ColorMapPLSequentialBlackBodyWidget; _pldiv_lightness_widget = new ColorMapPLDivergingLightnessWidget; _pldiv_saturation_widget = new ColorMapPLDivergingSaturationWidget; _plqual_hue_widget = new ColorMapPLQualitativeHueWidget; _cubehelix_widget = new ColorMapCubeHelixWidget; _moreland_widget = new ColorMapMorelandWidget; _mcnames_widget = new ColorMapMcNamesWidget; connect(_brewerseq_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_brewerdiv_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_brewerqual_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_plseq_lightness_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_plseq_saturation_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_plseq_rainbow_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_plseq_blackbody_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_pldiv_lightness_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_pldiv_saturation_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_plqual_hue_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_cubehelix_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_moreland_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); connect(_mcnames_widget, SIGNAL(colorMapChanged()), this, SLOT(update())); QWidget *widget = new QWidget; QGridLayout *layout = new QGridLayout; _category_widget = new QTabWidget(); _category_seq_widget = new QTabWidget(); _category_seq_widget->addTab(_brewerseq_widget, "Brewer-like"); _category_seq_widget->addTab(_plseq_lightness_widget, "PL Lightness"); _category_seq_widget->addTab(_plseq_saturation_widget, "PL Saturation"); _category_seq_widget->addTab(_plseq_rainbow_widget, "PL Rainbow"); _category_seq_widget->addTab(_plseq_blackbody_widget, "PL Black Body"); _category_seq_widget->addTab(_cubehelix_widget, "CubeHelix"); //_category_seq_widget->addTab(_mcnames_widget, "McNames"); connect(_category_seq_widget, SIGNAL(currentChanged(int)), this, SLOT(update())); _category_widget->addTab(_category_seq_widget, "Sequential"); _category_div_widget = new QTabWidget(); _category_div_widget->addTab(_brewerdiv_widget, "Brewer-like"); _category_div_widget->addTab(_pldiv_lightness_widget, "PL Lightness"); _category_div_widget->addTab(_pldiv_saturation_widget, "PL Saturation"); _category_div_widget->addTab(_moreland_widget, "Moreland"); connect(_category_div_widget, SIGNAL(currentChanged(int)), this, SLOT(update())); _category_widget->addTab(_category_div_widget, "Diverging"); _category_qual_widget = new QTabWidget(); _category_qual_widget->addTab(_brewerqual_widget, "Brewer-like"); _category_qual_widget->addTab(_plqual_hue_widget, "PL Hue"); connect(_category_qual_widget, SIGNAL(currentChanged(int)), this, SLOT(update())); _category_widget->addTab(_category_qual_widget, "Qualitative"); connect(_category_widget, SIGNAL(currentChanged(int)), this, SLOT(update())); layout->addWidget(_category_widget, 0, 0); _reference_label = new QLabel(_brewerseq_widget->reference()); _reference_label->setWordWrap(true); _reference_label->setOpenExternalLinks(true); layout->addWidget(_reference_label, 1, 0); layout->addItem(new QSpacerItem(0, 0), 2, 0); _clipped_label = new QLabel(""); layout->addWidget(_clipped_label, 3, 0); _colormap_label = new QLabel(); _colormap_label->setScaledContents(true); layout->addWidget(_colormap_label, 0, 1, 4, 1); QLabel* test_label = new QLabel("Test pattern " "<a href=\"http://peterkovesi.com/projects/colourmaps/colourmaptestimage.html\">" "designed by P. Kovesi</a>:"); test_label->setWordWrap(true); test_label->setOpenExternalLinks(true); layout->addWidget(test_label, 4, 0, 1, 2); _test_widget = new ColorMapTestWidget(); layout->addWidget(_test_widget, 5, 0, 1, 2); layout->setColumnStretch(0, 1); layout->setRowStretch(2, 1); widget->setLayout(layout); setCentralWidget(widget); QMenu* file_menu = menuBar()->addMenu("&File"); QAction* file_export_png_act = new QAction("Export as &PNG...", this); connect(file_export_png_act, SIGNAL(triggered()), this, SLOT(file_export_png())); file_menu->addAction(file_export_png_act); QAction* file_export_csv_act = new QAction("Export as &CSV...", this); connect(file_export_csv_act, SIGNAL(triggered()), this, SLOT(file_export_csv())); file_menu->addAction(file_export_csv_act); file_menu->addSeparator(); QAction* quit_act = new QAction("&Quit...", this); quit_act->setShortcut(QKeySequence::Quit); connect(quit_act, SIGNAL(triggered()), this, SLOT(close())); file_menu->addAction(quit_act); QMenu* edit_menu = menuBar()->addMenu("&Edit"); QAction* edit_reset_act = new QAction("&Reset", this); connect(edit_reset_act, SIGNAL(triggered()), this, SLOT(edit_reset())); edit_menu->addAction(edit_reset_act); QAction* edit_copy_as_img_act = new QAction("Copy as &image", this); connect(edit_copy_as_img_act, SIGNAL(triggered()), this, SLOT(edit_copy_as_img())); edit_menu->addAction(edit_copy_as_img_act); QAction* edit_copy_as_txt_act = new QAction("Copy as &text", this); connect(edit_copy_as_txt_act, SIGNAL(triggered()), this, SLOT(edit_copy_as_txt())); edit_copy_as_txt_act->setShortcut(QKeySequence::Copy); edit_menu->addAction(edit_copy_as_txt_act); QMenu* help_menu = menuBar()->addMenu("&Help"); QAction* help_about_act = new QAction("&About", this); connect(help_about_act, SIGNAL(triggered()), this, SLOT(help_about())); help_menu->addAction(help_about_act); show(); update(); }
void main_menu (void) { unsigned long choice; mloop: if (THREAD_KILL) return; printf ("\t Main Menu\n"); loop: printf ("\n"); printf ("\t 1. Test/Primenet\n"); printf ("\t 2. Test/Worker threads\n"); printf ("\t 3. Test/Status\n"); if (WORKER_THREADS_ACTIVE && active_workers_count () < WORKER_THREADS_ACTIVE) printf ("\t 4. Test/Continue or Stop\n"); else if (!WORKER_THREADS_ACTIVE || WORKER_THREADS_STOPPING) printf ("\t 4. Test/Continue\n"); else printf ("\t 4. Test/Stop\n"); printf ("\t 5. Test/Exit\n"); printf ("\t 6. Advanced/Test\n"); printf ("\t 7. Advanced/Time\n"); printf ("\t 8. Advanced/P-1\n"); printf ("\t 9. Advanced/ECM\n"); printf ("\t10. Advanced/Manual Communication\n"); printf ("\t11. Advanced/Unreserve Exponent\n"); printf ("\t12. Advanced/Quit Gimps\n"); printf ("\t13. Options/CPU\n"); printf ("\t14. Options/Preferences\n"); printf ("\t15. Options/Torture Test\n"); printf ("\t16. Options/Benchmark\n"); printf ("\t17. Help/About\n"); printf ("\t18. Help/About PrimeNet Server\n"); printf ("Your choice: "); choice = get_number (0); if (choice <= 0 || choice >= 19) { printf ("\t Invalid choice\n"); goto loop; } /* Display the main menu and switch off the users choice */ printf ("\n"); switch (choice) { /* Test/Primenet dialog */ case 1: test_primenet (); break; /* Test/User Information dialog */ case 2: test_worker_threads (); break; /* Test/Status message */ case 3: test_status (); askOK (); break; /* Test/Continue or Stop or Test/Continue or Test/Stop */ case 4: if (WORKER_THREADS_ACTIVE && active_workers_count () < WORKER_THREADS_ACTIVE) test_continue_or_stop (); else if (NUM_WORKER_THREADS > 1 && active_workers_count () < WORKER_THREADS_ACTIVE - 1) test_continue (); else if (!WORKER_THREADS_ACTIVE || WORKER_THREADS_STOPPING) { while (WORKER_THREADS_STOPPING) Sleep (50); linuxContinue ("Another mprime is running.\n", ALL_WORKERS, FALSE); } else if (active_workers_count () > 1) test_stop (); else stop_workers_for_escape (); break; /* Test/Exit */ case 5: { int counter = 0; if (WORKER_THREADS_ACTIVE && !WORKER_THREADS_STOPPING) stop_workers_for_escape (); while (WORKER_THREADS_STOPPING) { if (counter++ % 100 == 0) printf ("Waiting for worker threads to stop.\n"); Sleep (50); } } return; /* Advanced/Test dialog */ case 6: advanced_test (); break; /* Advanced/Time dialog */ case 7: advanced_time (); break; /* Advanced/P-1 dialog */ case 8: advanced_pminus1 (); break; /* Advanced/ECM dialog */ case 9: advanced_ecm (); break; /* Advanced/Manual Communication dialog */ case 10: advanced_manualcomm (); break; /* Advanced/Unreserve exponent dialog */ case 11: advanced_unreserve (); break; /* Advanced/Quit Gimps dialog */ case 12: advanced_quit (); break; /* Options/CPU dialog */ case 13: options_cpu (); break; /* Options/Preferences dialog */ case 14: options_preferences (); break; /* Options/Torture Test */ case 15: torture (); askOK (); break; /* Options/Benchmark Test */ case 16: LaunchBench (); askOK (); break; /* Help/About */ case 17: help_about (); break; /* Help/About PrimeNet Server */ case 18: help_about_server (); break; } goto mloop; }