freesound import - various small tweaks
authorRobin Gareus <robin@gareus.org>
Fri, 21 Dec 2012 17:28:44 +0000 (17:28 +0000)
committerRobin Gareus <robin@gareus.org>
Fri, 21 Dec 2012 17:28:44 +0000 (17:28 +0000)
 * quote search string
 * show filesize
 * include samplerate in list
 * filter out mp3s on Linux
 * decrease layout-spacing and shorten progressbar txt.

git-svn-id: svn://localhost/ardour2/branches/3.0@13700 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/sfdb_freesound_mootcher.cc
gtk2_ardour/sfdb_ui.cc
gtk2_ardour/sfdb_ui.h

index ed4fd617a9ae0863cadc526b8826bb34742e1d5b..d3b3dd12e215340e12bd2cf16731657465a17441 100644 (file)
@@ -213,7 +213,7 @@ std::string Mootcher::searchText(std::string query, int page, std::string filter
        }\r
 \r
        char *eq = curl_easy_escape(curl, query.c_str(), query.length());\r
-       params += "q=" + std::string(eq);\r
+       params += "q=\"" + std::string(eq) + "\"";\r
        free(eq);\r
 \r
        if (filter != "") {\r
@@ -225,7 +225,7 @@ std::string Mootcher::searchText(std::string query, int page, std::string filter
        if (sort)\r
                params += "&s=" + sortMethodString(sort);\r
 \r
-       params += "&fields=id,original_filename,duration,serve";        \r
+       params += "&fields=id,original_filename,duration,filesize,samplerate,serve";\r
 \r
        return doRequest("/sounds/search", params);\r
 }\r
@@ -344,7 +344,7 @@ std::string Mootcher::getAudioFile(std::string originalFileName, std::string ID,
        caller->freesound_progress_bar.show();\r
 \r
        std::string prog;\r
-       prog = string_compose (_("%1: [Stop]->"), originalFileName);\r
+       prog = string_compose (_("%1"), originalFileName);\r
        caller->freesound_progress_bar.set_text(prog);\r
 \r
        curl_easy_setopt (curl, CURLOPT_NOPROGRESS, 0); // turn on the progress bar\r
index 76be33ad0d21022956ce2b8296a49cd5b946df9b..44dd1816b69757ce2a530a648613ab4544ce2af5 100644 (file)
@@ -523,7 +523,7 @@ SoundFileBrowser::SoundFileBrowser (Gtk::Window& parent, string title, ARDOUR::S
 
                passbox = manage(new HBox);
                passbox->set_border_width (12);
-               passbox->set_spacing (6);
+               passbox->set_spacing (3);
 
                label = manage (new Label);
                label->set_text (_("Tags:"));
@@ -566,7 +566,13 @@ SoundFileBrowser::SoundFileBrowser (Gtk::Window& parent, string title, ARDOUR::S
                freesound_list_view.append_column(_("Filename"), freesound_list_columns.filename);
                // freesound_list_view.append_column(_("URI")     , freesound_list_columns.uri);
                freesound_list_view.append_column(_("Duration"), freesound_list_columns.duration);
+               freesound_list_view.append_column(_("Size"), freesound_list_columns.filesize);
+               freesound_list_view.append_column(_("Samplerate"), freesound_list_columns.smplrate);
+               freesound_list_view.get_column(0)->set_alignment(0.5);
                freesound_list_view.get_column(1)->set_expand(true);
+               freesound_list_view.get_column(2)->set_alignment(0.5);
+               freesound_list_view.get_column(3)->set_alignment(0.5);
+               freesound_list_view.get_column(4)->set_alignment(0.5);
 
                freesound_list_view.get_selection()->signal_changed().connect(sigc::mem_fun(*this, &SoundFileBrowser::freesound_list_view_selected));
 
@@ -844,7 +850,7 @@ SoundFileBrowser::freesound_search()
        for (int page = 1; page <= 99; page++ ) {
                
                std::string prog;
-               prog = string_compose (_("Page %1, [Stop]->"), page);
+               prog = string_compose (_("Page %1"), page);
                freesound_progress_bar.set_text(prog);
                while (Glib::MainContext::get_default()->iteration (false)) {
                        /* do nothing */
@@ -853,7 +859,11 @@ SoundFileBrowser::freesound_search()
                std::string theString = mootcher->searchText(
                        search_string, 
                        page,
-                       "", // filter, could do, e.g. "type:wav"
+#ifdef GTKOSX
+                       "", // OSX eats anything incl mp3
+#else
+                       "type:wav OR type:aiff OR type:flac OR type:aif OR type:ogg OR type:oga",
+#endif
                        sort_method
                );
 
@@ -900,13 +910,17 @@ SoundFileBrowser::freesound_search()
                        XMLNode *uri_node = node->child ("serve");
                        XMLNode *ofn_node = node->child ("original_filename");
                        XMLNode *dur_node = node->child ("duration");
+                       XMLNode *siz_node = node->child ("filesize");
+                       XMLNode *srt_node = node->child ("samplerate");
 
-                       if (id_node && uri_node && ofn_node && dur_node) {
+                       if (id_node && uri_node && ofn_node && dur_node && siz_node && srt_node) {
                                
                                std::string  id =  id_node->child("text")->content();
                                std::string uri = uri_node->child("text")->content();
                                std::string ofn = ofn_node->child("text")->content();
                                std::string dur = dur_node->child("text")->content();
+                               std::string siz = siz_node->child("text")->content();
+                               std::string srt = srt_node->child("text")->content();
 
                                std::string r;
                                // cerr << "id=" << id << ",uri=" << uri << ",ofn=" << ofn << ",dur=" << dur << endl;
@@ -924,6 +938,20 @@ SoundFileBrowser::freesound_search()
                                        );
                                }
 
+                               double size_bytes = atof(siz.c_str());
+                               char bsize[32];
+                               if (size_bytes < 1000) {
+                                       sprintf(bsize, "%.0f %s", size_bytes, _("B"));
+                               } else if (size_bytes < 1000000 ) {
+                                       sprintf(bsize, "%.1f %s", size_bytes / 1000.0, _("kB"));
+                               } else if (size_bytes < 10000000) {
+                                       sprintf(bsize, "%.1f %s", size_bytes / 1000000.0, _("MB"));
+                               } else if (size_bytes < 1000000000) {
+                                       sprintf(bsize, "%.2f %s", size_bytes / 1000000.0, _("MB"));
+                               } else {
+                                       sprintf(bsize, "%.2f %s", size_bytes / 1000000000.0, _("GB"));
+                               }
+
                                TreeModel::iterator new_row = freesound_list->append();
                                TreeModel::Row row = *new_row;
                                
@@ -931,6 +959,8 @@ SoundFileBrowser::freesound_search()
                                row[freesound_list_columns.uri     ] = uri;
                                row[freesound_list_columns.filename] = ofn;
                                row[freesound_list_columns.duration] = duration_hhmmss;
+                               row[freesound_list_columns.filesize] = bsize;
+                               row[freesound_list_columns.smplrate] = srt;
 
                        }
                }
index 249ebf3535834d6d49662c4b8c0578abc6cc535f..5e60e937fe14a403dd6f9987692b32f801fa200a 100644 (file)
@@ -128,12 +128,16 @@ class SoundFileBrowser : public ArdourDialog
                Gtk::TreeModelColumn<std::string> uri;
                Gtk::TreeModelColumn<std::string> filename;
                Gtk::TreeModelColumn<std::string> duration;
+               Gtk::TreeModelColumn<std::string> filesize;
+               Gtk::TreeModelColumn<std::string> smplrate;
 
                FreesoundColumns() {
                        add(id); 
                        add(filename); 
                        add(uri);
                        add(duration);
+                       add(filesize);
+                       add(smplrate);
                }
        };