Example #1
0
//----------------------------------------------------------------
bool ProjectItemFile::Load()
/**
 * \brief Loads this project item. Because this is a file,
 * it will load the project item via the load method of the
 * registered window class. If the project item is already open
 * then the load method will reload the information from the file.
 * \return True on success; false otherwise.
 **/
{
    // No window type then abort
    if (m_windowtype.IsEmpty()) {
        return (false);
    }
    // Find window type in windowlist
    WindowList* list = Environment::Get()->GetWindowList();
    if (!list->IsRegistered(m_windowtype)) {
        wxLogError(_T("[penv::ProjectItemFile::Load] The window class id '%s' in project item file '%s' is not registered in the environment."), m_windowtype.c_str(), m_name.c_str());
        return (false);
    }
    // Check if window must be created
    if (m_windowid.IsEmpty() || !list->ExistsWindow(m_windowid)) {
        // Create the window
        Window* window = list->CreateWindow(m_windowtype, this);
        list->Add(window, true);
        m_windowid = window->GetId();
        if (!window->Load(m_filename.GetPath())) {
            wxLogError(_T("[penv::ProjectItemFile::Load] Error occured while loading file '%s'."), m_filename.GetPath().c_str());
            return (false);
        }
    } else {
        // Bring the window to the front
        list->ShowWindow(m_windowid, true);
    }
    return (true);
}