Index: /paper-tape-project/trunk/visualisator/Makefile
===================================================================
--- /paper-tape-project/trunk/visualisator/Makefile (revision 76)
+++ /paper-tape-project/trunk/visualisator/Makefile (revision 77)
@@ -6,5 +6,10 @@
CFLAGS=-Wall
-gtk: gtk.cc gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o
+OBJECTS= gtkpapertape.o gtkpapertapeview.o gtkpapertapefile.o gtkpapertapecolor.o gtkpapertapezoom.o lochstreifen.o gtkpapertapeexporter.o
+
+all:
+ $(MAKE) cli && $(MAKE) gtk
+
+gtk: gtk.cc $(OBJECTS)
$(CPP) $(GTKMM_CFLAGS) $^ -o $@ $(GTKMM_LIBS)
@@ -12,30 +17,14 @@
$(CC) $(CAIRO_CFLAGS) $^ $(CAIRO_LIBS) -lm -o $@
-
-#%.o: %.cc %.h
-# $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $<
-
-
-gtkpapertape.o: gtkpapertape.cc gtkpapertape.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertape.cc
-
-gtkpapertapeview.o: gtkpapertapeview.cc gtkpapertapeview.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeview.cc
-
-gtkpapertapefile.o: gtkpapertapefile.cc gtkpapertapefile.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapefile.cc
-
-gtkpapertapeexporter.o: gtkpapertapeexporter.cc gtkpapertapeexporter.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapeexporter.cc
-
-gtkpapertapecolor.o: gtkpapertapecolor.cc gtkpapertapecolor.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapecolor.cc
-
-gtkpapertapezoom.o: gtkpapertapezoom.cc gtkpapertapezoom.h
- $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c gtkpapertapezoom.cc
-
lochstreifen.o: lochstreifen.c lochstreifen.h
$(CC) $(CFLAGS) $(CAIRO_CFLAGS) -c lochstreifen.c
+%.o: %.cc %.h
+ $(CPP) $(CFLAGS) $(GTKMM_CFLAGS) -c $<
+
+
clean:
rm -f *.o cli gtk
+
+clean_backups:
+ rm -v *~
Index: /paper-tape-project/trunk/visualisator/gtk.cc
===================================================================
--- /paper-tape-project/trunk/visualisator/gtk.cc (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtk.cc (revision 77)
@@ -7,9 +7,8 @@
int main(int argc, char** argv) {
- fprintf(stderr, "ABC\n");
Main loop(argc, argv);
Gtk::Window win;
- win.set_title("Hello World");
+ win.set_title("Paper-Tape Viewer");
PaperTape tape(win);
Index: /paper-tape-project/trunk/visualisator/gtkpapertape.cc
===================================================================
--- /paper-tape-project/trunk/visualisator/gtkpapertape.cc (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtkpapertape.cc (revision 77)
@@ -33,6 +33,5 @@
" "
" "
-" "
-" "
+" "
" "
" "
@@ -105,6 +104,6 @@
" "
" "
-" "
" "
+" "
" "
" "
@@ -162,6 +161,5 @@
{ "Save", GTK_STOCK_SAVE },
{ "SaveAs", GTK_STOCK_SAVE_AS },
- { "ExportSVG", NULL, "Export to PNG...", NULL, "Export complete papertape with current settings to PNG graphics" },
- { "ExportPNG", NULL, "Export to SVG...", NULL, "Export complete papertape with current settings to SVG graphics" },
+ { "Export", GTK_STOCK_SAVE, "Export...", NULL, "Export complete papertape with current settings to PNG or SVG picture" },
{ "Close", GTK_STOCK_CLOSE, "Close", NULL, "Close opened file." },
};
@@ -251,5 +249,5 @@
if(name == "New") {
- //new_file();
+ //new_file(); // gibts nicht mehr
} else if(name == "NewFont") {
std::cout << "To be implemented.";
@@ -262,85 +260,6 @@
} else if(name == "SaveAs") {
model->saveAs();
- } else if(name == "ExportSVG" || name == "ExportPNG") {
+ } else if(name == "Export") {
view->export_image();
-
- /*PaperTapeFileType target_format;
- target_format = (name == "ExportSVG") ? SVG : PNG;
- // Export file dialog.
- FileChooserDialog* dialog = new FileChooserDialog(
- *this->parent_window,
- "Select name for graphics file",
- FILE_CHOOSER_ACTION_SAVE
- );
- dialog->add_button("Export", RESPONSE_OK); // Stock::SAVE
- dialog->add_button(GTK_STOCK_CANCEL, RESPONSE_CANCEL);
- dialog->set_do_overwrite_confirmation(true);
- dialog->set_modal(true);
- dialog->set_transient_for(*this->parent_window);
-
- // Filters, just for the optics ;-)
- FileFilter exporter_filter;
- exporter_filter.add_pattern("*.svg");
- exporter_filter.add_pattern("*.png");
- exporter_filter.set_name("SVG and PNG files");
- dialog->add_filter(exporter_filter);
-
- // Make extra widget
- VBox extra_widget(FALSE, 10);
- Expander file_types_expander("Export file type: Detect by suffix"); // Dateityp: Nach Endung
- VBox file_types_box(TRUE, 2);
- RadioButtonGroup file_types_group;
- RadioButton file_types[3];
- file_types[0].set_label("Detect type automatially by suffix");
- file_types[1].set_label("Export to SVG file");
- file_types[2].set_label("Export to PNG file");
- for(int i=0; i < sizeof file_types / sizeof *file_types; i++) {
- file_types[i].set_group(file_types_group);
- file_types_box.add(file_types[i]);
- }
- file_types_expander.add(file_types_box);
- extra_widget.add(file_types_expander);
-
- CheckButton keep_selections("Export with current selection");
- extra_widget.add(keep_selections);
- extra_widget.show_all();
-
- dialog->set_extra_widget(extra_widget);
-
- // run it!
- if(dialog->run() == RESPONSE_CANCEL) {
- delete dialog;
- return; // canceled.
- }
- else {
- // now disable all and add a progress bar
- dialog->set_sensitive(false);
- dialog->set_response_sensitive(RESPONSE_CANCEL, true);
-
- ProgressBar* progress = new ProgressBar();
- progress->set_text("Export to ABC: 0%");
- extra_widget.add(*progress);
- extra_widget.show_all();
- std::cout << "Well, EXPORT!\n";
-
- for(int x=0; x < 100; x++) {
- progress->set_fraction(x/100.0);
- progress->set_text(g_strdup_printf("Export to ABC: %i%%", x));
-
- while( Gtk::Main::events_pending() )
- Gtk::Main::iteration();
- std::cout << "Progressing...\n";
- Glib::usleep(1000*1000);
- }
-
- delete dialog;*/
-
-
- /*if(view->export_file(target_format, dialog.get_filename())) {
- std::cout << "Export okay!\n";
- } else
- std::cout << "Export damaged!\n";
- */
- //}
} else if(name == "Close") {
model->close();
@@ -380,15 +299,21 @@
// Paper Tape Suite
} else if(name == "FileMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "EditMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "ViewMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "ColorMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "WindowMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "HelpMenu") {
- std::cout << "Strange: Called " << name << "\n";
+ // Menuklick ist egal
+ //std::cout << "Strange: Called " << name << "\n";
} else if(name == "Undo") {
std::cout << "Start Undo/redo engine for " << name << "\n";
@@ -424,7 +349,8 @@
this->parent_window = &parent_window;
this->model = new PaperTapeFile(this);
- printf("ABC\n");
this->view = new PaperTapeView(this);
-
+
+ // size constraints
+ parent_window.set_default_size(600,200);
this->make_menu();
@@ -440,27 +366,10 @@
ScrolledWindow* win = new ScrolledWindow();
win->set_policy(POLICY_ALWAYS, POLICY_ALWAYS);
-
- //VBox *vbox = new VBox(TRUE, 0);
- //vbox->add(*view);
-
win->add(*view);
-
view->set_redraw_on_allocate(true);
// set up ourself (we are a container)
this->add(*win);
-
- /*Viewport port(
- *new Adjustment(0, 0, 100),
- *new Adjustment(0, 0, 100)
- );
- port.add(*view);
-
- this->add(port);
- */
this->show_all();
- // these two lines work:
- //this->add(*view);
- //view->show();
}
Index: /paper-tape-project/trunk/visualisator/gtkpapertapecolor.cc
===================================================================
--- /paper-tape-project/trunk/visualisator/gtkpapertapecolor.cc (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtkpapertapecolor.cc (revision 77)
@@ -30,5 +30,4 @@
) {
PaperTapeColor* obj = new PaperTapeColor(action_base_name);
- std::cout << "HALLO\n";
Glib::RefPtr ref(obj);
Index: /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.cc
===================================================================
--- /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.cc (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.cc (revision 77)
@@ -10,4 +10,5 @@
using namespace Cairo;
+/*
PaperTapeExporter::PaperTapeExporter(PaperTapeView& view)
:
@@ -15,5 +16,5 @@
{
PaperTapeExporter(*view.controller->parent_window, view.lochstreifen);
-}
+}*/
PaperTapeExporter::PaperTapeExporter(Window& parent, const LOCHSTREIFEN* ls)
@@ -34,5 +35,4 @@
set_modal(true);
set_transient_for(parent);
- printf("TEst\n");
// Filters, just for the optics ;-)
@@ -41,5 +41,4 @@
exporter_filter->add_pattern("*.png");
exporter_filter->set_name("Exportable files (*.svg, *.png)");
- printf("TEst\n");
add_filter(*exporter_filter);
FileFilter* all_files = manage(new FileFilter);
@@ -48,25 +47,15 @@
// Make extra widget
- //VBox* extra_widget = new VBox(FALSE, 10);
Frame* file_types_expander = manage(new Frame("Export file type: Detect by suffix")); // Dateityp: Nach Endung
VBox* file_types_box = manage(new VBox(TRUE, 2));
RadioButtonGroup file_types_group;
- printf("TEst\n");
type_auto_select.set_label("Detect type automatially by suffix");
type_svg.set_label("Export to SVG file");
type_png.set_label("Export to PNG file");
- printf("TEst\n");
type_auto_select.set_group(file_types_group); type_svg.set_group(file_types_group); type_png.set_group(file_types_group);
file_types_box->add(type_auto_select); file_types_box->add(type_svg); file_types_box->add(type_png);
- /*RadioButton* file_types[3] = { &type_auto_select, &type_svg, &type_png }
- for(unsigned int i=0; i < sizeof file_types / sizeof *file_types; i++) {
- file_types[i]->set_group(file_types_group);
- file_types_box->add(*file_types[i]);
- }*/
- printf("TEst\n");
file_types_expander->add(*file_types_box);
extra_widget.add(*file_types_expander);
- printf("TEst\n");
CheckButton* keep_selections = manage(new CheckButton("Export with current selection"));
extra_widget.add(*keep_selections);
@@ -74,5 +63,4 @@
set_extra_widget(extra_widget);
- printf("TEst\n");
}
@@ -88,51 +76,47 @@
// so:
- printf("TEst\n");
cancel_button->set_sensitive(true); // doesn't work, too! :/
// enable cancel action
cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel));
- printf("TEst\n");
this->signal_hide().connect(sigc::mem_fun(*this, &PaperTapeExporter::cancel));
// set up cancel_export variable
this->cancel_export = false;
- printf("TEst\n");
progress.set_text("Export running...");
extra_widget.add(progress);
- printf("TEst\n");
extra_widget.show_all();
if(type_auto_select.get_active()) {
- printf("TEst\n");
+ printf("Auto selection of file type...\n");
// auto selection of file type
try {
- if(get_filename().substr(get_filename().length()-3-1, 3) == "svg")
- type_svg.set_active(true);
- else if(get_filename().substr(get_filename().length()-3-1, 3) == "png")
- type_png.set_active(true);
- else {
- // display dialog to clear the question which file type
- // the user wants
- MessageDialog err(*this,
- "File type could not be detected",
- false, // markup
- MESSAGE_ERROR,
- BUTTONS_CANCEL,
- true);
- err.set_secondary_text("Your filename "+get_filename()+" "
- "does not end with a typical suffix like .png or .svg. Therefore "
- "the wanted file type could not be clearly detected. Please select one:");
- err.property_secondary_use_markup().set_value(true);
- err.add_button("PNG Image", 42);
- err.add_button("SVG Image", 43);
- switch(err.run()) {
- case 42: type_png.set_active(true); break;
- case 43: type_svg.set_active(true); break;
- default:
- // cancel
- return false;
+ if(Glib::Regex::match_simple("svg$", get_filename(), Glib::REGEX_CASELESS))
+ type_svg.set_active(true);
+ else if(Glib::Regex::match_simple("png$", get_filename(), Glib::REGEX_CASELESS))
+ type_png.set_active(true);
+ else {
+ // display dialog to clear the question which file type
+ // the user wants
+ MessageDialog err(*this,
+ "File type could not be detected",
+ false, // markup
+ MESSAGE_ERROR,
+ BUTTONS_CANCEL,
+ true);
+ err.set_secondary_text("Your filename "+get_filename()+" "
+ "does not end with a typical suffix like .png or .svg. Therefore "
+ "the wanted file type could not be clearly detected. Please select one:");
+ err.property_secondary_use_markup().set_value(true);
+ err.add_button("PNG Image", 42);
+ err.add_button("SVG Image", 43);
+ switch(err.run()) {
+ case 42: type_png.set_active(true); break;
+ case 43: type_svg.set_active(true); break;
+ default:
+ // cancel
+ return false;
+ }
+ err.hide();
}
- err.hide();
- }
} catch(...) {
std::cout << "Caught something nasty!\n";
@@ -144,5 +128,4 @@
lochstreifen_get_target_dimensions(l, (int*)&width, (int*)&height);
- std::cout << "HOWDY\n";
if(type_svg.get_active()) {
// we make a SVG picture
@@ -167,4 +150,6 @@
*/
+ // TODO: Stuerzt zuverlaessig ab.
+
Cairo::RefPtr surface = ImageSurface::create(FORMAT_ARGB32, (int)width, (int)height);
Cairo::RefPtr cr = Context::create(surface);
Index: /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.h
===================================================================
--- /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.h (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtkpapertapeexporter.h (revision 77)
@@ -29,5 +29,4 @@
class PaperTapeExporter : public FileChooserDialog {
- //Window* parent;
LOCHSTREIFEN* l;
@@ -47,5 +46,5 @@
LOCHSTREIFEN* lochstreifen;
- PaperTapeExporter(PaperTapeView& view);
+ //PaperTapeExporter(PaperTapeView& view);
PaperTapeExporter(Window& parent, const LOCHSTREIFEN* l);
bool run_export();
Index: /paper-tape-project/trunk/visualisator/gtkpapertapeview.cc
===================================================================
--- /paper-tape-project/trunk/visualisator/gtkpapertapeview.cc (revision 76)
+++ /paper-tape-project/trunk/visualisator/gtkpapertapeview.cc (revision 77)
@@ -216,7 +216,6 @@
void PaperTapeView::export_image() {
- std::cout << "Creating object:\n";
+ std::cout << "Creating PaperTapeExporter:\n";
PaperTapeExporter program(*controller->parent_window, lochstreifen);
- std::cout << "STARTING EXPORT\n";
if(program.run_export()) {
std::cout << "Export handled nicely\n";
Index: /paper-tape-project/trunk/visualisator/lochstreifen.c
===================================================================
--- /paper-tape-project/trunk/visualisator/lochstreifen.c (revision 76)
+++ /paper-tape-project/trunk/visualisator/lochstreifen.c (revision 77)
@@ -84,5 +84,6 @@
LOCHSTREIFEN *l = malloc (sizeof(LOCHSTREIFEN));
#define COPY_RGBA_PATTERN(name) { double r,g,b,a; \
- if(!cairo_pattern_get_rgba(template->name, &r, &g, &b, &a)) \
+ if(template->name != NULL && \
+ !cairo_pattern_get_rgba(template->name, &r, &g, &b, &a)) \
l->name = cairo_pattern_create_rgba(r,g,b,a); }
@@ -92,5 +93,7 @@
l->highlight_region_start = template->highlight_region_start;
l->highlight_region_end = template->highlight_region_end;
+ printf("Copy1\n");
COPY_RGBA_PATTERN(highlight_region_color);
+ printf("Copy2\n");
l->highlight_row_number = template->highlight_row_number;
COPY_RGBA_PATTERN(highlight_row_color);