示例#1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            SetPartsGridView.AutoGenerateColumns = false;

            if (!SettingsManager.HasInitialized)
            {
                SettingsManager.Initialize();
            }

            LDDEnvironment.Initialize();
            RebrickableAPI.ApiKey = "aU49o5xulf";
            RebrickableAPI.InitializeClient();


            DBFilePath = SettingsManager.GetFilePath(SettingsManager.DATABASE_FILENAME);
            var currentFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            //DBFilePath = Path.Combine(currentFolder, "BrickDatabase.db");
            //if (!File.Exists(DBFilePath))
            //    File.Copy(currentFolder + "\\Resources\\EmptyDatabase.db", DBFilePath);
            if (SettingsManager.DatabaseExists())
            {
                ReloadRebrickableBaseData();
            }
            else
            {
                InitDatabase();
            }
        }
示例#2
0
        public static Primitive GetPrimitiveInfo(LDDEnvironment environment, int partID)
        {
            if (environment.DatabaseExtracted)
            {
                var primitivesDir = Path.Combine(environment.ApplicationDataPath, "db\\Primitives");

                var primitiveFile = Path.Combine(primitivesDir, $"{partID}.xml");
                if (!File.Exists(primitiveFile))
                {
                    throw new FileNotFoundException($"Primitive file not found. ({partID}.xml)");
                }

                return(Primitive.Load(primitiveFile));
            }
            else
            {
                using (var lif = LifFile.Open(Path.Combine(environment.ApplicationDataPath, "db.lif")))
                {
                    var primitiveFolder = lif.GetFolder("Primitives");
                    var meshesFolder    = primitiveFolder.GetFolder("LOD0");

                    var primitiveEntry = primitiveFolder.GetFile($"{partID}.xml");
                    if (primitiveEntry == null)
                    {
                        throw new FileNotFoundException($"Primitive file not found. ({partID}.xml)");
                    }

                    return(Primitive.Load(primitiveEntry.GetStream()));
                }
            }
        }
示例#3
0
        public void SaveToLdd(LDDEnvironment environment)
        {
            var primitivesDir = environment.GetAppDataSubDir("db\\Primitives\\");
            var meshesDir     = environment.GetAppDataSubDir("db\\Primitives\\LOD0\\");

            SaveToDirectory(primitivesDir, meshesDir);
        }
示例#4
0
        private static PaletteFile GetLddPaletteFile(LDDEnvironment environment)
        {
            var appDataPalettes = environment.GetAppDataSubDir("Palettes");

            if (File.Exists(Path.Combine(appDataPalettes, "LDD.lif")))
            {
                return(PaletteFile.FromLif(Path.Combine(appDataPalettes, "LDD.lif")));
            }

            if (Directory.Exists(Path.Combine(appDataPalettes, "LDD")))
            {
                return(PaletteFile.FromDirectory(Path.Combine(appDataPalettes, "LDD")));
            }

            string dbLifPath = environment.GetLifFilePath(LddLif.DB);

            if (File.Exists(dbLifPath))
            {
                using (var lif = LifFile.Open(dbLifPath))
                {
                    var paletteEntry = lif.GetAllFiles().FirstOrDefault(x => x.Name == "LDD.lif");
                    if (paletteEntry != null)
                    {
                        using (var paletteLif = LifFile.Read(paletteEntry.GetStream()))
                            return(PaletteFile.FromLif(paletteLif));
                    }
                }
            }

            return(null);
        }
示例#5
0
        public override void FillSettings(AppSettings settings)
        {
            LddSettings         = settings.LddSettings;
            SettingsEnvironment = new LDDEnvironment(
                settings.LddSettings.ProgramFilesPath,
                settings.LddSettings.ApplicationDataPath);

            FillLddSettings(SettingsEnvironment);
            HasSettingsChanged = false;
        }
示例#6
0
 public static PartWrapper LoadPart(LDDEnvironment environment, int partID, bool loadMeshes)
 {
     if (environment.DatabaseExtracted)
     {
         var primitivesDir = environment.GetAppDataSubDir("db\\Primitives");
         return(GetPartFromDirectory(primitivesDir, partID, loadMeshes));
     }
     else
     {
         using (var lif = LifFile.Open(environment.GetLifFilePath(LddLif.DB)))
             return(GetPartFromLif(lif, partID, loadMeshes));
     }
 }
示例#7
0
        public void SaveToLdd(LDDEnvironment environment)
        {
            var primitivesDir = environment.GetAppDataSubDir("db\\Primitives\\");

            //var meshesDir = environment.GetAppDataSubDir("db\\Primitives\\LOD0\\");

            Primitive.Save(Path.Combine(primitivesDir, $"{PartID}.xml"));

            foreach (var surface in Surfaces)
            {
                surface.Mesh.Save(Path.Combine(primitivesDir, "LOD0", surface.GetFileName()));
            }
        }
示例#8
0
        public static void Initialize()
        {
            if (!Directory.Exists(AppDataFolder))
            {
                Directory.CreateDirectory(AppDataFolder);
            }

            if (!LDDEnvironment.HasInitialized)
            {
                LDDEnvironment.Initialize();
            }

            LoadSettings();
        }
示例#9
0
        private static void ValidateLddPaths()
        {
            bool sameAsInstalled = false;

            if (LDDEnvironment.IsInstalled)
            {
                sameAsInstalled = StringUtils.EqualsIC(
                    Current.LddSettings.ApplicationDataPath,
                    LDDEnvironment.InstalledEnvironment.ApplicationDataPath
                    ) &&
                                  StringUtils.EqualsIC(
                    Current.LddSettings.ProgramFilesPath,
                    LDDEnvironment.InstalledEnvironment.ProgramFilesPath
                    );
            }

            if (sameAsInstalled)
            {
                LDDEnvironment.SetOverride(null);
            }
            else
            {
                if (LDDEnvironment.IsInstalled)
                {
                    if (string.IsNullOrEmpty(Current.LddSettings.ProgramFilesPath))
                    {
                        Current.LddSettings.ProgramFilesPath = LDDEnvironment.InstalledEnvironment.ProgramFilesPath;
                    }
                    if (string.IsNullOrEmpty(Current.LddSettings.ApplicationDataPath))
                    {
                        Current.LddSettings.ApplicationDataPath = LDDEnvironment.InstalledEnvironment.ApplicationDataPath;
                    }
                }

                if (!string.IsNullOrEmpty(Current.LddSettings.ProgramFilesPath) ||
                    !string.IsNullOrEmpty(Current.LddSettings.ApplicationDataPath))
                {
                    var custom = LDDEnvironment.Create(
                        Current.LddSettings.ProgramFilesPath,
                        Current.LddSettings.ApplicationDataPath);
                    LDDEnvironment.SetOverride(custom);
                }
                else
                {
                    LDDEnvironment.SetOverride(null);
                }
            }
        }
        private void InitOrUptateDatabase()
        {
            UpdateCurrentStep("Database initialisation");
            UpdateCurrentProgress(0, 0);

            UpdateCurrentStatus("Verifying database...");
            if (!SettingsManager.HasInitialized)
            {
                SettingsManager.Initialize();
            }

            string databasePath = SettingsManager.GetFilePath(SettingsManager.DATABASE_FILENAME);

            if (!SettingsManager.DatabaseExists())
            {
                UpdateCurrentStatus("Creating database...");
                string templateDbPath = Path.GetFullPath("Resources\\EmptyDatabase.db");
                File.Copy(templateDbPath, databasePath);
            }

            UpdateCurrentStatus("Verifying LDD installation...");
            if (!LDDEnvironment.HasInitialized)
            {
                LDDEnvironment.Initialize();
            }

            if (LDDEnvironment.Current == null)
            {
                MessageBox.Show("Could not locate LDD installation.");
                CTS.Cancel();
                OnDbInitializationComplete();
                return;
            }

            try
            {
                DatabaseInitializer.InitializeOrUpdateDatabase(databasePath,
                                                               DatabaseInitializer.InitializationStep.LddPartsAndElements |
                                                               DatabaseInitializer.InitializationStep.RebrickableLddMappings, CTS.Token, this);
            }
            catch (Exception ex)
            {
                CTS.Cancel();
            }

            OnDbInitializationComplete();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (!SettingsManager.HasInitialized)
            {
                SettingsManager.Initialize();
            }

            LDDEnvironment.Initialize();
            RebrickableAPI.ApiKey = "aU49o5xulf";
            RebrickableAPI.InitializeClient();

            if (!SettingsManager.DatabaseExists())
            {
                using (var win = new DatabaseInitProgressWindow())
                {
                    win.StartPosition = FormStartPosition.CenterParent;
                    win.ShowDialog();
                }
            }
        }
示例#12
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (!LDDEnvironment.HasInitialized)
            {
                LDDEnvironment.Initialize();
            }

            AssimpContext = new Assimp.AssimpContext();

            bool isProjectOpen = (CurrentProject != null);

            CurrentProjectRb.Enabled = isProjectOpen;
            (isProjectOpen ? CurrentProjectRb : SelectPartRb).Checked = true;
            PartBrowseTextBox.Enabled = SelectPartRb.Checked;

            if (SelectPartRb.Checked)
            {
                ValidateSelectedPartID();
            }
        }
 public RebrickableDataImporter(SQLiteConnection connection, LDDEnvironment environment, CancellationToken cancellationToken) : base(connection, environment, cancellationToken)
 {
 }
示例#14
0
 public DbInitializerModule(SQLiteConnection connection, LDDEnvironment environment, CancellationToken cancellationToken)
 {
     Connection        = connection;
     Environment       = environment;
     CancellationToken = cancellationToken;
 }