From 093dfab2491b55e7ea45463b5616b799fed66550 Mon Sep 17 00:00:00 2001 From: codereader Date: Sun, 6 Nov 2022 09:47:34 +0100 Subject: [PATCH] #4764: Rename a couple of classes and files. Introduce specialised MapTextureBrowser which will specifically deal with the scene textures. --- radiant/CMakeLists.txt | 5 +- radiant/ui/mainframe/AuiLayout.cpp | 1 - radiant/ui/mediabrowser/MediaBrowser.cpp | 2 +- .../ui/texturebrowser/MapTextureBrowser.cpp | 10 ++ radiant/ui/texturebrowser/MapTextureBrowser.h | 18 ++ .../texturebrowser/TextureBrowserManager.cpp | 12 +- .../ui/texturebrowser/TextureBrowserManager.h | 8 +- ...ureBrowser.cpp => TextureBrowserPanel.cpp} | 28 +-- ...TextureBrowser.h => TextureBrowserPanel.h} | 10 +- ...rowser.cpp => TextureThumbnailBrowser.cpp} | 163 +++++++++--------- ...ailBrowser.h => TextureThumbnailBrowser.h} | 11 +- radiant/xyview/XYWnd.cpp | 1 - radiant/xyview/tools/BrushCreatorTool.cpp | 2 +- tools/msvc/DarkRadiant.vcxproj | 10 +- tools/msvc/DarkRadiant.vcxproj.filters | 14 +- 15 files changed, 164 insertions(+), 131 deletions(-) create mode 100644 radiant/ui/texturebrowser/MapTextureBrowser.cpp create mode 100644 radiant/ui/texturebrowser/MapTextureBrowser.h rename radiant/ui/texturebrowser/{TextureBrowser.cpp => TextureBrowserPanel.cpp} (58%) rename radiant/ui/texturebrowser/{TextureBrowser.h => TextureBrowserPanel.h} (82%) rename radiant/ui/texturebrowser/{MaterialThumbnailBrowser.cpp => TextureThumbnailBrowser.cpp} (81%) rename radiant/ui/texturebrowser/{MaterialThumbnailBrowser.h => TextureThumbnailBrowser.h} (95%) diff --git a/radiant/CMakeLists.txt b/radiant/CMakeLists.txt index cd51ed00f0..3be3fff569 100644 --- a/radiant/CMakeLists.txt +++ b/radiant/CMakeLists.txt @@ -159,8 +159,9 @@ add_executable(darkradiant ui/statusbar/MapStatistics.cpp ui/statusbar/StatusBarManager.cpp ui/surfaceinspector/SurfaceInspector.cpp - ui/texturebrowser/MaterialThumbnailBrowser.cpp - ui/texturebrowser/TextureBrowser.cpp + ui/texturebrowser/MapTextureBrowser.cpp + ui/texturebrowser/TextureThumbnailBrowser.cpp + ui/texturebrowser/TextureBrowserPanel.cpp ui/texturebrowser/TextureBrowserManager.cpp ui/toolbar/ToolbarManager.cpp ui/transform/TransformPanel.cpp diff --git a/radiant/ui/mainframe/AuiLayout.cpp b/radiant/ui/mainframe/AuiLayout.cpp index 95a8040aae..d0d382df09 100644 --- a/radiant/ui/mainframe/AuiLayout.cpp +++ b/radiant/ui/mainframe/AuiLayout.cpp @@ -10,7 +10,6 @@ #include "camera/CameraWndManager.h" #include "command/ExecutionFailure.h" -#include "ui/texturebrowser/TextureBrowser.h" #include "wxutil/Bitmap.h" #include "xyview/GlobalXYWnd.h" #include "AuiFloatingFrame.h" diff --git a/radiant/ui/mediabrowser/MediaBrowser.cpp b/radiant/ui/mediabrowser/MediaBrowser.cpp index b0967d2a62..89cb7939c7 100644 --- a/radiant/ui/mediabrowser/MediaBrowser.cpp +++ b/radiant/ui/mediabrowser/MediaBrowser.cpp @@ -10,7 +10,7 @@ #include #include "util/ScopedBoolLock.h" -#include "ui/texturebrowser/TextureBrowser.h" +#include "ui/texturebrowser/TextureBrowserManager.h" #include "ui/common/TexturePreviewCombo.h" #include "FocusMaterialRequest.h" diff --git a/radiant/ui/texturebrowser/MapTextureBrowser.cpp b/radiant/ui/texturebrowser/MapTextureBrowser.cpp new file mode 100644 index 0000000000..ae9405a77b --- /dev/null +++ b/radiant/ui/texturebrowser/MapTextureBrowser.cpp @@ -0,0 +1,10 @@ +#include "MapTextureBrowser.h" + +namespace ui +{ + +MapTextureBrowser::MapTextureBrowser(wxWindow* parent) : + TextureThumbnailBrowser(parent) +{} + +} diff --git a/radiant/ui/texturebrowser/MapTextureBrowser.h b/radiant/ui/texturebrowser/MapTextureBrowser.h new file mode 100644 index 0000000000..8953198109 --- /dev/null +++ b/radiant/ui/texturebrowser/MapTextureBrowser.h @@ -0,0 +1,18 @@ +#pragma once + +#include "TextureThumbnailBrowser.h" + +namespace ui +{ +/** + * Texture thumbnail browser implementation showing all materials + * used in the current map ("in use"). + */ +class MapTextureBrowser : + public TextureThumbnailBrowser +{ +public: + MapTextureBrowser(wxWindow* parent); +}; + +} diff --git a/radiant/ui/texturebrowser/TextureBrowserManager.cpp b/radiant/ui/texturebrowser/TextureBrowserManager.cpp index a98fe120d1..2ea21181c5 100644 --- a/radiant/ui/texturebrowser/TextureBrowserManager.cpp +++ b/radiant/ui/texturebrowser/TextureBrowserManager.cpp @@ -1,5 +1,5 @@ #include "TextureBrowserManager.h" -#include "TextureBrowser.h" +#include "TextureBrowserPanel.h" #include #include @@ -40,7 +40,7 @@ class TextureBrowserControl : wxWindow* createWidget(wxWindow* parent) override { - return new TextureBrowser(parent); + return new TextureBrowserPanel(parent); } }; @@ -56,25 +56,25 @@ std::string TextureBrowserManager::getSelectedShader() void TextureBrowserManager::setSelectedShader(const std::string& shader) { - for (TextureBrowser* browser : _browsers) + for (auto browser : _browsers) { browser->setSelectedShader(shader); } } -void TextureBrowserManager::registerTextureBrowser(TextureBrowser* browser) +void TextureBrowserManager::registerTextureBrowser(TextureBrowserPanel* browser) { _browsers.insert(browser); } -void TextureBrowserManager::unregisterTextureBrowser(TextureBrowser* browser) +void TextureBrowserManager::unregisterTextureBrowser(TextureBrowserPanel* browser) { _browsers.erase(browser); } void TextureBrowserManager::updateAllWindows() { - for (TextureBrowser* browser : _browsers) + for (auto browser : _browsers) { browser->queueUpdate(); } diff --git a/radiant/ui/texturebrowser/TextureBrowserManager.h b/radiant/ui/texturebrowser/TextureBrowserManager.h index 6e2ac4715d..e0d400975d 100644 --- a/radiant/ui/texturebrowser/TextureBrowserManager.h +++ b/radiant/ui/texturebrowser/TextureBrowserManager.h @@ -7,7 +7,7 @@ namespace ui { -class TextureBrowser; +class TextureBrowserPanel; constexpr const char* const RKEY_TEXTURES_HIDE_UNUSED = "user/ui/textures/browser/hideUnused"; constexpr const char* const RKEY_TEXTURES_SHOW_FAVOURITES_ONLY = "user/ui/textures/browser/showFavouritesOnly"; @@ -26,7 +26,7 @@ class TextureBrowserManager : public RegisterableModule { private: - std::set _browsers; + std::set _browsers; sigc::connection _shaderClipboardConn; public: @@ -36,8 +36,8 @@ class TextureBrowserManager : std::string getSelectedShader(); void setSelectedShader(const std::string& shader); - void registerTextureBrowser(TextureBrowser* browser); - void unregisterTextureBrowser(TextureBrowser* browser); + void registerTextureBrowser(TextureBrowserPanel* browser); + void unregisterTextureBrowser(TextureBrowserPanel* browser); // Sends an queueUpdate() call to all registered browsers void updateAllWindows(); diff --git a/radiant/ui/texturebrowser/TextureBrowser.cpp b/radiant/ui/texturebrowser/TextureBrowserPanel.cpp similarity index 58% rename from radiant/ui/texturebrowser/TextureBrowser.cpp rename to radiant/ui/texturebrowser/TextureBrowserPanel.cpp index 5106954ecd..cefc31177b 100644 --- a/radiant/ui/texturebrowser/TextureBrowser.cpp +++ b/radiant/ui/texturebrowser/TextureBrowserPanel.cpp @@ -1,17 +1,17 @@ -#include "TextureBrowser.h" +#include "TextureBrowserPanel.h" #include "TextureBrowserManager.h" #include "ifavourites.h" -#include "MaterialThumbnailBrowser.h" +#include "MapTextureBrowser.h" namespace ui { -TextureBrowser::TextureBrowser(wxWindow* parent) : +TextureBrowserPanel::TextureBrowserPanel(wxWindow* parent) : DockablePanel(parent), _thumbnailBrowser(nullptr) { - _thumbnailBrowser = new MaterialThumbnailBrowser(this); + _thumbnailBrowser = new MapTextureBrowser(this); SetSizer(new wxBoxSizer(wxVERTICAL)); GetSizer()->Add(_thumbnailBrowser, 1, wxEXPAND); @@ -19,7 +19,7 @@ TextureBrowser::TextureBrowser(wxWindow* parent) : GlobalTextureBrowser().registerTextureBrowser(this); } -TextureBrowser::~TextureBrowser() +TextureBrowserPanel::~TextureBrowserPanel() { if (panelIsActive()) { @@ -28,44 +28,44 @@ TextureBrowser::~TextureBrowser() GlobalTextureBrowser().unregisterTextureBrowser(this); } -const std::string& TextureBrowser::getSelectedShader() const +const std::string& TextureBrowserPanel::getSelectedShader() const { return _thumbnailBrowser->getSelectedShader(); } -void TextureBrowser::setSelectedShader(const std::string& newShader) +void TextureBrowserPanel::setSelectedShader(const std::string& newShader) { _thumbnailBrowser->setSelectedShader(newShader); } -void TextureBrowser::onPanelActivated() +void TextureBrowserPanel::onPanelActivated() { connectListeners(); queueUpdate(); } -void TextureBrowser::onPanelDeactivated() +void TextureBrowserPanel::onPanelDeactivated() { disconnectListeners(); } -void TextureBrowser::connectListeners() +void TextureBrowserPanel::connectListeners() { _favouritesChangedHandler = GlobalFavouritesManager().getSignalForType(decl::getTypeName(decl::Type::Material)) - .connect(sigc::mem_fun(this, &TextureBrowser::onFavouritesChanged)); + .connect(sigc::mem_fun(this, &TextureBrowserPanel::onFavouritesChanged)); } -void TextureBrowser::disconnectListeners() +void TextureBrowserPanel::disconnectListeners() { _favouritesChangedHandler.disconnect(); } -void TextureBrowser::onFavouritesChanged() +void TextureBrowserPanel::onFavouritesChanged() { queueUpdate(); } -void TextureBrowser::queueUpdate() +void TextureBrowserPanel::queueUpdate() { if (panelIsActive()) { diff --git a/radiant/ui/texturebrowser/TextureBrowser.h b/radiant/ui/texturebrowser/TextureBrowserPanel.h similarity index 82% rename from radiant/ui/texturebrowser/TextureBrowser.h rename to radiant/ui/texturebrowser/TextureBrowserPanel.h index f0516eea7b..665f3247b6 100644 --- a/radiant/ui/texturebrowser/TextureBrowser.h +++ b/radiant/ui/texturebrowser/TextureBrowserPanel.h @@ -7,21 +7,21 @@ namespace ui { -class MaterialThumbnailBrowser; +class MapTextureBrowser; class TextureBrowserManager; -class TextureBrowser : +class TextureBrowserPanel : public wxutil::DockablePanel, public sigc::trackable { private: sigc::connection _favouritesChangedHandler; - MaterialThumbnailBrowser* _thumbnailBrowser; + MapTextureBrowser* _thumbnailBrowser; public: - TextureBrowser(wxWindow* parent); - ~TextureBrowser() override; + TextureBrowserPanel(wxWindow* parent); + ~TextureBrowserPanel() override; void queueUpdate(); diff --git a/radiant/ui/texturebrowser/MaterialThumbnailBrowser.cpp b/radiant/ui/texturebrowser/TextureThumbnailBrowser.cpp similarity index 81% rename from radiant/ui/texturebrowser/MaterialThumbnailBrowser.cpp rename to radiant/ui/texturebrowser/TextureThumbnailBrowser.cpp index 399d1c1d42..970df16e1b 100644 --- a/radiant/ui/texturebrowser/MaterialThumbnailBrowser.cpp +++ b/radiant/ui/texturebrowser/TextureThumbnailBrowser.cpp @@ -1,4 +1,4 @@ -#include "MaterialThumbnailBrowser.h" +#include "TextureThumbnailBrowser.h" #include "i18n.h" #include "itextstream.h" @@ -31,6 +31,7 @@ #include "string/case_conv.h" #include "debugging/gl.h" #include "ui/mediabrowser/FocusMaterialRequest.h" +#include "TextureBrowserManager.h" namespace ui { @@ -50,16 +51,16 @@ namespace constexpr int TILE_BORDER = 2; } -class MaterialThumbnailBrowser::TextureTile +class TextureThumbnailBrowser::TextureTile { private: - MaterialThumbnailBrowser& _owner; + TextureThumbnailBrowser& _owner; public: Vector2i size; Vector2i position; MaterialPtr material; - TextureTile(MaterialThumbnailBrowser& owner) : + TextureTile(TextureThumbnailBrowser& owner) : _owner(owner) {} @@ -205,7 +206,7 @@ class MaterialThumbnailBrowser::TextureTile } }; -MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : +TextureThumbnailBrowser::TextureThumbnailBrowser(wxWindow* parent) : wxPanel(parent), _popupX(-1), _popupY(-1), @@ -256,16 +257,16 @@ MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : TEXTURE_ICON); _popupMenu->addItem(_seekInMediaBrowser, - std::bind(&MaterialThumbnailBrowser::onSeekInMediaBrowser, this), - std::bind(&MaterialThumbnailBrowser::checkSeekInMediaBrowser, this)); + std::bind(&TextureThumbnailBrowser::onSeekInMediaBrowser, this), + std::bind(&TextureThumbnailBrowser::checkSeekInMediaBrowser, this)); // Catch the RightUp event during mouse capture _freezePointer.connectMouseEvents( wxutil::FreezePointer::MouseEventFunction(), - std::bind(&MaterialThumbnailBrowser::onGLMouseButtonRelease, this, std::placeholders::_1)); + std::bind(&TextureThumbnailBrowser::onGLMouseButtonRelease, this, std::placeholders::_1)); GlobalMaterialManager().signal_activeShadersChanged().connect( - sigc::mem_fun(this, &MaterialThumbnailBrowser::onActiveShadersChanged)); + sigc::mem_fun(this, &TextureThumbnailBrowser::onActiveShadersChanged)); SetSizer(new wxBoxSizer(wxHORIZONTAL)); @@ -290,9 +291,9 @@ MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : // Filter text entry { _filter = new wxutil::NonModalEntry(texbox, - std::bind(&MaterialThumbnailBrowser::queueDraw, this), - std::bind(&MaterialThumbnailBrowser::clearFilter, this), - std::bind(&MaterialThumbnailBrowser::filterChanged, this), + std::bind(&TextureThumbnailBrowser::queueDraw, this), + std::bind(&TextureThumbnailBrowser::clearFilter, this), + std::bind(&TextureThumbnailBrowser::filterChanged, this), false); texbox->GetSizer()->Add(_filter, 0, wxEXPAND); @@ -309,18 +310,18 @@ MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : // GL drawing area { - _wxGLWidget = new wxutil::GLWidget(texbox, std::bind(&MaterialThumbnailBrowser::onRender, this), "TextureBrowser"); + _wxGLWidget = new wxutil::GLWidget(texbox, std::bind(&TextureThumbnailBrowser::onRender, this), "TextureBrowser"); - _wxGLWidget->Bind(wxEVT_SIZE, &MaterialThumbnailBrowser::onGLResize, this); - _wxGLWidget->Bind(wxEVT_MOUSEWHEEL, &MaterialThumbnailBrowser::onGLMouseScroll, this); + _wxGLWidget->Bind(wxEVT_SIZE, &TextureThumbnailBrowser::onGLResize, this); + _wxGLWidget->Bind(wxEVT_MOUSEWHEEL, &TextureThumbnailBrowser::onGLMouseScroll, this); _wxGLWidget->Bind(wxEVT_MOTION, [=](wxMouseEvent& e) { SetToolTip("Moved"); }); - _wxGLWidget->Bind(wxEVT_LEFT_DOWN, &MaterialThumbnailBrowser::onGLMouseButtonPress, this); - _wxGLWidget->Bind(wxEVT_LEFT_DCLICK, &MaterialThumbnailBrowser::onGLMouseButtonPress, this); - _wxGLWidget->Bind(wxEVT_LEFT_UP, &MaterialThumbnailBrowser::onGLMouseButtonRelease, this); - _wxGLWidget->Bind(wxEVT_RIGHT_DOWN, &MaterialThumbnailBrowser::onGLMouseButtonPress, this); - _wxGLWidget->Bind(wxEVT_RIGHT_DCLICK, &MaterialThumbnailBrowser::onGLMouseButtonPress, this); - _wxGLWidget->Bind(wxEVT_RIGHT_UP, &MaterialThumbnailBrowser::onGLMouseButtonRelease, this); + _wxGLWidget->Bind(wxEVT_LEFT_DOWN, &TextureThumbnailBrowser::onGLMouseButtonPress, this); + _wxGLWidget->Bind(wxEVT_LEFT_DCLICK, &TextureThumbnailBrowser::onGLMouseButtonPress, this); + _wxGLWidget->Bind(wxEVT_LEFT_UP, &TextureThumbnailBrowser::onGLMouseButtonRelease, this); + _wxGLWidget->Bind(wxEVT_RIGHT_DOWN, &TextureThumbnailBrowser::onGLMouseButtonPress, this); + _wxGLWidget->Bind(wxEVT_RIGHT_DCLICK, &TextureThumbnailBrowser::onGLMouseButtonPress, this); + _wxGLWidget->Bind(wxEVT_RIGHT_UP, &TextureThumbnailBrowser::onGLMouseButtonRelease, this); texbox->GetSizer()->Add(_wxGLWidget, 1, wxEXPAND); } @@ -330,8 +331,8 @@ MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : // Scrollbar { _scrollbar = new wxScrollBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL); - _scrollbar->Bind(wxEVT_SCROLL_CHANGED, &MaterialThumbnailBrowser::onScrollChanged, this); - _scrollbar->Bind(wxEVT_SCROLL_THUMBTRACK, &MaterialThumbnailBrowser::onScrollChanged, this); + _scrollbar->Bind(wxEVT_SCROLL_CHANGED, &TextureThumbnailBrowser::onScrollChanged, this); + _scrollbar->Bind(wxEVT_SCROLL_THUMBTRACK, &TextureThumbnailBrowser::onScrollChanged, this); GetSizer()->Add(_scrollbar, 0, wxEXPAND); @@ -348,7 +349,7 @@ MaterialThumbnailBrowser::MaterialThumbnailBrowser(wxWindow* parent) : updateScroll(); } -void MaterialThumbnailBrowser::loadScaleFromRegistry() +void TextureThumbnailBrowser::loadScaleFromRegistry() { int index = registry::getValue(RKEY_TEXTURE_SCALE); @@ -365,14 +366,14 @@ void MaterialThumbnailBrowser::loadScaleFromRegistry() queueDraw(); } -void MaterialThumbnailBrowser::observeKey(const std::string& key) +void TextureThumbnailBrowser::observeKey(const std::string& key) { GlobalRegistry().signalForKey(key).connect( - sigc::mem_fun(this, &MaterialThumbnailBrowser::keyChanged) + sigc::mem_fun(this, &TextureThumbnailBrowser::keyChanged) ); } -void MaterialThumbnailBrowser::queueDraw() +void TextureThumbnailBrowser::queueDraw() { if (_wxGLWidget != nullptr) { @@ -386,14 +387,14 @@ void MaterialThumbnailBrowser::queueDraw() } } -void MaterialThumbnailBrowser::clearFilter() +void TextureThumbnailBrowser::clearFilter() { _filter->SetValue(""); queueUpdate(); queueDraw(); } -void MaterialThumbnailBrowser::filterChanged() +void TextureThumbnailBrowser::filterChanged() { if (_filterIsIncremental) { @@ -402,7 +403,7 @@ void MaterialThumbnailBrowser::filterChanged() } } -void MaterialThumbnailBrowser::keyChanged() +void TextureThumbnailBrowser::keyChanged() { _hideUnused = registry::getValue(RKEY_TEXTURES_HIDE_UNUSED); _showFavouritesOnly = registry::getValue(RKEY_TEXTURES_SHOW_FAVOURITES_ONLY); @@ -441,7 +442,7 @@ void MaterialThumbnailBrowser::keyChanged() } // Return the display width of a texture in the texture browser -int MaterialThumbnailBrowser::getTextureWidth(const Texture& tex) const +int TextureThumbnailBrowser::getTextureWidth(const Texture& tex) const { if (!_useUniformScale) { @@ -462,7 +463,7 @@ int MaterialThumbnailBrowser::getTextureWidth(const Texture& tex) const } } -int MaterialThumbnailBrowser::getTextureHeight(const Texture& tex) const +int TextureThumbnailBrowser::getTextureHeight(const Texture& tex) const { if (!_useUniformScale) { @@ -484,17 +485,17 @@ int MaterialThumbnailBrowser::getTextureHeight(const Texture& tex) const } } -const std::string& MaterialThumbnailBrowser::getSelectedShader() const +const std::string& TextureThumbnailBrowser::getSelectedShader() const { return _shader; } -std::string MaterialThumbnailBrowser::getFilter() +std::string TextureThumbnailBrowser::getFilter() { return _filter->GetValue().ToStdString(); } -void MaterialThumbnailBrowser::setSelectedShader(const std::string& newShader) +void TextureThumbnailBrowser::setSelectedShader(const std::string& newShader) { _shader = newShader; focus(_shader); @@ -503,7 +504,7 @@ void MaterialThumbnailBrowser::setSelectedShader(const std::string& newShader) // Data structure keeping track of the virtual position for the next texture to // be drawn in. Only the getPositionForTexture() method should access the values // in this structure. -class MaterialThumbnailBrowser::CurrentPosition +class TextureThumbnailBrowser::CurrentPosition { public: @@ -515,7 +516,7 @@ class MaterialThumbnailBrowser::CurrentPosition int rowAdvance; }; -Vector2i MaterialThumbnailBrowser::getPositionForTexture(CurrentPosition& currentPos, +Vector2i TextureThumbnailBrowser::getPositionForTexture(CurrentPosition& currentPos, const Texture& tex) const { int nWidth = getTextureWidth(tex); @@ -548,7 +549,7 @@ Vector2i MaterialThumbnailBrowser::getPositionForTexture(CurrentPosition& curren } // if texture_showinuse jump over non in-use textures -bool MaterialThumbnailBrowser::materialIsVisible(const MaterialPtr& material) +bool TextureThumbnailBrowser::materialIsVisible(const MaterialPtr& material) { if (!material) { @@ -609,12 +610,12 @@ bool MaterialThumbnailBrowser::materialIsVisible(const MaterialPtr& material) return true; } -int MaterialThumbnailBrowser::getTotalHeight() +int TextureThumbnailBrowser::getTotalHeight() { return _entireSpaceHeight; } -void MaterialThumbnailBrowser::clampOriginY() +void TextureThumbnailBrowser::clampOriginY() { if (_viewportOriginY > 0) { @@ -629,7 +630,7 @@ void MaterialThumbnailBrowser::clampOriginY() } } -int MaterialThumbnailBrowser::getOriginY() +int TextureThumbnailBrowser::getOriginY() { if (_originInvalid) { @@ -641,7 +642,7 @@ int MaterialThumbnailBrowser::getOriginY() return _viewportOriginY; } -void MaterialThumbnailBrowser::setOriginY(int newOriginY) +void TextureThumbnailBrowser::setOriginY(int newOriginY) { _viewportOriginY = newOriginY; clampOriginY(); @@ -649,13 +650,13 @@ void MaterialThumbnailBrowser::setOriginY(int newOriginY) queueDraw(); } -void MaterialThumbnailBrowser::queueUpdate() +void TextureThumbnailBrowser::queueUpdate() { _updateNeeded = true; requestIdleCallback(); } -void MaterialThumbnailBrowser::performUpdate() +void TextureThumbnailBrowser::performUpdate() { // During startup the openGL module might not have created the font yet if (GlobalOpenGL().getFontHeight() == 0) @@ -681,8 +682,8 @@ void MaterialThumbnailBrowser::performUpdate() } // Create a new tile for this material - _tiles.push_back(TextureTile(*this)); - TextureTile& tile = _tiles.back(); + _tiles.push_back(std::make_shared(*this)); + auto& tile = *_tiles.back(); tile.material = mat; @@ -702,35 +703,35 @@ void MaterialThumbnailBrowser::performUpdate() clampOriginY(); // scroll value might be out of range after the update } -void MaterialThumbnailBrowser::onActiveShadersChanged() +void TextureThumbnailBrowser::onActiveShadersChanged() { queueUpdate(); } -void MaterialThumbnailBrowser::focus(const std::string& name) +void TextureThumbnailBrowser::focus(const std::string& name) { if (name.empty()) { return; } - for (const TextureTile& tile : _tiles) + for (const auto& tile : _tiles) { // we have found when texdef->name and the shader name match // NOTE: as everywhere else for our comparisons, we are not case sensitive - if (shader_equal(name, tile.material->getName())) + if (shader_equal(name, tile->material->getName())) { // scroll origin so the texture is completely on screen int originy = getOriginY(); - if (tile.position.y() > originy) + if (tile->position.y() > originy) { - originy = tile.position.y(); + originy = tile->position.y(); } - if (tile.position.y() - tile.size.y() < originy - getViewportHeight()) + if (tile->position.y() - tile->size.y() < originy - getViewportHeight()) { - originy = tile.position.y() - tile.size.y() + getViewportHeight(); + originy = tile->position.y() - tile->size.y() + getViewportHeight(); } setOriginY(originy); @@ -738,23 +739,23 @@ void MaterialThumbnailBrowser::focus(const std::string& name) } } -MaterialPtr MaterialThumbnailBrowser::getShaderAtCoords(int x, int y) +MaterialPtr TextureThumbnailBrowser::getShaderAtCoords(int x, int y) { y += getOriginY() - _viewportSize.y(); - for (const TextureTile& tile : _tiles) + for (const auto& tile : _tiles) { - if (x > tile.position.x() && x - tile.position.x() < tile.size.x() && - y < tile.position.y() && tile.position.y() - y < tile.size.y() + FONT_HEIGHT()) + if (x > tile->position.x() && x - tile->position.x() < tile->size.x() && + y < tile->position.y() && tile->position.y() - y < tile->size.y() + FONT_HEIGHT()) { - return tile.material; + return tile->material; } } return {}; } -void MaterialThumbnailBrowser::selectTextureAt(int mx, int my) +void TextureThumbnailBrowser::selectTextureAt(int mx, int my) { auto shader = getShaderAtCoords(mx, my); @@ -770,7 +771,7 @@ void MaterialThumbnailBrowser::selectTextureAt(int mx, int my) } } -void MaterialThumbnailBrowser::draw() +void TextureThumbnailBrowser::draw() { if (_viewportSize.x() == 0 || _viewportSize.y() == 0) { @@ -802,9 +803,9 @@ void MaterialThumbnailBrowser::draw() glEnable (GL_TEXTURE_2D); glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); - for (TextureTile& tile : _tiles) + for (const auto& tile : _tiles) { - tile.render(_showNamesKey.get()); + tile->render(_showNamesKey.get()); } debug::assertNoGlErrors(); @@ -816,7 +817,7 @@ void MaterialThumbnailBrowser::draw() glPopAttrib(); } -void MaterialThumbnailBrowser::doMouseWheel(bool wheelUp) +void TextureThumbnailBrowser::doMouseWheel(bool wheelUp) { int originy = getOriginY(); @@ -830,7 +831,7 @@ void MaterialThumbnailBrowser::doMouseWheel(bool wheelUp) setOriginY(originy); } -bool MaterialThumbnailBrowser::checkSeekInMediaBrowser() +bool TextureThumbnailBrowser::checkSeekInMediaBrowser() { if (_popupX > 0 && _popupY > 0) { @@ -842,7 +843,7 @@ bool MaterialThumbnailBrowser::checkSeekInMediaBrowser() return false; } -void MaterialThumbnailBrowser::openContextMenu() { +void TextureThumbnailBrowser::openContextMenu() { std::string shaderText = _("No shader"); @@ -862,7 +863,7 @@ void MaterialThumbnailBrowser::openContextMenu() { _popupMenu->show(_wxGLWidget); } -void MaterialThumbnailBrowser::onSeekInMediaBrowser() +void TextureThumbnailBrowser::onSeekInMediaBrowser() { if (_popupX > 0 && _popupY > 0) { @@ -878,7 +879,7 @@ void MaterialThumbnailBrowser::onSeekInMediaBrowser() _popupY = -1; } -void MaterialThumbnailBrowser::onFrozenMouseMotion(int x, int y, unsigned int state) +void TextureThumbnailBrowser::onFrozenMouseMotion(int x, int y, unsigned int state) { if (y != 0) { @@ -896,17 +897,17 @@ void MaterialThumbnailBrowser::onFrozenMouseMotion(int x, int y, unsigned int st } } -void MaterialThumbnailBrowser::onFrozenMouseCaptureLost() +void TextureThumbnailBrowser::onFrozenMouseCaptureLost() { _freezePointer.endCapture(); } -void MaterialThumbnailBrowser::scrollChanged(double value) +void TextureThumbnailBrowser::scrollChanged(double value) { setOriginY(-static_cast(value)); } -void MaterialThumbnailBrowser::updateScroll() +void TextureThumbnailBrowser::updateScroll() { if (_showTextureScrollbar) { @@ -918,18 +919,18 @@ void MaterialThumbnailBrowser::updateScroll() } } -int MaterialThumbnailBrowser::getViewportHeight() +int TextureThumbnailBrowser::getViewportHeight() { return _viewportSize.y(); } -void MaterialThumbnailBrowser::onScrollChanged(wxScrollEvent& ev) +void TextureThumbnailBrowser::onScrollChanged(wxScrollEvent& ev) { setOriginY(-ev.GetPosition()); queueDraw(); } -void MaterialThumbnailBrowser::onGLResize(wxSizeEvent& ev) +void TextureThumbnailBrowser::onGLResize(wxSizeEvent& ev) { _viewportSize = Vector2i(ev.GetSize().GetWidth(), ev.GetSize().GetHeight()); @@ -939,7 +940,7 @@ void MaterialThumbnailBrowser::onGLResize(wxSizeEvent& ev) ev.Skip(); } -void MaterialThumbnailBrowser::onGLMouseScroll(wxMouseEvent& ev) +void TextureThumbnailBrowser::onGLMouseScroll(wxMouseEvent& ev) { if (ev.GetWheelRotation() > 0) { @@ -951,13 +952,13 @@ void MaterialThumbnailBrowser::onGLMouseScroll(wxMouseEvent& ev) } } -void MaterialThumbnailBrowser::onGLMouseButtonPress(wxMouseEvent& ev) +void TextureThumbnailBrowser::onGLMouseButtonPress(wxMouseEvent& ev) { if (ev.RightDown()) { _freezePointer.startCapture(_wxGLWidget, - std::bind(&MaterialThumbnailBrowser::onFrozenMouseMotion, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), - std::bind(&MaterialThumbnailBrowser::onFrozenMouseCaptureLost, this)); + std::bind(&TextureThumbnailBrowser::onFrozenMouseMotion, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), + std::bind(&TextureThumbnailBrowser::onFrozenMouseCaptureLost, this)); // Store the coords of the mouse pointer for later reference _popupX = static_cast(ev.GetX()); @@ -973,7 +974,7 @@ void MaterialThumbnailBrowser::onGLMouseButtonPress(wxMouseEvent& ev) } } -void MaterialThumbnailBrowser::onGLMouseButtonRelease(wxMouseEvent& ev) +void TextureThumbnailBrowser::onGLMouseButtonRelease(wxMouseEvent& ev) { if (ev.RightUp()) { @@ -991,7 +992,7 @@ void MaterialThumbnailBrowser::onGLMouseButtonRelease(wxMouseEvent& ev) } } -void MaterialThumbnailBrowser::onIdle() +void TextureThumbnailBrowser::onIdle() { if (_updateNeeded) { @@ -1000,7 +1001,7 @@ void MaterialThumbnailBrowser::onIdle() } } -bool MaterialThumbnailBrowser::onRender() +bool TextureThumbnailBrowser::onRender() { if (!GlobalMainFrame().screenUpdatesEnabled()) { diff --git a/radiant/ui/texturebrowser/MaterialThumbnailBrowser.h b/radiant/ui/texturebrowser/TextureThumbnailBrowser.h similarity index 95% rename from radiant/ui/texturebrowser/MaterialThumbnailBrowser.h rename to radiant/ui/texturebrowser/TextureThumbnailBrowser.h index d1b226fa54..ffb22504c2 100644 --- a/radiant/ui/texturebrowser/MaterialThumbnailBrowser.h +++ b/radiant/ui/texturebrowser/TextureThumbnailBrowser.h @@ -2,13 +2,10 @@ #include "wxutil/FreezePointer.h" -#include #include "texturelib.h" #include "wxutil/menu/PopupMenu.h" #include "registry/CachedKey.h" -#include "TextureBrowserManager.h" - #include "wxutil/DockablePanel.h" #include "wxutil/event/SingleIdleCallback.h" @@ -26,19 +23,19 @@ namespace ui { /** - * \brief Widget for rendering active textures as tiles in a scrollable + * \brief Widget for rendering textures thumbnails as tiles in a scrollable * container. * * Uses an OpenGL widget to render a rectangular view into a "virtual space" * containing all active texture tiles. */ -class MaterialThumbnailBrowser : +class TextureThumbnailBrowser : public wxPanel, public sigc::trackable, public wxutil::SingleIdleCallback { class TextureTile; - typedef std::list TextureTiles; + typedef std::list> TextureTiles; TextureTiles _tiles; // Size of the 2D viewport. This is the geometry of the render window, not @@ -115,7 +112,7 @@ class MaterialThumbnailBrowser : bool _updateNeeded; public: - MaterialThumbnailBrowser(wxWindow* parent); + TextureThumbnailBrowser(wxWindow* parent); // Schedules an update of the renderable items void queueUpdate(); diff --git a/radiant/xyview/XYWnd.cpp b/radiant/xyview/XYWnd.cpp index 533b57ab31..764cf8bfdd 100644 --- a/radiant/xyview/XYWnd.cpp +++ b/radiant/xyview/XYWnd.cpp @@ -19,7 +19,6 @@ #include "camera/CameraSettings.h" #include "ui/ortho/OrthoContextMenu.h" #include "ui/overlay/Overlay.h" -#include "ui/texturebrowser/TextureBrowser.h" #include "registry/registry.h" #include "selection/Device.h" #include "selection/SelectionVolume.h" diff --git a/radiant/xyview/tools/BrushCreatorTool.cpp b/radiant/xyview/tools/BrushCreatorTool.cpp index c499d319f4..29a6464040 100644 --- a/radiant/xyview/tools/BrushCreatorTool.cpp +++ b/radiant/xyview/tools/BrushCreatorTool.cpp @@ -5,9 +5,9 @@ #include "iclipper.h" #include "scenelib.h" #include "selectionlib.h" -#include "ui/texturebrowser/TextureBrowser.h" #include "command/ExecutionNotPossible.h" #include "XYMouseToolEvent.h" +#include "ui/texturebrowser/TextureBrowserPanel.h" #include "ui/texturebrowser/TextureBrowserManager.h" namespace ui diff --git a/tools/msvc/DarkRadiant.vcxproj b/tools/msvc/DarkRadiant.vcxproj index 78866675dd..a7cdc594d0 100644 --- a/tools/msvc/DarkRadiant.vcxproj +++ b/tools/msvc/DarkRadiant.vcxproj @@ -352,9 +352,10 @@ - - + + + @@ -581,9 +582,10 @@ - - + + + diff --git a/tools/msvc/DarkRadiant.vcxproj.filters b/tools/msvc/DarkRadiant.vcxproj.filters index 1ca4ee51b9..8ce140ac36 100644 --- a/tools/msvc/DarkRadiant.vcxproj.filters +++ b/tools/msvc/DarkRadiant.vcxproj.filters @@ -700,10 +700,13 @@ src\ui\mainframe - + src\ui\texturebrowser - + + src\ui\texturebrowser + + src\ui\texturebrowser @@ -1410,10 +1413,13 @@ src\ui\mainframe - + + src\ui\texturebrowser + + src\ui\texturebrowser - + src\ui\texturebrowser