public void RefreshOutput(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return; } if (!fileInfo.Exists) { return; } if (!IsResourceSupported(resource)) { return; } var tempDocument = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); var outputFilenames = new List <string>(); foreach (Document.Item item in tempDocument.Items) { var resItem = Host.GetResource(item.ResourceID); var resFileInfo = Host.GetFileInfo(resItem); var outputFilename = resFileInfo.Name; string outputFilenameBin = outputFilename + ".bin"; outputFilenames.Add(outputFilenameBin); } Host.RefreshOutput(resource, outputFilenames); }
public void UpdateDependencies(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return; } if (!fileInfo.Exists) { return; } if (!IsResourceSupported(resource)) { return; } Document.Document tempDocument = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); List <PhactoryHost.Database.Resource> dependentResources = new List <PhactoryHost.Database.Resource>(); foreach (Document.File file in tempDocument.Files) { PhactoryHost.Database.Resource depResource = Host.GetResource(file.ResourceID); if ((depResource != null) && (resource != depResource)) { dependentResources.Add(depResource); } } Host.RefreshDependencies(resource, dependentResources); }
public bool IsIncludeResource(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return(false); } if (!IsResourceSupported(resource)) { return(false); } if (fileInfo.Extension.ToLower() == ".h") { return(true); } if (fileInfo.Extension.ToLower() == ".cxx") { return(true); } return(false); }
public bool IsResourceReferencedByOtherResourcesRecursive(PhactoryHost.Database.Resource resource) { if (App.Controller.Entities.StartupResourceId == resource.Id) { return(true); } foreach (int outputResourceId in resource.IdOutputs) { if (outputResourceId == App.Controller.Entities.StartupResourceId) { return(true); } PhactoryHost.Database.Resource outputResource = GetResource(outputResourceId); if (IsResourceReferencedByOtherResourcesRecursive(outputResource)) { return(true); } } List <PhactoryHost.Database.Resource> depResources = IsResourceReferencedByOtherResources(resource); foreach (PhactoryHost.Database.Resource depResource in depResources) { if (IsResourceReferencedByOtherResourcesRecursive(depResource)) { return(true); } } return(false); }
public bool Run(PhactoryHost.Database.Resource resource) { PhactoryHost.Database.Resource parentResource = Host.GetResource(resource.IdDependencies[0]); Document.Document document = Host.XMLRead <Document.Document>(Host.GetFileInfo(parentResource).FullName); string fileToExecute = ""; foreach (Document.Item item in document.Items) { if (item.ExecAdress != 0) { fileToExecute = item.AmsdosFilename; } } string DSKFilename = Host.GetFileInfo(resource).FullName; DSKFilename = DSKFilename.Replace(".cpcdsk", ".dsk"); FileInfo DSKFileInfo = new FileInfo(DSKFilename); string WinAPEFullPath = Host.GetPluginsPath() + "WinAPE.exe"; string arguments = "\"" + DSKFileInfo.FullName + "\" /A"; if (Host.IsVerboseOutput()) { Host.Log(WinAPEFullPath + " " + arguments); } return(Host.StartAndWaitAfterProcess(WinAPEFullPath, arguments, DSKFileInfo.DirectoryName)); }
private void CleanResource(PhactoryHost.Database.Resource resource) { if (resource == null) { return; } if (resource.IsOutputResource == false) { return; } string filename = resource.RelativePath; string extension = Helper.StringHelper.GetFileExtension(filename); string location = Helper.StringHelper.MakeFullPath(resource.RelativePath); if (File.Exists(location)) { // App.Controller.Log.Append(resource.DisplayName); File.SetAttributes(location, FileAttributes.Normal); File.Delete(location); } }
public List <int> GetBrokenResourceIDs(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return(null); } if (!fileInfo.Exists) { return(null); } List <int> brokenResourceIDs = new List <int>(); Document.Document document = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); if (document != null) { foreach (Document.Item item in document.Items) { if (Host.GetResource(item.ResourceID) == null) { brokenResourceIDs.Add(item.ResourceID); } } } return(brokenResourceIDs); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; }
public void UpdateDependencies(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return; } if (!fileInfo.Exists) { return; } if (!IsResourceSupported(resource)) { return; } Document.Document tempDocument = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); List <PhactoryHost.Database.Resource> dependentResources = new List <PhactoryHost.Database.Resource>(); Host.RefreshDependencies(resource, dependentResources); }
public void OpenResource(Panel parentPanel, PhactoryHost.Database.Resource resource) { View.View view = new View.View(resource); view.Parent = parentPanel; view.Dock = System.Windows.Forms.DockStyle.Fill; viewBinding.Add(resource, new ResourceBinding(parentPanel, view)); try { view.PictureBox.Image = Image.FromFile(Host.GetFileInfo(resource).FullName, true); view.PictureWidth.Text = "" + view.PictureBox.Image.Width + " Pixel(s)"; view.PictureHeight.Text = "" + view.PictureBox.Image.Height + " Pixel(s)"; view.PictureDepth.Text = "" + view.PictureBox.Image.PixelFormat.ToString(); if (Host.IsVerboseOutput()) { Host.Log(resource.DisplayName + " loaded"); } } catch (System.IO.FileNotFoundException) { Host.Log("Problem while loading " + resource.DisplayName); } view.RefreshTitle(); view.IsReady = true; }
public void OpenResource(Panel parentPanel, PhactoryHost.Database.Resource resource) { View.View view = new View.View(resource); view.Parent = parentPanel; view.Dock = System.Windows.Forms.DockStyle.Fill; ResourceBinding resourceBinding = new ResourceBinding(parentPanel, view); viewBinding.Add(resource, resourceBinding); resourceBinding.View.Document = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); if (resourceBinding.View.Document is Document.Document) { if (Host.IsVerboseOutput()) { Host.Log(resource.DisplayName + " loaded"); } } else { Host.Log("Problem while loading " + resource.DisplayName); } view.RefreshUI(); view.RefreshTitle(); view.IsReady = true; }
private ListViewItem AddListViewItem(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Plugin.ControllerEditor.Host.GetFileInfo(resource); if (fileInfo.Exists == false) { return(null); } ListViewItem item = new ListViewItem(resource.RelativePath, 0); // Relative Path item.SubItems.Add(((fileInfo.Length / 1024) + 1).ToString() + " Kb"); // File Size Image image = Image.FromFile(fileInfo.FullName); item.SubItems.Add("" + image.Width); // Width item.SubItems.Add("" + image.Height); // Height item.SubItems.Add(fileInfo.CreationTime.ToString()); // Created item.SubItems.Add(fileInfo.LastWriteTime.ToString()); // Modified lvFiles.Items.Add(item); SetModified(true); return(item); }
public void RefreshOutput(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return; } if (!fileInfo.Exists) { return; } if (!IsResourceSupported(resource)) { return; } Document.Document document = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); if (document is Document.Document) { List <string> outputFilenames = new List <string>(); string outputFilename = fileInfo.Name + ".bin"; outputFilenames.Add(outputFilename); Host.RefreshOutput(resource, outputFilenames); } }
public bool CloseResource(PhactoryHost.Database.Resource resource) { if (viewBinding.ContainsKey(resource)) { if (IsResourceModified(resource)) { switch (MessageBox.Show("The file has been modified. Save changes ?", "Confirm file close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)) { case DialogResult.Yes: SaveResource(resource); break; case DialogResult.No: break; case DialogResult.Cancel: return(false); } } viewBinding.Remove(resource); } return(true); }
public void CreatePairValueRecursive(PhactoryHost.Database.Resource resource, List <Helper.TopologicalSort.PairValue> pairValues) { if (resource == null) { return; } foreach (int dependentResourceId in resource.IdDependencies) { bool exist = false; foreach (Helper.TopologicalSort.PairValue pairValue in pairValues) { if ((pairValue.A == resource.Id) && (pairValue.B == dependentResourceId)) { exist = true; break; } } if (!exist) { pairValues.Add(new Helper.TopologicalSort.PairValue(resource.Id, dependentResourceId)); CreatePairValueRecursive(App.Controller.Entities.GetResource(dependentResourceId), pairValues); } } }
public void UpdateDependenciesRecursive(PhactoryHost.Database.Resource resource, List <PhactoryHost.Database.Resource> resourceDependencies) { App.Controller.View.AppDoEvents(); if (resource == null) { return; } string filename = resource.RelativePath; string extension = Helper.StringHelper.GetFileExtension(filename); FileInfo resourceFileInfo = Helper.StringHelper.GetFileInfo(resource); if (resourceFileInfo.LastWriteTime > resource.LastWriteTime) { resource.LastWriteTime = resourceFileInfo.LastWriteTime; PhactoryHost.CompilerPlugin compiler = App.Controller.PluginManager.GetCompiler(extension); if (compiler != null) { compiler.UpdateDependencies(resource); } } foreach (int resourceDependencyId in resource.IdDependencies) { PhactoryHost.Database.Resource resourceDependency = App.Controller.Entities.GetResource(resourceDependencyId); if (!resourceDependencies.Contains(resourceDependency)) { resourceDependencies.Add(resourceDependency); } UpdateDependenciesRecursive(resourceDependency, resourceDependencies); } }
private void CleanProject() { if (!CheckBuildStatus()) { return; } SetBuildStatus(BuildStatus.Neutral); PhactoryHost.Database.Resource resource = App.Controller.Entities.GetResource(App.Controller.Entities.StartupResourceId); if (resource == null) { this.ShowWarningMessage("Operation failed !", "You need to define a resource as startup item first."); } else { var stopwatch = new Stopwatch(); stopwatch.Start(); Thread t = new Thread(new CleanProjectWorker(resource).DoWork); t.Start(); while (t.IsAlive) { Application.DoEvents(); } stopwatch.Stop(); App.Controller.Log.Append(String.Format("Elapsed time: {0}", FormatElapsedTime(stopwatch.Elapsed))); } }
public bool Compile(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); if (fileInfo == null) { return(false); } if (!IsResourceSupported(resource)) { return(false); } List <String> resourceFilenames = new List <String>(); List <String> paddingFilenames = new List <String>(); List <int> address = new List <int>(); Document.Document document = Host.XMLRead <Document.Document>(Host.GetFileInfo(resource).FullName); if (document == null) { return(false); } document.Expand(); foreach (Document.File file in document.Files) { PhactoryHost.Database.Resource iResource = Host.GetResource(file.ResourceID); if (iResource == null) { Host.Log("Unknown resource identifier : " + file.ResourceID); return(false); } FileInfo iFileInfo = Host.GetFileInfo(iResource); resourceFilenames.Add(iFileInfo.FullName); paddingFilenames.Add(file.Pad256 ? "true" : "false"); address.Add((file.SetAddress == false)?0:file.Address); } var compiler = new Phactory.Modules.BigFile.Compiler.BigFileCompiler(); string resourceRelativePathNoExt = resource.RelativePath; resourceRelativePathNoExt = resourceRelativePathNoExt.Replace(".cpcbigfile", ""); App.Controller.View.AppDoEvents(); string baseFilename = Host.MakeFullPath(resourceRelativePathNoExt); string headerFilename = Host.MakeFullPath(resourceRelativePathNoExt + ".H"); if (!compiler.Compile(baseFilename, headerFilename, resourceFilenames, paddingFilenames, address, document.TruncateFiles, document.FilesInBank, document.BaseAddress)) { return(false); } return(true); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; lvFiles.Clear(); lvFiles.Columns.Add("Filename", 172); lvFiles.Columns.Add("WidthCPC", 64); lvFiles.Columns.Add("Width", 30); lvFiles.Columns.Add("Height", 30); lvPalette.Clear(); lvPalette.Columns.Add("Pen", 100); lvPalette.Columns.Add("Color", 100); lvPalette.Columns.Add("Gate Array", 100); cbMode.Items.Clear(); cbMode.Items.Add("MODE0"); cbMode.Items.Add("MODE1"); cbMode.Items.Add("MODE2"); RefreshProperties(); }
public void OpenResource(PhactoryHost.Database.Resource resource) { FileInfo fileInfo = Host.GetFileInfo(resource); PhactoryHost.EditorPlugin editor = GetEditor(fileInfo.Extension); if (!App.Controller.UserConfig.OpenedResources.Contains(resource.Id)) { App.Controller.UserConfig.OpenedResources.Add(resource.Id); App.Controller.WriteUserConfig(); } if (editor != null) { View.PluginView pluginView = App.Controller.View.CreatePluginView(resource, false); editor.OpenResource(pluginView.PluginContainer, resource); } else { PhactoryHost.EditorPlugin defaultEditor = GetDefaultEditorForUnknownTypes(); if (defaultEditor != null) { View.PluginView pluginView = App.Controller.View.CreatePluginView(resource, false); defaultEditor.OpenResource(pluginView.PluginContainer, resource); } } }
private void OnChanged(object source, FileSystemEventArgs e) { DateTime dateTime = File.GetLastWriteTime(e.FullPath); bool doChange = true; if (lastChangedDictionnary.ContainsKey(e.FullPath)) { DateTime dateTimeDictionnary = lastChangedDictionnary[e.FullPath]; if (dateTimeDictionnary.Second == dateTime.Second) { doChange = false; } else { lastChangedDictionnary.Remove(e.FullPath); } } if (doChange) { lastChangedDictionnary.Add(e.FullPath, dateTime); FileInfo fileInfo = new FileInfo(e.FullPath); PhactoryHost.Database.Resource resource = Helper.DBHelper.GuessResource(fileInfo); if ((resource != null) && (fileInfo.Exists == true)) { App.Controller.View.OnResourceChanged(resource); } } }
public void Expand() { for (int i = 0; i < Files.Count; i++) { PhactoryHost.Database.Resource resource = Plugin.ControllerCompiler.Host.GetResource(Files[i].ResourceID); if (resource == null) { continue; } FileInfo fileInfo = Plugin.ControllerCompiler.Host.GetFileInfo(resource); if (fileInfo.Extension.ToLower() == ".cpcbigfile") { Document tmpDocument = Plugin.ControllerCompiler.Host.XMLRead <Document>(fileInfo.FullName); // remove .cpcbigfile reference Files.RemoveAt(i); int next = 0; // to respect order foreach (File file in tmpDocument.Files) { Files.Insert(i + next, file); next++; file.ResourceCPCBigFileID = resource.Id; } // ensure i to be at the beginning of the new content, in case of recursive adds i--; } } }
public void SaveResource(PhactoryHost.Database.Resource resource) { bool writeOK = Host.XMLWrite(Host.GetFileInfo(resource).FullName, viewBinding[resource].View.Document); if (writeOK) { if (Host.IsVerboseOutput()) { Host.Log(resource.DisplayName + " written"); } Host.RefreshOutput(resource); List <PhactoryHost.Database.Resource> dependentResources = new List <PhactoryHost.Database.Resource>(); foreach (Document.Item item in viewBinding[resource].View.Document.Items) { dependentResources.Add(Plugin.ControllerEditor.Host.GetResource(item.ResourceID)); } Host.RefreshDependencies(resource, dependentResources); viewBinding[resource].View.SetModified(false); } else { Host.Log("Problem while writing " + resource.DisplayName); } }
static public bool CheckIfResourceCanBeRemoved(PhactoryHost.Database.Resource resource) { if (resource.IsOutputResource) { string errorMessage = "Can not remove '" + resource.DisplayName + "' because it's an output resource"; App.Controller.Log.Append(errorMessage); App.Controller.View.ShowErrorMessage("Can't remove resource", errorMessage); return(false); } List <PhactoryHost.Database.Resource> resourceDependencies = GetDependentResources(resource); if (resourceDependencies.Count != 0) { string errorMessage = "Can not remove '" + resource.DisplayName + "' because it's referenced by :\n"; errorMessage += "\n"; foreach (PhactoryHost.Database.Resource res in resourceDependencies) { errorMessage += "'" + res.DisplayName + "'\n"; } App.Controller.Log.Append(errorMessage); App.Controller.View.ShowErrorMessage("Can't remove resource", errorMessage); return(false); } return(true); }
private void rebuildProjectToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckBuildStatus()) { return; } SetBuildStatus(BuildStatus.Neutral); PhactoryHost.Database.Resource resource = App.Controller.Entities.GetResource(App.Controller.Entities.StartupResourceId); if (resource == null) { this.ShowWarningMessage("Operation failed !", "You need to define a resource as startup item first."); } else { var w = new RebuildProjectWorker(resource); Thread t = new Thread(w.DoWork); t.Start(); while (t.IsAlive) { Application.DoEvents(); } if (w.IsOk) { SetBuildStatus(BuildStatus.Success); } else { SetBuildStatus(BuildStatus.Failure); } } }
public void UpdateDependenciesRecursive(PhactoryHost.Database.Resource resource) { App.Controller.View.AppDoEvents(); List <PhactoryHost.Database.Resource> resourceDependencies = new List <PhactoryHost.Database.Resource>(); UpdateDependenciesRecursive(resource, resourceDependencies); }
public void OnResourceRenamed(PhactoryHost.Database.Resource resource) { if (this.InvokeRequired) { this.Invoke(new OnResourceRenamedDelegate(OnResourceRenamed), new object[] { resource }); return; } }
public void SetLine(PhactoryHost.Database.Resource resource, int line) { if (viewBinding.ContainsKey(resource)) { View.View view = viewBinding[resource].View; view.SetLine(line); } }
public void SaveResource() { PhactoryHost.Database.Resource resource = View.GetActivePluginResource(); if (resource != null) { SaveResource(resource); } }
private bool CompileResource(PhactoryHost.Database.Resource resource) { if (App.Controller.UserConfig.VerboseOutput == false) { if (resource.IdOutputs.Count == 1) { PhactoryHost.Database.Resource outputResource = App.Controller.Entities.GetResource(resource.IdOutputs[0]); if (outputResource.Id != App.Controller.Entities.StartupResourceId) { if (App.Controller.PluginManager.Host.IsResourceReferencedByOtherResources(outputResource).Count == 0) { // simply skip compilation return(true); } } } } string filename = resource.RelativePath; string extension = Helper.StringHelper.GetFileExtension(filename); PhactoryHost.CompilerPlugin compiler = App.Controller.PluginManager.GetCompiler(extension); if (compiler == null) { if (App.Controller.UserConfig.VerboseOutput) { App.Controller.Log.Append(resource.DisplayName + " (skipped)"); } return(true); } bool showInLog = true; string typeInfo = ""; if (resource.IsIncludeResource) { typeInfo += " (include resource)"; showInLog = App.Controller.UserConfig.VerboseOutput; } if (resource.IsOutputResource) { typeInfo += " (output resource)"; showInLog = App.Controller.UserConfig.VerboseOutput; } if (showInLog) { App.Controller.Log.Append(resource.DisplayName + typeInfo); } App.Controller.View.AppDoEvents(); return(compiler.Compile(resource)); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; this.textEditorControl.ActiveTextAreaControl.TextArea.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextEditor_KeyDown); this.textEditorControl.TextChanged += new EventHandler(TextEditor_TextChanged); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; lvFiles.Clear(); lvFiles.Columns.Add("Filename", 200); lvFiles.Columns.Add("Size", 100); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; lvFiles.Clear(); lvFiles.Columns.Add("Filename", 200); lvFiles.Columns.Add("Address", 50); lvFiles.Columns.Add("Length", 50); lvFiles.Columns.Add("Length (Hex)", 80); lvFiles.Columns.Add("Is External From", 200); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; lvFiles.Clear(); lvFiles.Columns.Add("Filename", 130); lvFiles.Columns.Add("Size", 70); lvFiles.Columns.Add("Width", 70); lvFiles.Columns.Add("Height", 70); lvFiles.Columns.Add("Created", 120); lvFiles.Columns.Add("Last Modified", 120); RefreshProperties(); }
public View(PhactoryHost.Database.Resource resource) { InitializeComponent(); Resource = resource; modified = false; lvFiles.Clear(); lvFiles.Columns.Add("Filename", 100); lvFiles.Columns.Add("Filename (AMSDOS 8.3)", 140); lvFiles.Columns.Add("Type", 80); lvFiles.Columns.Add("Length in Kb", 80); lvFiles.Columns.Add("Length (Base 10)", 100); lvFiles.Columns.Add("Length (Base 16)", 100); lvFiles.Columns.Add("Load Address", 100); lvFiles.Columns.Add("Execution Address", 100); RefreshMoveButtonStates(); }
public ResourceSelector(PhactoryHost.Database.Resource defaultResource, List<string> extensionFilter) : this() { DefaultResource = defaultResource; if (extensionFilter != null) { ExtensionFilter = extensionFilter; string title = this.Text; title += " (filtered by "; for( int iExtension = 0; iExtension < extensionFilter.Count; iExtension++ ) { title += extensionFilter[ iExtension ]; if ( iExtension != ( extensionFilter.Count - 1 ) ) { title += ", "; } } title += ")"; this.Text = title; } }
public ResourceSelector(PhactoryHost.Database.Resource defaultResource) : this() { DefaultResource = defaultResource; }
public ResourceSelector(PhactoryHost.Database.Resource defaultResource, bool multiSelect) : this() { DefaultResource = defaultResource; MultiSelect = multiSelect; }
public void SaveResource(PhactoryHost.Database.Resource resource) { if (viewBinding.ContainsKey(resource)) { View.View view = viewBinding[resource].View; IgnoreNextResource = resource; FileInfo fileInfo = Host.GetFileInfo(resource); view.WriteContentToFile(fileInfo.FullName); if (Host.IsVerboseOutput()) { Host.Log(resource.DisplayName + " written"); } Host.RefreshOutput(resource); view.SetModified(false); } }
public RunProjectWorker(PhactoryHost.Database.Resource resource) { this.resource = resource; }
public BuildProjectWorker(PhactoryHost.Database.Resource resource, bool clearLog) { this.resource = resource; this.clearLog = clearLog; }