//---------------------------------------------------------
bool CWKSP_Module_Manager::_Update(bool bSyncToCtrl)
{
	if( !bSyncToCtrl )
	{
	//	Get_Control()->Freeze();

		for(int i=SG_Get_Module_Library_Manager().Get_Count()-1; i>=0; i--)
		{
			CSG_Module_Library	*pLibrary	= SG_Get_Module_Library_Manager().Get_Library(i);
			CWKSP_Module_Library	*pItem	= Get_Library(pLibrary);

			if( !pItem )
			{
				CWKSP_Module_Group	*pGroup	= Get_Group(pLibrary->Get_Category().c_str());

				if( !pGroup )
				{
					Add_Item(pGroup = new CWKSP_Module_Group(pLibrary->Get_Category().c_str()));
				}

				pGroup->Add_Library(pLibrary);
			}
			else if( pItem->Get_Library()->Get_Type() == MODULE_CHAINS )
			{
				pItem->Update();
			}
		}

	//	Get_Control()->Thaw();
	}

	m_pMenu_Modules->Update();

	return( true );
}
Пример #2
0
BOOL
Add_Item_Validate ( LNK_LST *lst, tlst_val val)
{
  BOOL added = Add_Item ( lst, val );

  (void) Validate_List ( lst );
  return added;
}
bool CWKSP_Map_Manager::Add(CWKSP_Layer *pLayer, CWKSP_Map *pMap)
{
	if( pLayer )
	{
		if( pMap == NULL )
		{
			Add_Item(pMap = new CWKSP_Map);
		}
		else if( !Exists(pMap) )
		{
			Add_Item(pMap);
		}

		pMap->Add_Layer(pLayer);

		return( true );
	}

	return( false );
}
Пример #4
0
//---------------------------------------------------------
CWKSP_Grid * CWKSP_Grid_System::Add(CSG_Grid *pGrid)
{
	CWKSP_Grid	*pItem;

	if( pGrid && pGrid->Get_System() == m_System && !Exists(pGrid) && Add_Item(pItem = new CWKSP_Grid(pGrid)) )
	{
		return( pItem );
	}

	return( NULL );
}
Пример #5
0
//---------------------------------------------------------
CWKSP_TIN * CWKSP_TIN_Manager::Add(CSG_TIN *pTIN)
{
	CWKSP_TIN	*pItem;

	if( pTIN && pTIN->is_Valid() && !Exists(pTIN) && Add_Item(pItem = new CWKSP_TIN(pTIN)) )
	{
		return( pItem );
	}

	return( NULL );
}
//---------------------------------------------------------
CWKSP_Grid_System * CWKSP_Grid_Manager::_Get_System(const CSG_Grid_System &System)
{
	CWKSP_Grid_System	*pItem	= NULL;

	if( (pItem = Get_System(System)) == NULL )
	{
		Add_Item(pItem = new CWKSP_Grid_System(System));
	}

	return( pItem );
}
//---------------------------------------------------------
CWKSP_Table * CWKSP_Table_Manager::Add_Data(CSG_Table *pObject)
{
	CWKSP_Table	*pItem	= Get_Data(pObject);

	if( pItem == NULL && pObject != NULL )
	{
		Add_Item(pItem = new CWKSP_Table(pObject));
	}

	return( pItem );
}
//---------------------------------------------------------
CWKSP_PointCloud * CWKSP_PointCloud_Manager::Add_Data(CSG_PointCloud *pObject)
{
	CWKSP_PointCloud	*pItem	= Get_Data(pObject);

	if( pItem == NULL && pObject != NULL )
	{
		Add_Item(pItem = new CWKSP_PointCloud(pObject));
	}

	return( pItem );
}
//---------------------------------------------------------
void CWKSP_Tool_Library::_Add_Tools(void)
{
	for(int i=0; i<m_pLibrary->Get_Count(); i++)
	{
		CSG_Tool	*pTool	= m_pLibrary->Get_Tool(i);

		if( pTool != NULL && pTool != TLB_INTERFACE_SKIP_TOOL )
		{
			CWKSP_Tool	*pItem	= new CWKSP_Tool(pTool, m_pLibrary->Get_Menu().w_str());

			Add_Item(pItem);
		}
	}
}
//---------------------------------------------------------
bool CWKSP_Map_Manager::Add(CWKSP_Map *pMap)
{
	if( pMap )
	{
		if( !Exists(pMap) )
		{
			Add_Item(pMap);
		}

		return( true );
	}

	return( false );
}
//---------------------------------------------------------
CWKSP_Shapes_Type * CWKSP_Shapes_Manager::_Get_Shapes_Type(TSG_Shape_Type Type)
{
	CWKSP_Shapes_Type	*pItem	= NULL;

	if( Type != SHAPE_TYPE_Undefined )
	{
		if( (pItem = Get_Shapes_Type(Type)) == NULL )
		{
			Add_Item(pItem = new CWKSP_Shapes_Type(Type));
		}
	}

	return( pItem );
}
//---------------------------------------------------------
void CWKSP_Tool_Library::Update(void)
{
	int		i;

	for(i=Get_Count()-1; i>=0; i--)	// first remove tools that are not available anymore
	{
		CWKSP_Tool	*pItem	= Get_Tool(i);

		if( !m_pLibrary->Get_Tool(pItem->Get_Tool()->Get_Name()) )
		{
			Del_Item(pItem);

			Get_Control()->Delete(pItem->GetId());
		}
	}

	for(i=0; i<m_pLibrary->Get_Count(); i++)	// then add tools that are not yet present in the list
	{
		CSG_Tool	*pTool	= m_pLibrary->Get_Tool(i);

		if( pTool != NULL && pTool != TLB_INTERFACE_SKIP_TOOL )
		{
			for(int j=0; j<Get_Count() && pTool; j++)
			{
				if( pTool == Get_Tool(j)->Get_Tool() )
				{
					Get_Control()->SetItemText(Get_Tool(j)->GetId(), Get_Tool(j)->Get_Name());	// just in case name has changed

					pTool	= NULL;
				}
			}

			if( pTool )
			{
				CWKSP_Tool	*pItem	= new CWKSP_Tool(pTool, m_pLibrary->Get_Menu().w_str());

				Add_Item(pItem);

				g_pTool_Ctrl->Add_Tool(GetId(), pItem);
			}
		}
	}

	Get_Control()->SortChildren(GetId());
}
Пример #13
0
//---------------------------------------------------------
bool CWKSP_Module_Manager::Open(const wxChar *File_Name)
{
    CWKSP_Module_Library	*pLibrary;

    //-----------------------------------------------------
    if( SG_File_Cmp_Extension(File_Name, wxT("mlb"))
            ||	SG_File_Cmp_Extension(File_Name, wxT("dll"))
            ||	SG_File_Cmp_Extension(File_Name, wxT("so" )) )
    {
        MSG_General_Add(wxString::Format(wxT("%s: %s..."), LNG("[MSG] Load library"), File_Name), true, true);

        //-------------------------------------------------
        for(int i=0; i<Get_Count(); i++)
        {
            if( SG_STR_CMP(File_Name, Get_Library(i)->Get_File_Name()) == 0 )
            {
                MSG_Error_Add(wxString::Format(wxT("%s\n%s"), File_Name, LNG("[ERR] Library has already been loaded")), true);
                MSG_General_Add(LNG("[MSG] has already been loaded"), false);

                return( false );
            }
        }

        //-------------------------------------------------
        pLibrary	= new CWKSP_Module_Library(File_Name);

        if( pLibrary->is_Valid() )
        {
            Add_Item(pLibrary);

            MSG_General_Add(LNG("[MSG] okay"), false, false, SG_UI_MSG_STYLE_SUCCESS);

            return( true );
        }

        delete(pLibrary);

        MSG_General_Add(LNG("[MSG] failed"), false, false, SG_UI_MSG_STYLE_FAILURE);
    }

    return( false );
}
//---------------------------------------------------------
bool CWKSP_Module_Group::Add_Library(CSG_Module_Library *pLibrary)
{
	return( pLibrary && Add_Item(new CWKSP_Module_Library(pLibrary)) );
}
Пример #15
0
//---------------------------------------------------------
bool CWKSP_Tool_Group::Add_Library(CSG_Tool_Library *pLibrary)
{
	return( pLibrary && Add_Item(new CWKSP_Tool_Library(pLibrary)) );
}
Пример #16
-1
int Generate_File_Lists(const char* Path) {
    DIR* d;
    struct dirent* de;
    struct stat st;
    char FileName[PATH_MAX];

    // Skip /data/media
    if (is_data_media() && strlen(Path) >= 11 && strncmp(Path, "/data/media", 11) == 0)
        return 0;

    // Skip google cached music
    if (strstr(Path, "data/data/com.google.android.music/files") != NULL)
        return 0;

    d = opendir(Path);
    if (d == NULL)
    {
        LOGE("error opening '%s'\n", Path);
        return -1;
    }

    while ((de = readdir(d)) != NULL)
    {
        sprintf(FileName, "%s/", Path);
        strcat(FileName, de->d_name);
        if (is_data_media() && strlen(FileName) >= 11 && strncmp(FileName, "/data/media", 11) == 0)
            continue; // Skip /data/media
        if (de->d_type == DT_DIR && strcmp(de->d_name, ".") != 0 && strcmp(de->d_name, "..") != 0)
        {
            unsigned long long folder_size = Get_Folder_Size(FileName);
            if (Makelist_Current_Size + folder_size > MAX_ARCHIVE_SIZE) {
                if (Generate_File_Lists(FileName) < 0)
                    return -1;
            } else {
                strcat(FileName, "/");
                if (Add_Item(FileName) < 0)
                    return -1;
                Makelist_Current_Size += folder_size;
            }
        }
        else if (de->d_type == DT_REG || de->d_type == DT_LNK)
        {
            stat(FileName, &st);

            if (Makelist_Current_Size != 0 && Makelist_Current_Size + st.st_size > MAX_ARCHIVE_SIZE) {
                Makelist_File_Count++;
                Makelist_Current_Size = 0;
            }
            if (Add_Item(FileName) < 0)
                return -1;
            Makelist_Current_Size += st.st_size;
            if (st.st_size > 2147483648LL)
                LOGE("There is a file that is larger than 2GB in the file system\n'%s'\nThis file may not restore properly\n", FileName);
        }
    }
    closedir(d);
    return 0;
}