examples_window.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/examples_window.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/utf_string_conversions.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/combobox_model.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ui_base_paths.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/text_button.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/combobox/combobox.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/tabbed_pane/tabbed_pane.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/bubble_example.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/button_example.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/combobox_example.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/double_split_view_example.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/label_example.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/link_example.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/menu_example.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/message_box_example.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/native_theme_button_example.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/native_theme_checkbox_example.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/progress_bar_example.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/radio_button_example.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/scroll_view_example.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/single_split_view_example.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/slider_example.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/tabbed_pane_example.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/table_example.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/text_example.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/textfield_example.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/throbber_example.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/tree_view_example.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/widget_example.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/focus/accelerator_handler.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/fill_layout.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_delegate.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace examples { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Model for the examples that are being added via AddExample(). 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ComboboxModelExampleList : public ui::ComboboxModel { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ComboboxModelExampleList() {} 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ComboboxModelExampleList() {} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE { return example_list_.size(); } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetItemAt(int index) OVERRIDE { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return UTF8ToUTF16(example_list_[index]->example_title()); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* GetItemViewAt(int index) { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return example_list_[index]->example_view(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddExample(ExampleBase* example) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_list_.push_back(example); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScopedVector<ExampleBase> example_list_; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ComboboxModelExampleList); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExamplesWindowContents : public WidgetDelegateView, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ComboboxListener { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExamplesWindowContents(Operation operation) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : combobox_(new Combobox(&combobox_model_)), 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_(new View), 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_label_(new Label), 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) operation_(operation) { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instance_ = this; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_->set_listener(this); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ExamplesWindowContents() {} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Prints a message in the status area, at the bottom of the window. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetStatus(const std::string& status) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_label_->SetText(UTF8ToUTF16(status)); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ExamplesWindowContents* instance() { return instance_; } 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from WidgetDelegateView: 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanResize() const OVERRIDE { return true; } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanMaximize() const OVERRIDE { return true; } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetWindowTitle() const OVERRIDE { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ASCIIToUTF16("Views Examples"); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual View* GetContentsView() OVERRIDE { return this; } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WindowClosing() OVERRIDE { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instance_ = NULL; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (operation_ == QUIT_ON_CLOSE) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MessageLoopForUI::current()->Quit(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from View: 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ViewHierarchyChanged(bool is_add, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* parent, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* child) OVERRIDE { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (is_add && child == this) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InitExamplesWindow(); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ComboboxListener: 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSelectedIndexChanged(Combobox* combobox) OVERRIDE { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(combobox, combobox_); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(combobox->selected_index() < combobox_model_.GetItemCount()); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->RemoveAllChildViews(false); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->AddChildView(combobox_model_.GetItemViewAt( 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox->selected_index())); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->RequestFocus(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetStatus(std::string()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Layout(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the layout within the examples window. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitExamplesWindow() { 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddExamples(); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_background(Background::CreateStandardPanelBackground()); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GridLayout* layout = new GridLayout(this); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLayoutManager(layout); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ColumnSet* column_set = layout->AddColumnSet(0); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddPaddingColumn(0, 5); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GridLayout::USE_PREF, 0, 0); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddPaddingColumn(0, 5); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, 5); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0 /* no expand */, 0); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(combobox_); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (combobox_model_.GetItemCount() > 0) { 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(1, 0); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->SetLayoutManager(new FillLayout()); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->AddChildView(combobox_model_.GetItemViewAt(0)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(example_shown_); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0 /* no expand */, 0); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(status_label_); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, 5); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds all the individual examples to the combobox model. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddExamples() { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Please keep this list in alphabetical order! 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new BubbleExample); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new ButtonExample); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new ComboboxExample); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new DoubleSplitViewExample); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new LabelExample); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new LinkExample); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new MenuExample); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new MessageBoxExample); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new NativeThemeButtonExample); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new NativeThemeCheckboxExample); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new ProgressBarExample); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new RadioButtonExample); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new ScrollViewExample); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new SingleSplitViewExample); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new SliderExample); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new TabbedPaneExample); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new TableExample); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new TextExample); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new TextfieldExample); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new ThrobberExample); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new TreeViewExample); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_model_.AddExample(new WidgetExample); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ExamplesWindowContents* instance_; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ComboboxModelExampleList combobox_model_; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Combobox* combobox_; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* example_shown_; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Label* status_label_; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Operation operation_; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExamplesWindowContents); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExamplesWindowContents* ExamplesWindowContents::instance_ = NULL; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShowExamplesWindow(Operation operation) { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExamplesWindowContents::instance()) { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExamplesWindowContents::instance()->GetWidget()->Activate(); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Widget::CreateWindowWithBounds(new ExamplesWindowContents(operation), 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect(0, 0, 850, 300))->Show(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LogStatus(const std::string& string) { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExamplesWindowContents::instance()->SetStatus(string); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace examples 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 211