# HG changeset patch # User John Tsiombikas # Date 1400637694 -10800 # Node ID d7ab4f13f5af7e82e6468b55976975d512e28a51 # Parent 32dccb16678fb2cb2158903afbb8a66532aab096# Parent b43d33f3ba695072158d944d33f6753067900cba Merge diff -r 32dccb16678f -r d7ab4f13f5af goatview/Makefile --- a/goatview/Makefile Wed May 21 05:00:21 2014 +0300 +++ b/goatview/Makefile Wed May 21 05:01:34 2014 +0300 @@ -20,6 +20,13 @@ qtinc = `pkg-config --cflags Qt5Gui Qt5Core Qt5OpenGL` qtlib = `pkg-config --libs Qt5Gui Qt5Core Qt5OpenGL` +ifeq ($(compiler), clang) + CXXFLAGS += -stdlib=libc++ + warn += '-Wno-\#warnings' +else + warn += -Wno-cpp +endif + ifeq ($(shell uname -s), Darwin) libgl = -framework OpenGL -framework GLUT -lGLEW libgoat = $(goat_root)/libgoat3d.dylib @@ -32,14 +39,6 @@ libgoat = $(goat_root)/libgoat3d.so.0.1 endif -ifeq ($(CC), gcc) - warn += -Wno-cpp -endif -ifneq ($(shell $(CC) --version | grep LLVM),) - CXXFLAGS += -stdlib=libc++ - warn += '-Wno-\#warnings' -endif - $(bin): $(obj) $(libgoat) $(CXX) -o $@ $(obj) $(LDFLAGS) @@ -105,3 +104,12 @@ run: $(bin) ./$(bin) endif + +ccver = $(shell $(CC) --version) +ifneq (,$(findstring LLVM,$(ccver))) + # clang/llvm + compiler = clang +else + # other, assume gcc + compiler = gcc +endif diff -r 32dccb16678f -r d7ab4f13f5af goatview/src/goatview.cc --- a/goatview/src/goatview.cc Wed May 21 05:00:21 2014 +0300 +++ b/goatview/src/goatview.cc Wed May 21 05:01:34 2014 +0300 @@ -76,7 +76,7 @@ bool GoatView::load_scene(const char *fname) { if(scene) { - goat3d_free(scene); + close_scene(); } if(!(scene = goat3d_create()) || goat3d_load(scene, fname) == -1) { QMessageBox::critical(this, "Error", "Failed to load scene file: " + QString(fname)); @@ -159,6 +159,12 @@ connect(act_open_anm, &QAction::triggered, this, &GoatView::open_anim); menu_file->addAction(act_open_anm); + QAction *act_close = new QAction("&Close", this); + connect(act_close, &QAction::triggered, this, &GoatView::close_scene); + menu_file->addAction(act_close); + + menu_file->addSeparator(); + QAction *act_quit = new QAction("&Quit", this); act_quit->setShortcuts(QKeySequence::Quit); connect(act_quit, &QAction::triggered, [&](){ qApp->quit(); }); @@ -322,12 +328,20 @@ statusBar()->showMessage("Successfully loaded scene: " + QString(fname.c_str())); } +void GoatView::close_scene() +{ + scene_model->clear_scene(); + treeview->reset(); + goat3d_free(scene); + scene = 0; +} + void GoatView::open_anim() { std::string fname = QFileDialog::getOpenFileName(this, "Open animation file", "", "Goat3D Animation (*.goatanm);;All Files (*)").toStdString(); if(fname.empty()) { - statusBar()->showMessage("Abot: No file selected!"); + statusBar()->showMessage("Abort: No file selected!"); return; } diff -r 32dccb16678f -r d7ab4f13f5af goatview/src/goatview.h --- a/goatview/src/goatview.h Wed May 21 05:00:21 2014 +0300 +++ b/goatview/src/goatview.h Wed May 21 05:01:34 2014 +0300 @@ -36,6 +36,7 @@ private slots: void open_scene(); + void close_scene(); void open_anim(); public: