diff options
Diffstat (limited to 'src/clients/gtk/ConnectWindow.cpp')
-rw-r--r-- | src/clients/gtk/ConnectWindow.cpp | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/src/clients/gtk/ConnectWindow.cpp b/src/clients/gtk/ConnectWindow.cpp deleted file mode 100644 index 15bab62c..00000000 --- a/src/clients/gtk/ConnectWindow.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* This file is part of Om. Copyright (C) 2006 Dave Robillard. - * - * Om is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Om 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 General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConnectWindow.h" -#include <string> -#include <time.h> -#include <sys/time.h> -#include "interface/ClientKey.h" -#include "interface/ClientInterface.h" -#include "ThreadedSigClientInterface.h" -#include "Controller.h" -#include "OSCListener.h" -#include "Store.h" - -namespace OmGtk { - - -ConnectWindow::ConnectWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml) -: Gtk::Dialog(cobject) -, _client(NULL) -{ - xml->get_widget("connect_progress_bar", _progress_bar); - xml->get_widget("connect_label", _label); - xml->get_widget("connect_launch_button", _launch_button); - xml->get_widget("connect_cancel_button", _cancel_button); - - assert(_progress_bar); - assert(_label); - assert(_launch_button); - assert(_cancel_button); - - _launch_button->signal_clicked().connect(sigc::mem_fun(this, &ConnectWindow::launch_engine)); - _cancel_button->signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit)); -} - - -void -ConnectWindow::start(CountedPtr<Om::Shared::ClientInterface> client) -{ - _client = client; - - Glib::signal_timeout().connect( - sigc::mem_fun(this, &ConnectWindow::gtk_callback), 100); - - resize(100, 100); -} - - -void -ConnectWindow::launch_engine() -{ - if (fork() == 0) { - //cerr << "Launching engine.."; - execlp("om", NULL); - } -} - - -bool -ConnectWindow::gtk_callback() -{ - /* This isn't very nice (isn't threaded), but better than no dialog at - * all like before :) - */ - - // Timing stuff for repeated attach attempts - timeval now; - gettimeofday(&now, NULL); - static timeval last = now; - - static int stage = 0; - - /* Connecting to engine */ - if (stage == 0) { - // FIXME - //assert(!Controller::instance().is_attached()); - _label->set_text(string("Connecting to engine at ").append( - Controller::instance().engine_url()).append("...")); - present(); - Controller::instance().attach(); - ++stage; - } else if (stage == 1) { - if (Controller::instance().is_attached()) { - Controller::instance().activate(); - ++stage; - } else { - const float ms_since_last = (now.tv_sec - last.tv_sec) * 1000.0f + - (now.tv_usec - last.tv_usec) * 0.001f; - if (ms_since_last > 1000) { - Controller::instance().attach(); - last = now; - } - } - } else if (stage == 2) { - _label->set_text(string("Registering as client...")); - //Controller::instance().register_client(Controller::instance().client_hooks()); - // FIXME - //auto_ptr<ClientInterface> client(new ThreadedSigClientInterface(); - Controller::instance().register_client(ClientKey(), _client); - Controller::instance().load_plugins(); - ++stage; - } else if (stage == 3) { - // Register idle callback to process events and whatnot - // (Gtk refreshes at priority G_PRIORITY_HIGH_IDLE+20) - /*Glib::signal_timeout().connect( - sigc::mem_fun(this, &App::idle_callback), 100, G_PRIORITY_HIGH_IDLE);*/ - //Glib::signal_idle().connect(sigc::mem_fun(this, &App::idle_callback)); - /* Glib::signal_timeout().connect( - sigc::mem_fun((ThreadedSigClientInterface*)_client, &ThreadedSigClientInterface::emit_signals), - 5, G_PRIORITY_DEFAULT_IDLE);*/ - - _label->set_text(string("Requesting plugins...")); - Controller::instance().request_plugins(); - ++stage; - } else if (stage == 4) { - // Wait for first plugins message - if (Store::instance().plugins().size() > 0) { - _label->set_text(string("Receiving plugins...")); - ++stage; - } - } else if (stage == 5) { - // FIXME - /*if (Store::instance().plugins().size() < _client->num_plugins()) { - static char buf[32]; - snprintf(buf, 32, "%zu/%zu", Store::instance().plugins().size(), - ThreadedSigClientInterface::instance()->num_plugins()); - _progress_bar->set_text(Glib::ustring(buf)); - _progress_bar->set_fraction( - Store::instance().plugins().size() / (double)_client->num_plugins()); - } else {*/ - _progress_bar->set_text(""); - ++stage; - //} - } else if (stage == 6) { - _label->set_text(string("Waiting for root patch...")); - Controller::instance().request_all_objects(); - ++stage; - } else if (stage == 7) { - if (Store::instance().num_objects() > 0) - ++stage; - } else if (stage == 8) { - stage = -1; - hide(); // FIXME: actually destroy window to save mem? - } - - if (stage != 5) // yeah, ew - _progress_bar->pulse(); - - if (stage == -1) { // finished connecting - return false; // deregister this callback - } else { - return true; - } -} - - -} // namespace OmGtk |