[Racer-svn] SF.net SVN: racer:[251] trunk/racer_editor
Status: Alpha
Brought to you by:
jlegg
From: <jl...@us...> - 2010-02-13 04:25:58
|
Revision: 251 http://racer.svn.sourceforge.net/racer/?rev=251&view=rev Author: jlegg Date: 2010-02-13 04:25:52 +0000 (Sat, 13 Feb 2010) Log Message: ----------- Make starting the editor more responsive by not searching for themes until the window is drawn. Modified Paths: -------------- trunk/racer_editor/EditorWindow.cpp trunk/racer_editor/NewForm.cpp trunk/racer_editor/NewForm.h Modified: trunk/racer_editor/EditorWindow.cpp =================================================================== --- trunk/racer_editor/EditorWindow.cpp 2010-02-13 03:03:43 UTC (rev 250) +++ trunk/racer_editor/EditorWindow.cpp 2010-02-13 04:25:52 UTC (rev 251) @@ -39,6 +39,14 @@ m_new_form.show(); on_action_file_new(); show(); + // Find the themes after the window is shown to make starting the program + // more responsive. + + while (Gtk::Main::instance()->events_pending()) + { + Gtk::Main::instance()->iteration(); + } + m_new_form.find_themes(); } void EditorWindow::assemble_ui() Modified: trunk/racer_editor/NewForm.cpp =================================================================== --- trunk/racer_editor/NewForm.cpp 2010-02-13 03:03:43 UTC (rev 250) +++ trunk/racer_editor/NewForm.cpp 2010-02-13 04:25:52 UTC (rev 251) @@ -18,8 +18,10 @@ NewForm::NewForm(Gtk::Window & window) : Gtk::VBox(false, 2) , window(window) + , caption("Loading") , create_button(Gtk::Stock::NEW) , list_model_ptr(Gtk::ListStore::create(theme_model_columns)) + , m_loading(true) { // caption pack_start(caption, false, true); @@ -31,21 +33,21 @@ theme_icon_view.set_pixbuf_column(1); theme_icon_view.set_tooltip_column(2); theme_icon_view.signal_item_activated().connect(sigc::mem_fun(*this, &NewForm::on_item_activated)); - // Add themes to the theme_icon_view. - set_themes(); - // check we found some. - test_themes_avaliable(); // pack and show icon view container m_scrolled_window.add(theme_icon_view); m_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); pack_start(m_scrolled_window); theme_icon_view.show(); + // Show area, only to reduce flicker in normal case when themes are found. + m_scrolled_window.show(); // create button create_button.get_image()->show(); pack_end(create_button, false, true); create_button.signal_clicked().connect(sigc::mem_fun(*this, &NewForm::on_new_button_clicked)); + // Show create button, only to reduce flicker in normal case. + create_button.show(); } NewForm::~NewForm() @@ -53,6 +55,18 @@ } +void NewForm::find_themes() +{ + if (m_loading) + { + m_loading = false; + // Add themes to the theme_icon_view. + set_themes(); + // check we found some. + test_themes_avaliable(); + } +} + void NewForm::set_themes() { add_themes_from("data"); Modified: trunk/racer_editor/NewForm.h =================================================================== --- trunk/racer_editor/NewForm.h 2010-02-13 03:03:43 UTC (rev 250) +++ trunk/racer_editor/NewForm.h 2010-02-13 04:25:52 UTC (rev 251) @@ -39,6 +39,14 @@ * clicks new with a theme selected. */ sigc::signal<void, std::string> signal_theme_picked(); + + /** Find and list avaliable themes. + * This must be called after creation if the NewForm is going to do + * anything other than say "Loading". + * This is a separate to the constuctor, so that finding the themes on + * disk doesn't delay the time until the main window appears. + */ + void find_themes(); protected: /// parent window Gtk::Window & window; @@ -83,9 +91,13 @@ /// signal for when theme selected. sigc::signal<void, std::string> m_signal_theme_picked; + /// True if 'loading' is displayed. + bool m_loading; + /** Find the themes. * Looks for themes in the data directory. * Also causes the data directory to be monitored. + * Must not be called multiple times. */ void set_themes(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |