diff --git a/src/ui/dialog/about.cpp b/src/ui/dialog/about.cpp index 13482096a36990c2212d284b883cb1be53e77dbe..88b4d9bd4b4b04d665b80c61422e7ecb7b75a58a 100644 --- a/src/ui/dialog/about.cpp +++ b/src/ui/dialog/about.cpp @@ -7,19 +7,20 @@ * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ -#include +#include "about.h" + +#include #include +#include +#include #include +#include -#include "about.h" #include "document.h" #include "inkscape-version.h" - #include "io/resource.h" - #include "ui/util.h" #include "ui/view/svg-view-widget.h" - #include "util/units.h" using namespace Inkscape::IO; @@ -110,10 +111,21 @@ void AboutDialog::show_about() { Gtk::TextView *authors; builder->get_widget("credits-authors", authors); + std::random_device rd; + std::mt19937 g(rd()); + if(authors) { std::ifstream fn(Resource::get_filename(Resource::DOCS, "AUTHORS")); - std::string str((std::istreambuf_iterator(fn)), - std::istreambuf_iterator()); + std::vector authors_data; + std::string line; + while (getline(fn, line)) { + authors_data.push_back(line); + } + std::shuffle(std::begin(authors_data), std::end(authors_data), g); + std::string str = ""; + for (auto author : authors_data) { + str += author + "\n"; + } authors->get_buffer()->set_text(str.c_str()); } @@ -121,8 +133,17 @@ void AboutDialog::show_about() { builder->get_widget("credits-translators", translators); if(translators) { std::ifstream fn(Resource::get_filename(Resource::DOCS, "TRANSLATORS")); - std::string str((std::istreambuf_iterator(fn)), - std::istreambuf_iterator()); + std::vector translators_data; + std::string line; + while (getline(fn, line)) { + translators_data.push_back(line); + } + std::string str = ""; + std::regex e("(.*?)(<.*|)"); + std::shuffle(std::begin(translators_data), std::end(translators_data), g); + for (auto translator : translators_data) { + str += std::regex_replace(translator, e, "$1") + "\n"; + } translators->get_buffer()->set_text(str.c_str()); }