diff options
Diffstat (limited to 'indra/newview/llfloaterwindowsize.cpp')
-rw-r--r-- | indra/newview/llfloaterwindowsize.cpp | 248 |
1 files changed, 124 insertions, 124 deletions
diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp index 1d17654c53..eed9f71f5b 100644 --- a/indra/newview/llfloaterwindowsize.cpp +++ b/indra/newview/llfloaterwindowsize.cpp @@ -1,124 +1,124 @@ -/** - * @file llfloaterwindowsize.cpp - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterwindowsize.h" - -// Viewer includes -#include "llviewerwindow.h" - -// Linden library includes -#include "llcombobox.h" -#include "llfloater.h" -#include "llfloaterreg.h" -#include "llregex.h" -#include "lluictrl.h" - -// Extract from strings of the form "<width> x <height>", e.g. "640 x 480". -bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *height) -{ - boost::cmatch what; - // matches (any number)(any non-number)(any number) - const boost::regex expression("([0-9]+)[^0-9]+([0-9]+)"); - if (ll_regex_match(instr.c_str(), what, expression)) - { - *width = atoi(what[1].first); - *height = atoi(what[2].first); - return true; - } - - *width = 0; - *height = 0; - return false; -} - - -LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key) -: LLFloater(key) -{} - -LLFloaterWindowSize::~LLFloaterWindowSize() -{} - -bool LLFloaterWindowSize::postBuild() -{ - center(); - initWindowSizeControls(); - getChild<LLUICtrl>("set_btn")->setCommitCallback( - boost::bind(&LLFloaterWindowSize::onClickSet, this)); - getChild<LLUICtrl>("cancel_btn")->setCommitCallback( - boost::bind(&LLFloaterWindowSize::onClickCancel, this)); - setDefaultBtn("set_btn"); - return true; -} - -void LLFloaterWindowSize::initWindowSizeControls() -{ - LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo"); - - // Look to see if current window size matches existing window sizes, if so then - // just set the selection value... - const U32 height = gViewerWindow->getWindowHeightRaw(); - const U32 width = gViewerWindow->getWindowWidthRaw(); - for (S32 i=0; i < ctrl_window_size->getItemCount(); i++) - { - U32 height_test = 0; - U32 width_test = 0; - ctrl_window_size->setCurrentByIndex(i); - std::string resolution = ctrl_window_size->getValue().asString(); - if (extractWindowSizeFromString(resolution, &width_test, &height_test)) - { - if ((height_test == height) && (width_test == width)) - { - return; - } - } - } - // ...otherwise, add a new entry with the current window height/width. - LLUIString resolution_label = getString("resolution_format"); - resolution_label.setArg("[RES_X]", llformat("%d", width)); - resolution_label.setArg("[RES_Y]", llformat("%d", height)); - ctrl_window_size->add(resolution_label, ADD_TOP); - ctrl_window_size->setCurrentByIndex(0); -} - -void LLFloaterWindowSize::onClickSet() -{ - LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo"); - U32 width = 0; - U32 height = 0; - std::string resolution = ctrl_window_size->getValue().asString(); - if (extractWindowSizeFromString(resolution, &width, &height)) - { - LLViewerWindow::movieSize(width, height); - } - closeFloater(); -} - -void LLFloaterWindowSize::onClickCancel() -{ - closeFloater(); -} +/**
+ * @file llfloaterwindowsize.cpp
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterwindowsize.h"
+
+// Viewer includes
+#include "llviewerwindow.h"
+
+// Linden library includes
+#include "llcombobox.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llregex.h"
+#include "lluictrl.h"
+
+// Extract from strings of the form "<width> x <height>", e.g. "640 x 480".
+bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *height)
+{
+ boost::cmatch what;
+ // matches (any number)(any non-number)(any number)
+ const boost::regex expression("([0-9]+)[^0-9]+([0-9]+)");
+ if (ll_regex_match(instr.c_str(), what, expression))
+ {
+ *width = atoi(what[1].first);
+ *height = atoi(what[2].first);
+ return true;
+ }
+
+ *width = 0;
+ *height = 0;
+ return false;
+}
+
+
+LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key)
+: LLFloater(key)
+{}
+
+LLFloaterWindowSize::~LLFloaterWindowSize()
+{}
+
+bool LLFloaterWindowSize::postBuild()
+{
+ center();
+ initWindowSizeControls();
+ getChild<LLUICtrl>("set_btn")->setCommitCallback(
+ boost::bind(&LLFloaterWindowSize::onClickSet, this));
+ getChild<LLUICtrl>("cancel_btn")->setCommitCallback(
+ boost::bind(&LLFloaterWindowSize::onClickCancel, this));
+ setDefaultBtn("set_btn");
+ return true;
+}
+
+void LLFloaterWindowSize::initWindowSizeControls()
+{
+ LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo");
+
+ // Look to see if current window size matches existing window sizes, if so then
+ // just set the selection value...
+ const U32 height = gViewerWindow->getWindowHeightRaw();
+ const U32 width = gViewerWindow->getWindowWidthRaw();
+ for (S32 i=0; i < ctrl_window_size->getItemCount(); i++)
+ {
+ U32 height_test = 0;
+ U32 width_test = 0;
+ ctrl_window_size->setCurrentByIndex(i);
+ std::string resolution = ctrl_window_size->getValue().asString();
+ if (extractWindowSizeFromString(resolution, &width_test, &height_test))
+ {
+ if ((height_test == height) && (width_test == width))
+ {
+ return;
+ }
+ }
+ }
+ // ...otherwise, add a new entry with the current window height/width.
+ LLUIString resolution_label = getString("resolution_format");
+ resolution_label.setArg("[RES_X]", llformat("%d", width));
+ resolution_label.setArg("[RES_Y]", llformat("%d", height));
+ ctrl_window_size->add(resolution_label, ADD_TOP);
+ ctrl_window_size->setCurrentByIndex(0);
+}
+
+void LLFloaterWindowSize::onClickSet()
+{
+ LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo");
+ U32 width = 0;
+ U32 height = 0;
+ std::string resolution = ctrl_window_size->getValue().asString();
+ if (extractWindowSizeFromString(resolution, &width, &height))
+ {
+ LLViewerWindow::movieSize(width, height);
+ }
+ closeFloater();
+}
+
+void LLFloaterWindowSize::onClickCancel()
+{
+ closeFloater();
+}
|