Changeset 77 in projects
- Timestamp:
- Jul 26, 2013, 4:39:24 PM (11 years ago)
- Location:
- paper-tape-project/trunk/visualisator
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
paper-tape-project/trunk/visualisator/Makefile
r76 r77 6 6 CFLAGS=-Wall 7 7 8 gtk: gtk.cc gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o 8 OBJECTS= gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o 9 10 all: 11 $(MAKE) cli && $(MAKE) gtk 12 13 gtk: gtk.cc $(OBJECTS) 9 14 $(CPP) $(GTKMM_CFLAGS) $^ -o $@ $(GTKMM_LIBS) 10 15 … … 12 17 $(CC) $(CAIRO_CFLAGS) $^ $(CAIRO_LIBS) -lm -o $@ 13 18 14 15 #%.o: %.cc %.h16 # $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $<17 18 19 gtkpapertape.o: gtkpapertape.cc gtkpapertape.h20 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertape.cc21 22 gtkpapertapeview.o: gtkpapertapeview.cc gtkpapertapeview.h23 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeview.cc24 25 gtkpapertapefile.o: gtkpapertapefile.cc gtkpapertapefile.h26 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapefile.cc27 28 gtkpapertapeexporter.o: gtkpapertapeexporter.cc gtkpapertapeexporter.h29 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeexporter.cc30 31 gtkpapertapecolor.o: gtkpapertapecolor.cc gtkpapertapecolor.h32 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapecolor.cc33 34 gtkpapertapezoom.o: gtkpapertapezoom.cc gtkpapertapezoom.h35 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapezoom.cc36 37 19 lochstreifen.o: lochstreifen.c lochstreifen.h 38 20 $(CC) $(CFLAGS) $(CAIRO_CFLAGS) -c lochstreifen.c 39 21 22 %.o: %.cc %.h 23 $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $< 24 25 40 26 clean: 41 27 rm -f *.o cli gtk 28 29 clean_backups: 30 rm -v *~ -
paper-tape-project/trunk/visualisator/gtk.cc
r76 r77 7 7 8 8 int main(int argc, char** argv) { 9 fprintf(stderr, "ABC\n");10 9 Main loop(argc, argv); 11 10 12 11 Gtk::Window win; 13 win.set_title(" Hello World");12 win.set_title("Paper-Tape Viewer"); 14 13 15 14 PaperTape tape(win); -
paper-tape-project/trunk/visualisator/gtkpapertape.cc
r76 r77 33 33 " <menuitem action='SaveAs'/>" 34 34 " <separator/>" 35 " <menuitem action='ExportSVG'/>" 36 " <menuitem action='ExportPNG'/>" 35 " <menuitem action='Export'/>" 37 36 " <separator/>" 38 37 " <menuitem action='Close'/>" … … 105 104 " <toolbar name='ToolBar'>" 106 105 " <toolitem action='New'/>" 107 " <toolitem action='NewFont'/>"108 106 " <toolitem action='Open'/>" 107 " <toolitem action='Export'/>" 109 108 " <separator/>" 110 109 " <toolitem action='ZoomIn'/>" … … 162 161 { "Save", GTK_STOCK_SAVE }, 163 162 { "SaveAs", GTK_STOCK_SAVE_AS }, 164 { "ExportSVG", NULL, "Export to PNG...", NULL, "Export complete papertape with current settings to PNG graphics" }, 165 { "ExportPNG", NULL, "Export to SVG...", NULL, "Export complete papertape with current settings to SVG graphics" }, 163 { "Export", GTK_STOCK_SAVE, "Export...", NULL, "Export complete papertape with current settings to PNG or SVG picture" }, 166 164 { "Close", GTK_STOCK_CLOSE, "Close", NULL, "Close opened file." }, 167 165 }; … … 251 249 252 250 if(name == "New") { 253 //new_file(); 251 //new_file(); // gibts nicht mehr 254 252 } else if(name == "NewFont") { 255 253 std::cout << "To be implemented."; … … 262 260 } else if(name == "SaveAs") { 263 261 model->saveAs(); 264 } else if(name == "Export SVG" || name == "ExportPNG") {262 } else if(name == "Export") { 265 263 view->export_image(); 266 267 /*PaperTapeFileType target_format;268 target_format = (name == "ExportSVG") ? SVG : PNG;269 // Export file dialog.270 FileChooserDialog* dialog = new FileChooserDialog(271 *this->parent_window,272 "Select name for graphics file",273 FILE_CHOOSER_ACTION_SAVE274 );275 dialog->add_button("Export", RESPONSE_OK); // Stock::SAVE276 dialog->add_button(GTK_STOCK_CANCEL, RESPONSE_CANCEL);277 dialog->set_do_overwrite_confirmation(true);278 dialog->set_modal(true);279 dialog->set_transient_for(*this->parent_window);280 281 // Filters, just for the optics ;-)282 FileFilter exporter_filter;283 exporter_filter.add_pattern("*.svg");284 exporter_filter.add_pattern("*.png");285 exporter_filter.set_name("SVG and PNG files");286 dialog->add_filter(exporter_filter);287 288 // Make extra widget289 VBox extra_widget(FALSE, 10);290 Expander file_types_expander("Export file type: Detect by suffix"); // Dateityp: Nach Endung291 VBox file_types_box(TRUE, 2);292 RadioButtonGroup file_types_group;293 RadioButton file_types[3];294 file_types[0].set_label("Detect type automatially by suffix");295 file_types[1].set_label("Export to SVG file");296 file_types[2].set_label("Export to PNG file");297 for(int i=0; i < sizeof file_types / sizeof *file_types; i++) {298 file_types[i].set_group(file_types_group);299 file_types_box.add(file_types[i]);300 }301 file_types_expander.add(file_types_box);302 extra_widget.add(file_types_expander);303 304 CheckButton keep_selections("Export with current selection");305 extra_widget.add(keep_selections);306 extra_widget.show_all();307 308 dialog->set_extra_widget(extra_widget);309 310 // run it!311 if(dialog->run() == RESPONSE_CANCEL) {312 delete dialog;313 return; // canceled.314 }315 else {316 // now disable all and add a progress bar317 dialog->set_sensitive(false);318 dialog->set_response_sensitive(RESPONSE_CANCEL, true);319 320 ProgressBar* progress = new ProgressBar();321 progress->set_text("Export to ABC: 0%");322 extra_widget.add(*progress);323 extra_widget.show_all();324 std::cout << "Well, EXPORT!\n";325 326 for(int x=0; x < 100; x++) {327 progress->set_fraction(x/100.0);328 progress->set_text(g_strdup_printf("Export to ABC: %i%%", x));329 330 while( Gtk::Main::events_pending() )331 Gtk::Main::iteration();332 std::cout << "Progressing...\n";333 Glib::usleep(1000*1000);334 }335 336 delete dialog;*/337 338 339 /*if(view->export_file(target_format, dialog.get_filename())) {340 std::cout << "Export okay!\n";341 } else342 std::cout << "Export damaged!\n";343 */344 //}345 264 } else if(name == "Close") { 346 265 model->close(); … … 380 299 // Paper Tape Suite 381 300 } else if(name == "FileMenu") { 382 std::cout << "Strange: Called " << name << "\n"; 301 // Menuklick ist egal 302 //std::cout << "Strange: Called " << name << "\n"; 383 303 } else if(name == "EditMenu") { 384 std::cout << "Strange: Called " << name << "\n"; 304 // Menuklick ist egal 305 //std::cout << "Strange: Called " << name << "\n"; 385 306 } else if(name == "ViewMenu") { 386 std::cout << "Strange: Called " << name << "\n"; 307 // Menuklick ist egal 308 //std::cout << "Strange: Called " << name << "\n"; 387 309 } else if(name == "ColorMenu") { 388 std::cout << "Strange: Called " << name << "\n"; 310 // Menuklick ist egal 311 //std::cout << "Strange: Called " << name << "\n"; 389 312 } else if(name == "WindowMenu") { 390 std::cout << "Strange: Called " << name << "\n"; 313 // Menuklick ist egal 314 //std::cout << "Strange: Called " << name << "\n"; 391 315 } else if(name == "HelpMenu") { 392 std::cout << "Strange: Called " << name << "\n"; 316 // Menuklick ist egal 317 //std::cout << "Strange: Called " << name << "\n"; 393 318 } else if(name == "Undo") { 394 319 std::cout << "Start Undo/redo engine for " << name << "\n"; … … 424 349 this->parent_window = &parent_window; 425 350 this->model = new PaperTapeFile(this); 426 printf("ABC\n");427 351 this->view = new PaperTapeView(this); 428 352 353 // size constraints 354 parent_window.set_default_size(600,200); 429 355 this->make_menu(); 430 356 … … 440 366 ScrolledWindow* win = new ScrolledWindow(); 441 367 win->set_policy(POLICY_ALWAYS, POLICY_ALWAYS); 442 443 //VBox *vbox = new VBox(TRUE, 0);444 //vbox->add(*view);445 446 368 win->add(*view); 447 448 369 view->set_redraw_on_allocate(true); 449 370 450 371 // set up ourself (we are a container) 451 372 this->add(*win); 452 453 /*Viewport port(454 *new Adjustment(0, 0, 100),455 *new Adjustment(0, 0, 100)456 );457 port.add(*view);458 459 this->add(port);460 */461 373 this->show_all(); 462 374 463 // these two lines work:464 //this->add(*view);465 //view->show();466 375 } -
paper-tape-project/trunk/visualisator/gtkpapertapecolor.cc
r76 r77 30 30 ) { 31 31 PaperTapeColor* obj = new PaperTapeColor(action_base_name); 32 std::cout << "HALLO\n";33 32 Glib::RefPtr<PaperTapeColor> ref(obj); 34 33 -
paper-tape-project/trunk/visualisator/gtkpapertapeexporter.cc
r76 r77 10 10 using namespace Cairo; 11 11 12 /* 12 13 PaperTapeExporter::PaperTapeExporter(PaperTapeView& view) 13 14 : … … 15 16 { 16 17 PaperTapeExporter(*view.controller->parent_window, view.lochstreifen); 17 } 18 }*/ 18 19 19 20 PaperTapeExporter::PaperTapeExporter(Window& parent, const LOCHSTREIFEN* ls) … … 34 35 set_modal(true); 35 36 set_transient_for(parent); 36 printf("TEst\n");37 37 38 38 // Filters, just for the optics ;-) … … 41 41 exporter_filter->add_pattern("*.png"); 42 42 exporter_filter->set_name("Exportable files (*.svg, *.png)"); 43 printf("TEst\n");44 43 add_filter(*exporter_filter); 45 44 FileFilter* all_files = manage(new FileFilter); … … 48 47 49 48 // Make extra widget 50 //VBox* extra_widget = new VBox(FALSE, 10);51 49 Frame* file_types_expander = manage(new Frame("Export file type: Detect by suffix")); // Dateityp: Nach Endung 52 50 VBox* file_types_box = manage(new VBox(TRUE, 2)); 53 51 RadioButtonGroup file_types_group; 54 printf("TEst\n");55 52 type_auto_select.set_label("Detect type automatially by suffix"); 56 53 type_svg.set_label("Export to SVG file"); 57 54 type_png.set_label("Export to PNG file"); 58 printf("TEst\n");59 55 type_auto_select.set_group(file_types_group); type_svg.set_group(file_types_group); type_png.set_group(file_types_group); 60 56 file_types_box->add(type_auto_select); file_types_box->add(type_svg); file_types_box->add(type_png); 61 /*RadioButton* file_types[3] = { &type_auto_select, &type_svg, &type_png }62 for(unsigned int i=0; i < sizeof file_types / sizeof *file_types; i++) {63 file_types[i]->set_group(file_types_group);64 file_types_box->add(*file_types[i]);65 }*/66 printf("TEst\n");67 57 file_types_expander->add(*file_types_box); 68 58 extra_widget.add(*file_types_expander); 69 59 70 printf("TEst\n");71 60 CheckButton* keep_selections = manage(new CheckButton("Export with current selection")); 72 61 extra_widget.add(*keep_selections); … … 74 63 75 64 set_extra_widget(extra_widget); 76 printf("TEst\n");77 65 } 78 66 … … 88 76 // so: 89 77 90 printf("TEst\n");91 78 cancel_button->set_sensitive(true); // doesn't work, too! :/ 92 79 // enable cancel action 93 80 cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel)); 94 printf("TEst\n");95 81 this->signal_hide().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel)); 96 82 // set up cancel_export variable 97 83 this->cancel_export = false; 98 84 99 printf("TEst\n");100 85 progress.set_text("Export running..."); 101 86 extra_widget.add(progress); 102 printf("TEst\n");103 87 extra_widget.show_all(); 104 88 105 89 if(type_auto_select.get_active()) { 106 printf(" TEst\n");90 printf("Auto selection of file type...\n"); 107 91 // auto selection of file type 108 92 try { 109 if(get_filename().substr(get_filename().length()-3-1, 3) == "svg") 110 type_svg.set_active(true); 111 else if(get_filename().substr(get_filename().length()-3-1, 3) == "png") 112 type_png.set_active(true); 113 else { 114 // display dialog to clear the question which file type 115 // the user wants 116 MessageDialog err(*this, 117 "File type could not be detected", 118 false, // markup 119 MESSAGE_ERROR, 120 BUTTONS_CANCEL, 121 true); 122 err.set_secondary_text("Your filename <b>"+get_filename()+"</b> " 123 "does not end with a typical suffix like .png or .svg. Therefore " 124 "the wanted file type could not be clearly detected. Please select one:"); 125 err.property_secondary_use_markup().set_value(true); 126 err.add_button("PNG Image", 42); 127 err.add_button("SVG Image", 43); 128 switch(err.run()) { 129 case 42: type_png.set_active(true); break; 130 case 43: type_svg.set_active(true); break; 131 default: 132 // cancel 133 return false; 93 if(Glib::Regex::match_simple("svg$", get_filename(), Glib::REGEX_CASELESS)) 94 type_svg.set_active(true); 95 else if(Glib::Regex::match_simple("png$", get_filename(), Glib::REGEX_CASELESS)) 96 type_png.set_active(true); 97 else { 98 // display dialog to clear the question which file type 99 // the user wants 100 MessageDialog err(*this, 101 "File type could not be detected", 102 false, // markup 103 MESSAGE_ERROR, 104 BUTTONS_CANCEL, 105 true); 106 err.set_secondary_text("Your filename <b>"+get_filename()+"</b> " 107 "does not end with a typical suffix like .png or .svg. Therefore " 108 "the wanted file type could not be clearly detected. Please select one:"); 109 err.property_secondary_use_markup().set_value(true); 110 err.add_button("PNG Image", 42); 111 err.add_button("SVG Image", 43); 112 switch(err.run()) { 113 case 42: type_png.set_active(true); break; 114 case 43: type_svg.set_active(true); break; 115 default: 116 // cancel 117 return false; 118 } 119 err.hide(); 134 120 } 135 err.hide();136 }137 121 } catch(...) { 138 122 std::cout << "Caught something nasty!\n"; … … 144 128 lochstreifen_get_target_dimensions(l, (int*)&width, (int*)&height); 145 129 146 std::cout << "HOWDY\n";147 130 if(type_svg.get_active()) { 148 131 // we make a SVG picture … … 167 150 168 151 */ 152 // TODO: Stuerzt zuverlaessig ab. 153 169 154 Cairo::RefPtr<ImageSurface> surface = ImageSurface::create(FORMAT_ARGB32, (int)width, (int)height); 170 155 Cairo::RefPtr<Context> cr = Context::create(surface); -
paper-tape-project/trunk/visualisator/gtkpapertapeexporter.h
r76 r77 29 29 30 30 class PaperTapeExporter : public FileChooserDialog { 31 //Window* parent;32 31 LOCHSTREIFEN* l; 33 32 … … 47 46 LOCHSTREIFEN* lochstreifen; 48 47 49 PaperTapeExporter(PaperTapeView& view);48 //PaperTapeExporter(PaperTapeView& view); 50 49 PaperTapeExporter(Window& parent, const LOCHSTREIFEN* l); 51 50 bool run_export(); -
paper-tape-project/trunk/visualisator/gtkpapertapeview.cc
r76 r77 216 216 217 217 void PaperTapeView::export_image() { 218 std::cout << "Creating object:\n";218 std::cout << "Creating PaperTapeExporter:\n"; 219 219 PaperTapeExporter program(*controller->parent_window, lochstreifen); 220 std::cout << "STARTING EXPORT\n";221 220 if(program.run_export()) { 222 221 std::cout << "Export handled nicely\n"; -
paper-tape-project/trunk/visualisator/lochstreifen.c
r76 r77 84 84 LOCHSTREIFEN *l = malloc (sizeof(LOCHSTREIFEN)); 85 85 #define COPY_RGBA_PATTERN(name) { double r,g,b,a; \ 86 if(!cairo_pattern_get_rgba(template->name, &r, &g, &b, &a)) \ 86 if(template->name != NULL && \ 87 !cairo_pattern_get_rgba(template->name, &r, &g, &b, &a)) \ 87 88 l->name = cairo_pattern_create_rgba(r,g,b,a); } 88 89 … … 92 93 l->highlight_region_start = template->highlight_region_start; 93 94 l->highlight_region_end = template->highlight_region_end; 95 printf("Copy1\n"); 94 96 COPY_RGBA_PATTERN(highlight_region_color); 97 printf("Copy2\n"); 95 98 l->highlight_row_number = template->highlight_row_number; 96 99 COPY_RGBA_PATTERN(highlight_row_color);
Note: See TracChangeset
for help on using the changeset viewer.