Changeset 77 in projects


Ignore:
Timestamp:
Jul 26, 2013, 4:39:24 PM (6 years ago)
Author:
sven
Message:

Bugfixes, Recovered Exporting function, ...

Location:
paper-tape-project/trunk/visualisator
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • paper-tape-project/trunk/visualisator/Makefile

    r76 r77  
    66CFLAGS=-Wall
    77
    8 gtk: gtk.cc gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o
     8OBJECTS= gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o
     9
     10all:
     11        $(MAKE) cli && $(MAKE) gtk
     12
     13gtk: gtk.cc $(OBJECTS)
    914        $(CPP) $(GTKMM_CFLAGS) $^ -o $@ $(GTKMM_LIBS)
    1015
     
    1217        $(CC) $(CAIRO_CFLAGS) $^ $(CAIRO_LIBS) -lm -o $@
    1318
    14 
    15 #%.o: %.cc %.h
    16 #       $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $<
    17 
    18 
    19 gtkpapertape.o: gtkpapertape.cc gtkpapertape.h
    20         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertape.cc
    21 
    22 gtkpapertapeview.o: gtkpapertapeview.cc gtkpapertapeview.h
    23         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeview.cc
    24 
    25 gtkpapertapefile.o: gtkpapertapefile.cc gtkpapertapefile.h
    26         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapefile.cc
    27        
    28 gtkpapertapeexporter.o: gtkpapertapeexporter.cc gtkpapertapeexporter.h
    29         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeexporter.cc
    30 
    31 gtkpapertapecolor.o: gtkpapertapecolor.cc gtkpapertapecolor.h
    32         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapecolor.cc
    33 
    34 gtkpapertapezoom.o: gtkpapertapezoom.cc gtkpapertapezoom.h
    35         $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapezoom.cc
    36 
    3719lochstreifen.o: lochstreifen.c lochstreifen.h
    3820        $(CC) $(CFLAGS) $(CAIRO_CFLAGS) -c lochstreifen.c
    3921
     22%.o: %.cc %.h
     23        $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $<
     24
     25
    4026clean:
    4127        rm -f *.o cli gtk
     28
     29clean_backups:
     30        rm -v *~
  • paper-tape-project/trunk/visualisator/gtk.cc

    r76 r77  
    77
    88int main(int argc, char** argv) {
    9         fprintf(stderr, "ABC\n");
    109        Main loop(argc, argv);
    1110       
    1211        Gtk::Window win;
    13         win.set_title("Hello World");
     12        win.set_title("Paper-Tape Viewer");
    1413       
    1514        PaperTape tape(win);
  • paper-tape-project/trunk/visualisator/gtkpapertape.cc

    r76 r77  
    3333"      <menuitem action='SaveAs'/>"
    3434"      <separator/>"
    35 "      <menuitem action='ExportSVG'/>"
    36 "      <menuitem action='ExportPNG'/>"
     35"      <menuitem action='Export'/>"
    3736"      <separator/>"
    3837"      <menuitem action='Close'/>"
     
    105104"  <toolbar name='ToolBar'>"
    106105"    <toolitem action='New'/>"
    107 "    <toolitem action='NewFont'/>"
    108106"    <toolitem action='Open'/>"
     107"    <toolitem action='Export'/>"
    109108"    <separator/>"
    110109"    <toolitem action='ZoomIn'/>"
     
    162161        { "Save", GTK_STOCK_SAVE },
    163162        { "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" },
    166164        { "Close", GTK_STOCK_CLOSE, "Close", NULL, "Close opened file." },
    167165};
     
    251249       
    252250        if(name == "New") {
    253                 //new_file();
     251                //new_file(); // gibts nicht mehr
    254252        } else if(name == "NewFont") {
    255253                std::cout << "To be implemented.";
     
    262260        } else if(name == "SaveAs") {
    263261                model->saveAs();
    264         } else if(name == "ExportSVG" || name == "ExportPNG") {
     262        } else if(name == "Export") {
    265263                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_SAVE
    274                 );
    275                 dialog->add_button("Export", RESPONSE_OK); // Stock::SAVE
    276                 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 widget
    289                 VBox extra_widget(FALSE, 10);
    290                 Expander file_types_expander("Export file type: Detect by suffix"); // Dateityp: Nach Endung
    291                 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 bar
    317                         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                         } else
    342                                 std::cout << "Export damaged!\n";
    343                                 */
    344                 //}
    345264        } else if(name == "Close") {
    346265                model->close();
     
    380299                //   Paper Tape Suite
    381300        } else if(name == "FileMenu") {
    382                 std::cout << "Strange: Called " << name << "\n";
     301                // Menuklick ist egal
     302                //std::cout << "Strange: Called " << name << "\n";
    383303        } else if(name == "EditMenu") {
    384                 std::cout << "Strange: Called " << name << "\n";
     304                // Menuklick ist egal
     305                //std::cout << "Strange: Called " << name << "\n";
    385306        } else if(name == "ViewMenu") {
    386                 std::cout << "Strange: Called " << name << "\n";
     307                // Menuklick ist egal
     308                //std::cout << "Strange: Called " << name << "\n";
    387309        } else if(name == "ColorMenu") {
    388                 std::cout << "Strange: Called " << name << "\n";
     310                // Menuklick ist egal
     311                //std::cout << "Strange: Called " << name << "\n";
    389312        } else if(name == "WindowMenu") {
    390                 std::cout << "Strange: Called " << name << "\n";
     313                // Menuklick ist egal
     314                //std::cout << "Strange: Called " << name << "\n";
    391315        } else if(name == "HelpMenu") {
    392                 std::cout << "Strange: Called " << name << "\n";
     316                // Menuklick ist egal
     317                //std::cout << "Strange: Called " << name << "\n";
    393318        } else if(name == "Undo") {
    394319                std::cout << "Start Undo/redo engine for " << name << "\n";
     
    424349        this->parent_window = &parent_window;
    425350        this->model = new PaperTapeFile(this);
    426         printf("ABC\n");
    427351        this->view = new PaperTapeView(this);
    428                
     352
     353        // size constraints
     354        parent_window.set_default_size(600,200);
    429355        this->make_menu();
    430356
     
    440366        ScrolledWindow* win = new ScrolledWindow();
    441367        win->set_policy(POLICY_ALWAYS, POLICY_ALWAYS);
    442        
    443         //VBox *vbox = new VBox(TRUE, 0);
    444         //vbox->add(*view);
    445        
    446368        win->add(*view);
    447        
    448369        view->set_redraw_on_allocate(true);
    449370               
    450371        // set up ourself (we are a container)
    451372        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         */
    461373        this->show_all();
    462374       
    463         // these two lines work:
    464         //this->add(*view);
    465         //view->show();
    466375}
  • paper-tape-project/trunk/visualisator/gtkpapertapecolor.cc

    r76 r77  
    3030) {
    3131        PaperTapeColor* obj = new PaperTapeColor(action_base_name);
    32         std::cout << "HALLO\n";
    3332        Glib::RefPtr<PaperTapeColor> ref(obj);
    3433       
  • paper-tape-project/trunk/visualisator/gtkpapertapeexporter.cc

    r76 r77  
    1010using namespace Cairo;
    1111
     12/*
    1213PaperTapeExporter::PaperTapeExporter(PaperTapeView& view)
    1314:
     
    1516{
    1617        PaperTapeExporter(*view.controller->parent_window, view.lochstreifen);
    17 }
     18}*/
    1819
    1920PaperTapeExporter::PaperTapeExporter(Window& parent, const LOCHSTREIFEN* ls)
     
    3435        set_modal(true);
    3536        set_transient_for(parent);
    36         printf("TEst\n");
    3737
    3838        // Filters, just for the optics ;-)
     
    4141        exporter_filter->add_pattern("*.png");
    4242        exporter_filter->set_name("Exportable files (*.svg, *.png)");
    43         printf("TEst\n");
    4443        add_filter(*exporter_filter);
    4544        FileFilter* all_files = manage(new FileFilter);
     
    4847
    4948        // Make extra widget
    50         //VBox* extra_widget = new VBox(FALSE, 10);
    5149        Frame* file_types_expander = manage(new Frame("Export file type: Detect by suffix")); // Dateityp: Nach Endung
    5250        VBox* file_types_box = manage(new VBox(TRUE, 2));
    5351        RadioButtonGroup file_types_group;
    54         printf("TEst\n");
    5552        type_auto_select.set_label("Detect type automatially by suffix");
    5653        type_svg.set_label("Export to SVG file");
    5754        type_png.set_label("Export to PNG file");
    58         printf("TEst\n");
    5955        type_auto_select.set_group(file_types_group); type_svg.set_group(file_types_group); type_png.set_group(file_types_group);
    6056        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");
    6757        file_types_expander->add(*file_types_box);
    6858        extra_widget.add(*file_types_expander);
    6959
    70                 printf("TEst\n");
    7160        CheckButton* keep_selections = manage(new CheckButton("Export with current selection"));
    7261        extra_widget.add(*keep_selections);
     
    7463
    7564        set_extra_widget(extra_widget);
    76         printf("TEst\n");
    7765}
    7866
     
    8876        // so:
    8977       
    90         printf("TEst\n");
    9178        cancel_button->set_sensitive(true); // doesn't work, too! :/
    9279        // enable cancel action
    9380        cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel));
    94         printf("TEst\n");
    9581        this->signal_hide().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel));
    9682        // set up cancel_export variable
    9783        this->cancel_export = false;
    9884       
    99         printf("TEst\n");
    10085        progress.set_text("Export running...");
    10186        extra_widget.add(progress);
    102         printf("TEst\n");
    10387        extra_widget.show_all();
    10488       
    10589        if(type_auto_select.get_active()) {
    106                 printf("TEst\n");
     90                printf("Auto selection of file type...\n");
    10791                // auto selection of file type
    10892                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();
    134120                        }
    135                         err.hide();
    136                 }
    137121                } catch(...) {
    138122                        std::cout << "Caught something nasty!\n";
     
    144128        lochstreifen_get_target_dimensions(l, (int*)&width, (int*)&height);
    145129
    146         std::cout << "HOWDY\n";
    147130        if(type_svg.get_active()) {
    148131                // we make a SVG picture
     
    167150
    168151                */
     152                // TODO: Stuerzt zuverlaessig ab.
     153               
    169154                Cairo::RefPtr<ImageSurface> surface = ImageSurface::create(FORMAT_ARGB32, (int)width, (int)height);
    170155                Cairo::RefPtr<Context> cr = Context::create(surface);
  • paper-tape-project/trunk/visualisator/gtkpapertapeexporter.h

    r76 r77  
    2929
    3030class PaperTapeExporter : public FileChooserDialog {
    31         //Window* parent;
    3231        LOCHSTREIFEN* l;
    3332       
     
    4746        LOCHSTREIFEN* lochstreifen;
    4847       
    49         PaperTapeExporter(PaperTapeView& view);
     48        //PaperTapeExporter(PaperTapeView& view);
    5049        PaperTapeExporter(Window& parent, const LOCHSTREIFEN* l);
    5150        bool run_export();
  • paper-tape-project/trunk/visualisator/gtkpapertapeview.cc

    r76 r77  
    216216
    217217void PaperTapeView::export_image() {
    218         std::cout << "Creating object:\n";
     218        std::cout << "Creating PaperTapeExporter:\n";
    219219        PaperTapeExporter program(*controller->parent_window, lochstreifen);
    220         std::cout << "STARTING EXPORT\n";
    221220        if(program.run_export()) {
    222221                std::cout << "Export handled nicely\n";
  • paper-tape-project/trunk/visualisator/lochstreifen.c

    r76 r77  
    8484        LOCHSTREIFEN *l = malloc (sizeof(LOCHSTREIFEN));
    8585        #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)) \
    8788                        l->name = cairo_pattern_create_rgba(r,g,b,a); }
    8889       
     
    9293        l->highlight_region_start     = template->highlight_region_start;
    9394        l->highlight_region_end       = template->highlight_region_end;
     95        printf("Copy1\n");
    9496        COPY_RGBA_PATTERN(highlight_region_color);
     97        printf("Copy2\n");
    9598        l->highlight_row_number       = template->highlight_row_number;
    9699        COPY_RGBA_PATTERN(highlight_row_color);
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License