From 849dfe2d9d8062bca38c55c17e7dd8f5ac240e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Pe=C3=B1aranda?= Date: Tue, 14 May 2013 10:49:24 -0300 Subject: [PATCH] improved file chooser dialog --- image_read.cpp | 2 ++ image_read.h | 1 + openglcanvas.cpp | 9 ++++++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/image_read.cpp b/image_read.cpp index e60d6f8..41c5a5e 100644 --- a/image_read.cpp +++ b/image_read.cpp @@ -62,6 +62,8 @@ unsigned char *FileRead::read_image(const char *new_image,int *width,int *height return NULL; } +const char *FileRead::image_types="All images (*.png *.jpg *.jpeg *.pnm *.pbm *.pgm *.ppm);;PNG images (*.png);;JPG images (*.jpg *.jpeg);;PBM images (*.pnm *.pbm *.pgm *.ppm);;All files (*)"; + unsigned char *FileRead::jpgRead(const char *texturePath, int *outImageWidth, int *outImageHeight){ diff --git a/image_read.h b/image_read.h index c1f8995..852a696 100644 --- a/image_read.h +++ b/image_read.h @@ -28,6 +28,7 @@ class FileRead{ static enum FileType get_file_type(const char*); protected: static unsigned char *read_image(const char*,int*,int*); + static const char *image_types; private: static unsigned char *jpgRead(const char*,int*,int*); static unsigned char *pngRead(const char*,int*,int*); diff --git a/openglcanvas.cpp b/openglcanvas.cpp index c705bc8..c3e8d24 100644 --- a/openglcanvas.cpp +++ b/openglcanvas.cpp @@ -279,8 +279,11 @@ void OpenGLCanvas::load_image(const char *new_image){ } void OpenGLCanvas::change_input_image(){ - load_image(QFileDialog::getOpenFileName(this,tr("Choose Panorama File")).toStdString().c_str()); - updateGL(); + const char *fname=QFileDialog::getOpenFileName(this,tr("Choose Panorama File"),"",FileRead::image_types).toStdString().c_str(); + if(strlen(fname)>0){ + load_image(fname); + updateGL(); + } } void OpenGLCanvas::initializeGL(){ @@ -305,7 +308,7 @@ void OpenGLCanvas::initializeGL(){ // If the input file does not exist or was not specified. struct stat testbuf; if(stat(input_image_file,&testbuf)||!strcmp(input_image_file,"")){ - load_image(QFileDialog::getOpenFileName(this,tr("Choose Panorama File")).toStdString().c_str()); + load_image(QFileDialog::getOpenFileName(this,tr("Choose Panorama File"),"",FileRead::image_types).toStdString().c_str()); }else{ load_image(input_image_file); } -- GitLab