From ad1404891dc2249532dd060a63e16b2d6ef1e552 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Tue, 27 Mar 2012 19:19:36 +0300 Subject: [PATCH] Imported Upstream version 2~rc2+svn387 --- CMakeLists.txt | 1 + examples/wnd_samples.cpp | 23 ----------------------- include/mgl/qt.h | 3 ++- lang/CMakeLists.txt | 1 + lang/setup.py.in | 1 + mgllab/data.cpp | 8 ++++---- mgllab/help.cpp | 12 ++++++------ src/canvas_cf.cpp | 2 +- texinfo/CMakeLists.txt | 15 +++++++++++++++ todo.txt | 3 ++- udav/help_pnl.cpp | 26 +++++++++++++------------- udav/help_pnl.h | 2 +- udav/newcmd_dlg.cpp | 4 ++-- udav/udav_wnd.cpp | 4 ++-- udav/udav_wnd.h | 2 +- widgets/fltk.cpp | 20 +++++++++++--------- widgets/qt.cpp | 7 ++++--- 17 files changed, 67 insertions(+), 67 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2921bc7..4ac5192 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -297,6 +297,7 @@ endif(WIN32) if(NOT WIN32) set(MGL_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/mathgl") set(MGL_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/mathgl") +set(MGL_MAN_PATH "${CMAKE_INSTALL_PREFIX}/share/man") set(MGL_FONT_PATH "${MGL_DATA_PATH}/fonts") install(DIRECTORY fonts/ DESTINATION ${MGL_FONT_PATH} PATTERN ".svn" EXCLUDE diff --git a/examples/wnd_samples.cpp b/examples/wnd_samples.cpp index a2856d2..97d0024 100644 --- a/examples/wnd_samples.cpp +++ b/examples/wnd_samples.cpp @@ -34,30 +34,7 @@ void mgls_prepare3v(mglData *ex, mglData *ey, mglData *ez); int test_wnd(mglGraph *gr) { mgl_set_test_mode(true); - - gr->SubPlot(2,2,0); - gr->Rotate(60,70); gr->Ternary(2); - gr->Axis(); - gr->Box(); -// gr->SetRotatedText(false); - gr->Label('t',"A",1); gr->Label('x',"B",1); - gr->Label('y',"C",1); gr->Label('z',"D",1); - - gr->SubPlot(2,2,1); - gr->Rotate(60,70); gr->Ternary(1); - gr->Axis(); - gr->Box(); - gr->Label('x',"x comp."); - gr->Label('y',"y comp."); - gr->Label('t',"t comp."); - - gr->SubPlot(2,2,3); - gr->Rotate(60,70); gr->Ternary(0); - gr->Axis(); gr->Box(); -// gr->SetRotatedText(false); - gr->Label('t',"A",1); gr->Label('x',"X",1); - gr->Label('y',"Y",1); gr->Label('z',"Z",1); return 0; } //----------------------------------------------------------------------------- diff --git a/include/mgl/qt.h b/include/mgl/qt.h index bf8c97d..17e906e 100644 --- a/include/mgl/qt.h +++ b/include/mgl/qt.h @@ -55,7 +55,7 @@ public: inline void setDraw(int (*func)(mglBase *gr, void *par), void *par=0) { draw_func = func; draw_par = par; } inline void setDraw(mglDraw *dr) - { setDraw(mgl_draw_class,(void*)dr); } + { draw = dr; } inline void setDraw(int (*draw)(mglGraph *gr)) { setDraw(mgl_draw_graph,(void*)draw); } @@ -144,6 +144,7 @@ protected: void *draw_par; ///< Parameters for drawing function mglCanvasWnd::DrawFunc. /// Drawing function for window procedure. It should return the number of frames. int (*draw_func)(mglBase *gr, void *par); + mglDraw *draw; ///< Class for drawing -- need to call directly due to inheritance mechanism QString mousePos; ///< Last mouse position QPixmap pic; ///< Pixmap for drawing (changed by update) double tet, phi; ///< Rotation angles diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index edee957..0db2473 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -36,4 +36,5 @@ if(MGL_HAVE_PYTHON) ) add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py) install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )") + set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "mgl.i;numpy.i;setup.py;mgl_wrap.cpp;build;mathgl.pyc") endif(MGL_HAVE_PYTHON) diff --git a/lang/setup.py.in b/lang/setup.py.in index 98a693d..f7bc2bd 100644 --- a/lang/setup.py.in +++ b/lang/setup.py.in @@ -18,6 +18,7 @@ mgl_module = Extension('_mathgl', swig_opts=[ # "-outdir %s/lang" % binary_dir, '-c++', + '-threads', "-I%s" % binary_dir, "-I%s" % source_dir], extra_objects=[mgl_lib,mgl_lib_wnd] diff --git a/mgllab/data.cpp b/mgllab/data.cpp index a5e339c..7f6bf3b 100644 --- a/mgllab/data.cpp +++ b/mgllab/data.cpp @@ -202,9 +202,9 @@ void type_cmd_cb(Fl_Widget *w, void *v) static char str[300]; // load help for command char *docdir; get_doc_dir(docdir); #ifdef WIN32 - sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,first[val]); + sprintf(str,"%s\\mgl_en.html#%s",docdir,first[val]); #else - sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,first[val]); + sprintf(str,"%s/mgl_en.html#%s",docdir,first[val]); #endif free(docdir); cmd_dlg.help->load(str); } @@ -220,9 +220,9 @@ void desc_cmd_cb(Fl_Widget *w, void *v) static char str[300]; // load help for command char *docdir; get_doc_dir(docdir); #ifdef WIN32 - sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,name); + sprintf(str,"%s\\mgl_en.html#%s",docdir,name); #else - sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,name); + sprintf(str,"%s/mgl_en.html#%s",docdir,name); #endif free(docdir); cmd_dlg.help->load(str); } diff --git a/mgllab/help.cpp b/mgllab/help.cpp index 825a175..3e2bb44 100644 --- a/mgllab/help.cpp +++ b/mgllab/help.cpp @@ -26,9 +26,9 @@ void get_doc_dir(char *&docdir) static char str[300]; pref.get("help_dir",docdir,""); #ifdef WIN32 - sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html",docdir); + sprintf(str,"%s\\mgl_en.html",docdir); #else - sprintf(str,"%s/mgl_en.html/mgl_en_1.html",docdir); + sprintf(str,"%s/mgl_en.html",docdir); #endif FILE *fp = fopen(str,"r"); if(fp) fclose(fp); @@ -54,9 +54,9 @@ void help_cb(Fl_Widget*, void*v) free(buf); get_doc_dir(buf); #ifdef WIN32 - sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",buf,s); + sprintf(str,"%s\\mgl_en.html#%s",buf,s); #else - sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",buf,s); + sprintf(str,"%s/mgl_en.html#%s",buf,s); #endif free(buf); e->hd->load(str); if(e->rtab) e->rtab->value(e->ghelp); @@ -69,9 +69,9 @@ void link_cb(Fl_Widget*, void*v) char *docdir; get_doc_dir(docdir); #ifdef WIN32 - sprintf(str,"%s\\mgl_en.html\\mgl_en_1.html#%s",docdir,e->link_cmd->value()); + sprintf(str,"%s\\mgl_en.html#%s",docdir,e->link_cmd->value()); #else - sprintf(str,"%s/mgl_en.html/mgl_en_1.html#%s",docdir,e->link_cmd->value()); + sprintf(str,"%s/mgl_en.html#%s",docdir,e->link_cmd->value()); #endif free(docdir); e->hd->load(str); if(e->rtab) e->rtab->value(e->ghelp); diff --git a/src/canvas_cf.cpp b/src/canvas_cf.cpp index 453443a..9150eb6 100644 --- a/src/canvas_cf.cpp +++ b/src/canvas_cf.cpp @@ -370,7 +370,7 @@ void mgl_mpi_send_(uintptr_t *gr, int *id) { mgl_mpi_send(_GR_, *id); } void mgl_mpi_recv_(uintptr_t *gr, int *id) { mgl_mpi_recv(_GR_, *id); } //----------------------------------------------------------------------------- void mgl_wnd_set_delay_(uintptr_t *gr, mreal *dt) { _GR_->SetDelay(*dt); } -void mgl_wnd_set_delay(HMGL gr, mreal dt) { _Gr_->SetDelay(dt); } +void mgl_wnd_set_delay(HMGL gr, float dt) { _Gr_->SetDelay(dt); } //----------------------------------------------------------------------------- HMEX mgl_create_expr(const char *expr) { return new mglFormula(expr); } void mgl_delete_expr(HMEX ex) { delete ex; } diff --git a/texinfo/CMakeLists.txt b/texinfo/CMakeLists.txt index 7ab2b1e..62e94b5 100644 --- a/texinfo/CMakeLists.txt +++ b/texinfo/CMakeLists.txt @@ -69,7 +69,22 @@ if(MGL_HAVE_DOC) FILES_MATCHING PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE PATTERN "*.png" + PATTERN "*.html" PATTERN "*/*.html" PATTERN "./mathgl*.info*" PATTERN "./mathgl*.pdf") + install(DIRECTORY ./ DESTINATION ${MGL_MAN_PATH}/man1 + FILES_MATCHING PATTERN ".svn" EXCLUDE + PATTERN "CMakeFiles" EXCLUDE + PATTERN "*_en" EXCLUDE + PATTERN "png" EXCLUDE + PATTERN "small" EXCLUDE + PATTERN "*.1") + install(DIRECTORY ./ DESTINATION ${MGL_MAN_PATH}/man5 + FILES_MATCHING PATTERN ".svn" EXCLUDE + PATTERN "CMakeFiles" EXCLUDE + PATTERN "*_en" EXCLUDE + PATTERN "png" EXCLUDE + PATTERN "small" EXCLUDE + PATTERN "*.5") endif(MGL_HAVE_DOC) diff --git a/todo.txt b/todo.txt index 5551f9a..8478e7c 100644 --- a/todo.txt +++ b/todo.txt @@ -3,8 +3,8 @@ Device 0 (VID=0502 and PID=337d) is UNKNOWN. ============= NEW ============= -1. Add sample for window in python/octave (like pthread) -- Docs 2. Add help about cmake into the "Installation and using" -- after build system will be ready + 4. Check RunThr() in python ============= FOR V.2.1 ======== @@ -35,6 +35,7 @@ Device 0 (VID=0502 and PID=337d) is UNKNOWN. 21. MGL testing system ??? 22. Export to X3D 23. Try libtcc (TinyCC) as alternative to MGL -- in mgllab??? +24. Use OI & Z for determening {x,y,z} from {xs,ys}. Try to find closest. ============= UDAV ============= diff --git a/udav/help_pnl.cpp b/udav/help_pnl.cpp index 1589242..e831279 100644 --- a/udav/help_pnl.cpp +++ b/udav/help_pnl.cpp @@ -30,7 +30,7 @@ void raisePanel(QWidget *w); //----------------------------------------------------------------------------- QWidget *createHlpPanel(QWidget *p) { return new HelpPanel(p); } void showHelpMGL(QWidget *hlp,QString s){ ((HelpPanel *)hlp)->showHelp(s); } -void showExMGL(QWidget *hlp) { ((HelpPanel *)hlp)->showExamples(); } +//void showExMGL(QWidget *hlp) { ((HelpPanel *)hlp)->showExamples(); } //----------------------------------------------------------------------------- HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent) { @@ -48,8 +48,8 @@ HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent) connect(entry, SIGNAL(returnPressed()), this, SLOT(showHelp())); b = new QPushButton(QPixmap(":/xpm/go-next.png"), tr("Forward")); connect(b, SIGNAL(clicked()), help, SLOT(forward())); a->addWidget(b); - b = new QPushButton(QPixmap(":/xpm/help-faq.png"), tr("&Examples")); - connect(b, SIGNAL(clicked()), this, SLOT(showExamples())); a->addWidget(b); +// b = new QPushButton(QPixmap(":/xpm/help-faq.png"), tr("&Examples")); +// connect(b, SIGNAL(clicked()), this, SLOT(showExamples())); a->addWidget(b); t = new QToolButton(this); t->setIcon(QPixmap(":/xpm/zoom-in.png")); connect(t, SIGNAL(clicked()), this, SLOT(zoomIn())); a->addWidget(t); t = new QToolButton(this); t->setIcon(QPixmap(":/xpm/zoom-out.png")); @@ -57,23 +57,23 @@ HelpPanel::HelpPanel(QWidget *parent) : QWidget(parent) setWindowTitle(tr("Help")); } //----------------------------------------------------------------------------- -void HelpPanel::showExamples() -{ - QStringList s; s<<(pathHelp+"/"+tr("mgl_en")+".html/"); - help->setSearchPaths(s); - setWindowTitle("Examples"); raisePanel(this); - help->setSource(tr("mgl_en")+"_2.html"); -} +// void HelpPanel::showExamples() +// { +// QStringList s; s<<(pathHelp); +// help->setSearchPaths(s); +// setWindowTitle("Examples"); raisePanel(this); +// help->setSource(tr("mgl_en")+"_2.html"); +// } //----------------------------------------------------------------------------- void HelpPanel::showHelp(const QString &txt) { QString cmd=txt; raisePanel(this); - QStringList s; s<<(pathHelp+"/"+tr("mgl_en")+".html/"); + QStringList s; s<<(pathHelp); help->setSearchPaths(s); if(cmd.isEmpty()) cmd = entry->text().trimmed(); - if(cmd.isEmpty()) help->setSource(tr("mgl_en")+"_1.html"); - else help->setSource(tr("mgl_en")+"_1.html#"+cmd); + if(cmd.isEmpty()) help->setSource(tr("mgl_en")+".html"); + else help->setSource(tr("mgl_en")+".html#"+cmd); setWindowTitle("Help"); } //----------------------------------------------------------------------------- diff --git a/udav/help_pnl.h b/udav/help_pnl.h index 40cb8fa..132f7ed 100644 --- a/udav/help_pnl.h +++ b/udav/help_pnl.h @@ -30,7 +30,7 @@ Q_OBJECT public: HelpPanel(QWidget *parent = 0); public slots: - void showExamples(); +// void showExamples(); void showHelp(const QString &cmd=QString::null); void zoomIn(); void zoomOut(); diff --git a/udav/newcmd_dlg.cpp b/udav/newcmd_dlg.cpp index 2ce448a..0547b4f 100644 --- a/udav/newcmd_dlg.cpp +++ b/udav/newcmd_dlg.cpp @@ -231,9 +231,9 @@ void NewCmdDialog::nameChanged(int s) QString n=name->itemText(s), par, a; int k; if(n.isEmpty()) return; - QStringList ss; ss<<(pathHelp+"/"+tr("mgl_en")+".html/"); + QStringList ss; ss<<(pathHelp); help->setSearchPaths(ss); - help->setSource(tr("mgl_en")+"_1.html#"+n); + help->setSource(tr("mgl_en")+".html#"+n); // clear old kind->clear(); kinds.clear(); for(k=0;ksetToolTip(tr("Show help on MGL commands (F1).")); a->setShortcut(Qt::Key_F1); o->addAction(a); - a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("&Examples"), this); - connect(a, SIGNAL(triggered()), this, SLOT(showExamples())); +// a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("&Examples"), this); +// connect(a, SIGNAL(triggered()), this, SLOT(showExamples())); a->setToolTip(tr("Show examples of MGL usage (Shift+F1).")); a->setShortcut(Qt::SHIFT+Qt::Key_F1); o->addAction(a); a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("H&ints"), this); diff --git a/udav/udav_wnd.h b/udav/udav_wnd.h index cd260a5..3758cdb 100644 --- a/udav/udav_wnd.h +++ b/udav/udav_wnd.h @@ -92,7 +92,7 @@ private slots: void setAsterix(); void warnChanged(); void showHint() { udavShowHint(this); } - void showExamples() { showExMGL(hlp); } +// void showExamples() { showExMGL(hlp); } void setCurrentFile(const QString &); void setStatus(const QString &txt); diff --git a/widgets/fltk.cpp b/widgets/fltk.cpp index 8c73ded..23ecdfe 100644 --- a/widgets/fltk.cpp +++ b/widgets/fltk.cpp @@ -122,7 +122,7 @@ void Fl_MathGL::update() gr->Alpha(flag&1); gr->Light(flag&2); if(tet_val) tet = tet_val->value(); if(phi_val) phi = phi_val->value(); - gr->Zoom(x1,y1,x2,y2); gr->View(tet,phi); + gr->Zoom(x1,y1,x2,y2); gr->View(phi,tet); draw_func(gr, draw_par); // drawing itself const char *buf = gr->Mess.c_str(); if(*buf) fl_message("%s",buf); @@ -142,14 +142,14 @@ int Fl_MathGL::handle(int code) const Fl_Menu_Item *m = popup->popup(Fl::event_x(), Fl::event_y(), 0, 0, 0); if(m) m->do_callback(wpar, vpar); } - if(gr->get(MGL_SHOW_POS) && !zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE) + else if(gr->get(MGL_SHOW_POS) && !zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE) { mglPoint p = gr->CalcXYZ(Fl::event_x()-x(), Fl::event_y()-y()); char s[128]; sprintf(s,"x=%g, y=%g, z=%g",p.x,p.y,p.z); draw(); fl_color(FL_BLACK); fl_draw(s,40,70); } - if((!rotate && !zoom) || Fl::event_button()!=FL_LEFT_MOUSE) + else if((!rotate && !zoom) || Fl::event_button()!=FL_LEFT_MOUSE) { if(code==FL_FOCUS || code==FL_UNFOCUS) return 1; if(code==FL_KEYUP) @@ -210,23 +210,25 @@ int Fl_MathGL::handle(int code) } return 0; } - if(code==FL_PUSH) { xe=x0=Fl::event_x(); ye=y0=Fl::event_y(); } - if(code==FL_DRAG) + else if(code==FL_PUSH) { xe=x0=Fl::event_x(); ye=y0=Fl::event_y(); } + else if(code==FL_DRAG) { xe=Fl::event_x(); ye=Fl::event_y(); - mreal ff = 240/sqrt(mreal(w()*h())); + mreal ff = 240./sqrt(w()*h()); if(rotate) { - phi += int((x0-xe)*ff); - tet += int((y0-ye)*ff); + phi += (x0-xe)*ff; + tet += (y0-ye)*ff; if(phi>180) phi-=360; if(phi<-180) phi+=360; if(tet>180) tet-=360; if(tet<-180) tet+=360; + if(tet_val) tet_val->value(tet); + if(phi_val) phi_val->value(phi); x0 = xe; y0 = ye; update(); } redraw(); } - if(code==FL_RELEASE) + else if(code==FL_RELEASE) { if(zoom) { diff --git a/widgets/qt.cpp b/widgets/qt.cpp index 16dabc1..1c983ef 100644 --- a/widgets/qt.cpp +++ b/widgets/qt.cpp @@ -73,7 +73,7 @@ QMathGL::QMathGL(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) { autoResize = false; draw_par = 0; draw_func = 0; gr = new mglCanvas; appName = "MathGL"; - popup = 0; grBuf = 0; + popup = 0; grBuf = 0; draw = 0; phi = tet = per = 0; x1 = y1 = 0; x2 = y2 = 1; alpha = light = zoom = rotate = grid = false; @@ -198,13 +198,14 @@ void QMathGL::update() else while(thr->isRunning()) qApp->processEvents(); if(warnMGL) warnMGL->setText(thr->warn);*/ - if(draw_func) + if(draw_func || draw) { if(gr->get(MGL_CLF_ON_UPD)) gr->DefaultPlotParam(); gr->Alpha(alpha); gr->Light(light); if(!isHidden()) QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); setlocale(LC_NUMERIC, "C"); // NOTE: I'm not sure what I should selocale manually??? - draw_func(gr, draw_par); + if(draw_func) draw_func(gr, draw_par); + else { mglGraph g(gr); draw->Draw(&g); } setlocale(LC_NUMERIC, ""); if(!isHidden()) QApplication::restoreOverrideCursor(); emit refreshData(); -- 2.30.2