int App::run() { #ifdef ENABLE_UPDATER app::CheckUpdateThreadLauncher checkUpdate; #endif // Initialize GUI interface if (isGui()) { View* view; Editor* editor; PRINTF("GUI mode\n"); // Setup the GUI screen jmouse_set_cursor(JI_CURSOR_NORMAL); gui::Manager::getDefault()->invalidate(); // Load main window top_window = static_cast<Frame*>(load_widget("main_window.xml", "main_window")); box_menubar = top_window->findChild("menubar"); box_editors = top_window->findChild("editor"); box_colorbar = top_window->findChild("colorbar"); box_toolbar = top_window->findChild("toolbar"); box_statusbar = top_window->findChild("statusbar"); box_tabsbar = top_window->findChild("tabsbar"); menubar = new MenuBar(); statusbar = new StatusBar(); colorbar = new ColorBar(box_colorbar->getAlign()); toolbar = toolbar_new(); tabsbar = new Tabs(m_tabsDelegate = new AppTabsDelegate()); view = new EditorView(EditorView::CurrentEditorMode); editor = create_new_editor(); // configure all widgets to expansives menubar->setExpansive(true); statusbar->setExpansive(true); colorbar->setExpansive(true); toolbar->setExpansive(true); tabsbar->setExpansive(true); view->setExpansive(true); /* prepare the first editor */ view->attachToView(editor); /* setup the menus */ menubar->setMenu(get_root_menu()); /* start text of status bar */ app_default_statusbar_message(); /* add the widgets in the boxes */ if (box_menubar) box_menubar->addChild(menubar); if (box_editors) box_editors->addChild(view); if (box_colorbar) box_colorbar->addChild(colorbar); if (box_toolbar) box_toolbar->addChild(toolbar); if (box_statusbar) box_statusbar->addChild(statusbar); if (box_tabsbar) box_tabsbar->addChild(tabsbar); /* prepare the window */ top_window->remap_window(); // Create the list of tabs app_rebuild_documents_tabs(); app_rebuild_recent_list(); // Set current editor set_current_editor(editor); // Open the window top_window->open_window(); // Redraw the whole screen. gui::Manager::getDefault()->invalidate(); } /* set background mode for non-GUI modes */ /* if (!(ase_mode & MODE_GUI)) */ /* set_display_switch_mode(SWITCH_BACKAMNESIA); */ set_display_switch_mode(SWITCH_BACKGROUND); // procress options PRINTF("Processing options...\n"); ASSERT(m_checkArgs != NULL); { Console console; for (CheckArgs::iterator it = m_checkArgs->begin(); it != m_checkArgs->end(); ++it) { CheckArgs::Option* option = *it; switch (option->type()) { case CheckArgs::Option::OpenSprite: { // Load the sprite Document* document = load_document(option->data().c_str()); if (!document) { if (!isGui()) console.printf("Error loading file \"%s\"\n", option->data().c_str()); } else { // Mount and select the sprite UIContext* context = UIContext::instance(); context->addDocument(document); context->setActiveDocument(document); if (isGui()) { // Show it set_document_in_more_reliable_editor(context->getFirstDocument()); // Recent file getRecentFiles()->addRecentFile(option->data().c_str()); } } break; } } } delete m_checkArgs; m_checkArgs = NULL; } // Run the GUI if (isGui()) { // Support to drop files from Windows explorer install_drop_files(); #ifdef ENABLE_UPDATER // Launch the thread to check for updates. checkUpdate.launch(); #endif // Run the GUI main message loop gui_run(); // Uninstall support to drop files uninstall_drop_files(); // Remove the root-menu from the menu-bar (because the rootmenu // module should destroy it). menubar->setMenu(NULL); // Delete all editors first because they used signals from other // widgets (e.g. color bar). delete box_editors; // Destroy mini-editor. exit_module_editors(); // Destroy the top-window delete top_window; top_window = NULL; } return 0; }
int App::run() { // Initialize GUI interface if (isGui()) { PRINTF("GUI mode\n"); // Setup the GUI screen jmouse_set_cursor(kArrowCursor); ui::Manager::getDefault()->invalidate(); // Create the main window and show it. m_mainWindow.reset(new MainWindow); // Default status of the main window. app_rebuild_documents_tabs(); app_default_statusbar_message(); m_mainWindow->openWindow(); // Redraw the whole screen. ui::Manager::getDefault()->invalidate(); } // Set background mode for non-GUI modes set_display_switch_mode(SWITCH_BACKGROUND); // Procress options PRINTF("Processing options...\n"); { Console console; for (FileList::iterator it = m_files.begin(), end = m_files.end(); it != end; ++it) { // Load the sprite Document* document = load_document(it->c_str()); if (!document) { if (!isGui()) console.printf("Error loading file \"%s\"\n", it->c_str()); } else { // Mount and select the sprite UIContext* context = UIContext::instance(); context->addDocument(document); if (isGui()) { // Recent file getRecentFiles()->addRecentFile(it->c_str()); } } } } // Run the GUI if (isGui()) { // Support to drop files from Windows explorer install_drop_files(); #ifdef ENABLE_UPDATER // Launch the thread to check for updates. app::CheckUpdateThreadLauncher checkUpdate; checkUpdate.launch(); #endif #ifdef ENABLE_WEBSERVER // Launch the webserver. app::WebServer webServer; webServer.start(); #endif // Run the GUI main message loop gui_run(); // Uninstall support to drop files uninstall_drop_files(); // Destroy all documents in the UIContext. const Documents& docs = m_modules->m_ui_context.getDocuments(); while (!docs.empty()) m_modules->m_ui_context.removeDocument(docs.back()); // Destroy the window. m_mainWindow.reset(NULL); } // Start shell to execute scripts. else if (m_isShell) { m_systemConsole.prepareShell(); if (m_modules->m_scriptingEngine.supportEval()) { Shell shell; shell.run(m_modules->m_scriptingEngine); } else { std::cerr << "Your version of " PACKAGE " wasn't compiled with shell support.\n"; } } return 0; }
int App::run() { // Initialize GUI interface if (isGui()) { PRINTF("GUI mode\n"); // Setup the GUI screen jmouse_set_cursor(kArrowCursor); ui::Manager::getDefault()->invalidate(); // Create the main window and show it. m_mainWindow.reset(new MainWindow); // Default status of the main window. app_rebuild_documents_tabs(); app_default_statusbar_message(); m_mainWindow->openWindow(); // Redraw the whole screen. ui::Manager::getDefault()->invalidate(); // 2013-11-19 - JRM - Force setting active view to NULL, workaround for setting // window title to proper devault value. (Issue #285) UIContext::instance()->setActiveView(NULL); } // Set background mode for non-GUI modes set_display_switch_mode(SWITCH_BACKGROUND); // Procress options PRINTF("Processing options...\n"); { UIContext* context = UIContext::instance(); Console console; for (FileList::iterator it = m_files.begin(), end = m_files.end(); it != end; ++it) { // Load the sprite Document* document = load_document(it->c_str()); if (!document) { if (!isGui()) console.printf("Error loading file \"%s\"\n", it->c_str()); } else { // Mount and select the sprite context->addDocument(document); // Add the given file in the argument as a "recent file" only // if we are running in GUI mode. If the program is executed // in batch mode this is not desirable. if (isGui()) getRecentFiles()->addRecentFile(it->c_str()); // Add the document to the exporter. if (m_exporter != NULL) m_exporter->addDocument(document); } } } // Export if (m_exporter != NULL) { PRINTF("Exporting sheet...\n"); m_exporter->exportSheet(); m_exporter.reset(NULL); } // Run the GUI if (isGui()) { #ifdef ENABLE_UPDATER // Launch the thread to check for updates. app::CheckUpdateThreadLauncher checkUpdate; checkUpdate.launch(); #endif #ifdef ENABLE_WEBSERVER // Launch the webserver. app::WebServer webServer; webServer.start(); #endif // Run the GUI main message loop gui_run(); // Destroy all documents in the UIContext. const Documents& docs = m_modules->m_ui_context.getDocuments(); while (!docs.empty()) m_modules->m_ui_context.removeDocument(docs.back()); // Destroy the window. m_mainWindow.reset(NULL); } // Start shell to execute scripts. else if (m_isShell) { m_systemConsole.prepareShell(); if (m_modules->m_scriptingEngine.supportEval()) { Shell shell; shell.run(m_modules->m_scriptingEngine); } else { std::cerr << "Your version of " PACKAGE " wasn't compiled with shell support.\n"; } } return 0; }