[Monodevelop-patches-list] r908 - in trunk/MonoDevelop: build/data/resources/css build/data/resources/languages build/data/templates build/data/templates/file build/data/templates/file/CSharp build/data/templates/file/SharpDevelop build/data/templates/file/VBNet build/data/templates/project build/data/templates/project/CSharp build/data/templates/project/Java build/data/templates/project/Misc build/data/templates/project/VBNet src/AddIns/DisplayBindings/SourceEditor/Gui/Dialogs
commit-watcher at mono-cvs.ximian.com
commit-watcher at mono-cvs.ximian.com
Sat Feb 14 16:51:03 EST 2004
Author: jluke
Date: 2004-02-14 16:51:03 -0500 (Sat, 14 Feb 2004)
New Revision: 908
Added:
trunk/MonoDevelop/src/AddIns/DisplayBindings/SourceEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs
Modified:
trunk/MonoDevelop/build/data/resources/css/
trunk/MonoDevelop/build/data/resources/languages/
trunk/MonoDevelop/build/data/templates/
trunk/MonoDevelop/build/data/templates/file/
trunk/MonoDevelop/build/data/templates/file/CSharp/
trunk/MonoDevelop/build/data/templates/file/SharpDevelop/
trunk/MonoDevelop/build/data/templates/file/VBNet/
trunk/MonoDevelop/build/data/templates/project/
trunk/MonoDevelop/build/data/templates/project/CSharp/
trunk/MonoDevelop/build/data/templates/project/Java/
trunk/MonoDevelop/build/data/templates/project/Misc/
trunk/MonoDevelop/build/data/templates/project/VBNet/
Log:
f-n ignore
Property changes on: trunk/MonoDevelop/build/data/resources/css
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/resources/languages
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/file
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/file/CSharp
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/file/SharpDevelop
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/file/VBNet
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/project
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/project/CSharp
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/project/Java
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/project/Misc
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Property changes on: trunk/MonoDevelop/build/data/templates/project/VBNet
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
Added: trunk/MonoDevelop/src/AddIns/DisplayBindings/SourceEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs
===================================================================
--- trunk/MonoDevelop/src/AddIns/DisplayBindings/SourceEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs 2004-02-14 21:39:30 UTC (rev 907)
+++ trunk/MonoDevelop/src/AddIns/DisplayBindings/SourceEditor/Gui/Dialogs/ExportProjectToHtmlDialog.cs 2004-02-14 21:51:03 UTC (rev 908)
@@ -0,0 +1,436 @@
+// <file>
+// <copyright see="prj:///doc/copyright.txt"/>
+// <license see="prj:///doc/license.txt"/>
+// <owner name="Mike Krüger" email="mike at icsharpcode.net"/>
+// <version value="$version"/>
+// </file>
+
+using System;
+using System.Drawing;
+using System.IO;
+using System.Collections;
+using System.Collections.Specialized;
+
+using ICSharpCode.Core.Properties;
+using ICSharpCode.Core.Services;
+using ICSharpCode.SharpDevelop.Internal.Project;
+using ICSharpCode.TextEditor.Document;
+//using ICSharpCode.TextEditor.Util;
+
+using Gtk;
+
+namespace ICSharpCode.SharpDevelop.Gui.Dialogs
+{
+ public class ExportProjectToHtmlDialog : Dialog
+ {
+ /*
+ Entry pathTextBox = new Entry ();
+ Label pathLabel = new Label();
+ Button okButton = new Button();
+ Button cancelButton = new Button();
+ Button browseButton = new Button();
+
+ ProgressBar progressBar = new ProgressBar();
+
+ FileUtilityService fileUtilityService = (FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService));
+ IconService iconService = (IconService)ServiceManager.Services.GetService(typeof(IconService));
+ ResourceService resourceService = (ResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
+ IProject project;
+ int filesExported = 0;
+
+ int FilesExported {
+ get {
+ return filesExported;
+ }
+ set {
+ progressBar.Fraction = filesExported = value / 100;
+ }
+ }
+
+ void StartExporting()
+ {
+ cancelButton = new Button (Stock.Cancel);
+ cancelButton.Click += new EventHandler(StopThread);
+ }
+*/
+ public ExportProjectToHtmlDialog(IProject project)
+ {
+/* PropertyService propertyService = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService));
+
+ this.project = project;
+
+ pathLabel.Text = resourceService.GetString("Dialog.ExportProjectToHtml.FolderLabel");
+
+ browseButton.Text = "...";
+ browseButton.Click += new EventHandler(BrowseDirectories);
+
+ okButton.Text = resourceService.GetString("Global.OKButtonText");
+ okButton.Click += new EventHandler(ExportProject);
+
+ cancelButton.DialogResult = DialogResult.Cancel;
+
+ RequestSize = new Size (350, 88 + 6);
+ Position = StartPosition.CenterParent;
+ //ShowInTaskbar = false;
+
+ Title = resourceService.GetString("Dialog.ExportProjectToHtml.DialogName");
+*/
+ }
+/*
+ void BrowseDirectories(object sender, EventArgs e)
+ {
+ FolderDialog fd = new FolderDialog();
+
+ if(fd.DisplayDialog(resourceService.GetString("Dialog.ExportProjectToHtml.SelectTargetDirInfo")) == DialogResult.OK) {
+ pathTextBox.Text = fd.Path;
+ }
+ }
+
+ Hashtable projectTable = new Hashtable();
+ Hashtable bitmapTable = new Hashtable();
+ int bitmapIconIndex = 0;
+ int indexFileIndex = 0;
+
+ public Hashtable GetPath(string filename, Hashtable table, bool create)
+ {
+ string directory = Path.GetDirectoryName(filename);
+ string[] treepath = directory.Split(new char[] { Path.DirectorySeparatorChar });
+ Hashtable curTable = table;
+
+ foreach (string path in treepath) {
+ if (path.Length == 0 || path[0] == '.')
+ continue;
+
+ object node = curTable[path];
+
+ if (node == null) {
+ if (create) {
+ Hashtable newTable = new Hashtable();
+ curTable[path] = newTable;
+ curTable = newTable;
+ continue;
+ } else {
+ return null;
+ }
+ }
+ curTable = (Hashtable)node;
+ }
+ return curTable;
+ }
+ int GetImageIndex(string filename)
+ {
+ if (filename != null) {
+ return iconService.GetImageIndexForFile(filename);
+ }
+ return -1;
+ }
+
+ class Descriptor
+ {
+ public string title;
+ public string url;
+ public Descriptor(string title, string url)
+ {
+ this.title = title;
+ this.url = url;
+ }
+ }
+
+ StreamWriter curFileStream = null;
+ Stack curIndexStreamStack = new Stack();
+ int curSpanNumber = 0;
+ Hashtable Spans = new Hashtable();
+
+ string ExportFile (string fileName, string targetPath)
+ {
+ string targetFile = fileUtilityService.AbsoluteToRelativePath(project.BaseDirectory, fileName).Substring(2).Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "") + ".html";
+
+ IDocument document = new DocumentFactory().CreateDocument();
+ document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategyForFile(fileName);
+ StreamReader stream = File.OpenText(fileName);
+ document.TextContent = stream.ReadToEnd();
+ stream.Close();
+
+ curFileStream = File.CreateText(targetPath + Path.DirectorySeparatorChar + targetFile);
+ curFileStream.Write("<html>\r\n");
+ curFileStream.Write("<head>\r\n");
+ curFileStream.Write("<link rel=\"stylesheet\" type=\"text/css\" href=\"sdcss.css\">\r\n");
+ curFileStream.Write("<title>" + Path.GetFileName(fileName) + "</title>\r\n");
+ curFileStream.Write("</head>\r\n");
+ curFileStream.Write("<body>\r\n");
+
+ curFileStream.Write("<div class=\"code\"><TABLE SUMMARY=\"SourceCode\" BORDER=0 CELLSPACING=0 CELLPADDING=2 WIDTH=\"100%\">\r\n");
+ curFileStream.Write(" <TR BGCOLOR=\"#FFFFFF\">\r\n");
+ curFileStream.Write(" <TH WIDTH=\"50\" NOWRAP ALIGN=LEFT></TH>\r\n");
+ curFileStream.Write(" <TH WIDTH=\"1%\" NOWRAP ALIGN=LEFT></TH>\r\n");
+ curFileStream.Write(" <TH VALIGN=TOP ALIGN=LEFT> \r\n");
+ curFileStream.Write(" </TH>\r\n");
+
+ curFileStream.Write(" </TR>\r\n");
+ int i = 0;
+ foreach (LineSegment line in document.LineSegmentCollection) {
+ curFileStream.Write(" <TR BGCOLOR=\"#FFFFFF\" VALIGN=TOP>\r\n");
+ curFileStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT>" + ++i + ":</TD>\r\n");
+ curFileStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=LEFT> \r\n");
+ bool spanOpen = false;
+ Color curColor = Color.Black;
+ bool oldItalic = false;
+ bool oldBold = false;
+ bool firstSpan = true;
+ foreach (TextWord word in line.Words) {
+ switch (word.Type) {
+ case TextWordType.Space:
+ curFileStream.Write(" ");
+ break;
+
+ case TextWordType.Tab:
+ for (int k = 0; k < document.TextEditorProperties.TabIndent; ++k) {
+ curFileStream.Write(" ");
+ }
+ break;
+
+ case TextWordType.Word:
+ Color c = word.Color;
+ string colorstr = c.R + ", " + c.G + ", " + c.B;
+
+ if (word.Font.Italic) {
+ colorstr = "i" + colorstr;
+ }
+ if (word.Font.Bold) {
+ colorstr = "b" + colorstr;
+ }
+ if (Spans[colorstr] == null) {
+ Spans[colorstr] = "span" + ++curSpanNumber;
+ }
+ bool newColor = c != curColor || oldItalic != word.Font.Italic || oldBold != word.Font.Bold;
+ if (newColor) {
+ if (!firstSpan) {
+ curFileStream.Write("</span>" );
+ }
+
+ curFileStream.Write("<span class=\"" + Spans[colorstr].ToString() + "\">" );
+ spanOpen = true;
+ firstSpan = false;
+ }
+ curFileStream.Write(HtmlLize(word.Word));
+
+ if (newColor) {
+ curColor = c;
+ oldItalic = word.Font.Italic;
+ oldBold = word.Font.Bold;
+ }
+ break;
+ }
+ }
+ if (spanOpen) {
+ curFileStream.Write("</span>" );
+ }
+ curFileStream.Write("</TD>\r\n");
+ curFileStream.Write("</TR>\r\n");
+ }
+ curFileStream.Write("</TABLE></div>\r\n");
+
+ curFileStream.Write("<P>\r\n");
+ curFileStream.Write("This page was automatically generated by \r\n");
+ curFileStream.Write("<A TARGET=\"_blank\" HREF=\"http://www.icsharpcode.net/OpenSource/SD\">SharpDevelop</A>.\r\n");
+ curFileStream.Write("</p>\r\n");
+ curFileStream.Write("</body>\r\n");
+ curFileStream.Write("</html>\r\n");
+ curFileStream.Close();
+ return targetFile;
+ }
+
+ string HtmlLize(string str)
+ {
+ return str.Replace("&", "&").Replace("<", "<").Replace(">", ">");
+ }
+
+ void WriteIndexTable(string fileName, string name, ArrayList nameList, Hashtable table)
+ {
+ curIndexStreamStack.Push(File.CreateText(fileName));
+ StreamWriter curIndexStream = (StreamWriter)curIndexStreamStack.Peek();
+
+ curIndexStream.Write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n");
+ curIndexStream.Write("<html>\r\n");
+ curIndexStream.Write("<head>\r\n");
+ curIndexStream.Write("<title>" + project.Name + "</title>\r\n");
+ curIndexStream.Write("</head>\r\n");
+
+ curIndexStream.Write("<body>\r\n");
+ curIndexStream.Write("<p>Location : ");
+ foreach (Descriptor d in nameList) {
+ curIndexStream.Write("<a href=\""+ d.url + "\">" + d.title + "</a>/");
+ }
+ curIndexStream.Write(name);
+ curIndexStream.Write("</p>\r\n");
+
+ nameList.Add (new Descriptor (name, System.IO.Path.GetFileName (fileName)));
+
+ curIndexStream.Write("<TABLE SUMMARY=\"Directory\" BORDER=0 CELLSPACING=0 CELLPADDING=2 WIDTH=\"100%\">\r\n");
+ curIndexStream.Write(" <TR BGCOLOR=\"#F38C00\">\r\n");
+ curIndexStream.Write(" <TH WIDTH=\"1%\"> </TH>\r\n");
+ curIndexStream.Write(" <TH WIDTH=\"1%\" NOWRAP ALIGN=LEFT>Name</TH>\r\n");
+ curIndexStream.Write(" <TH WIDTH=\"1%\" NOWRAP ALIGN=RIGHT>Size</TH>\r\n");
+ curIndexStream.Write(" <TH WIDTH=\"1%\" NOWRAP ALIGN=LEFT>Date</TH>\r\n");
+ curIndexStream.Write(" <TH VALIGN=TOP ALIGN=LEFT> \r\n");
+ curIndexStream.Write(" </TH>\r\n");
+ curIndexStream.Write(" </TR>\r\n");
+
+ bool coloring = false;
+ foreach (DictionaryEntry entry in table) {
+ if (entry.Value is Hashtable) {
+ string filename = "index" + ++indexFileIndex + ".html";
+ WriteIndexTable (System.IO.Path.GetDirectoryName (fileName) + System.IO.Path.DirectorySeparatorChar + filename, entry.Key.ToString(), nameList, (Hashtable)entry.Value);
+ nameList.RemoveAt(nameList.Count - 1);
+ curIndexStream.Write(" <TR BGCOLOR=\"" + (coloring ? "#FFFFFF" : "#EEEEEE") + "\" VALIGN=TOP>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT><a href=\"" + filename + "\"><IMG ALIGN=ABSBOTTOM BORDER=0 WIDTH=16 HEIGHT=16 SRC=\"folderbitmap.png\"></a></TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=LEFT><a href=\""+ filename + "\">" + entry.Key.ToString() + "</a> </TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT>-</TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT>-</TD>\r\n");
+ curIndexStream.Write(" <TD VALIGN=TOP ALIGN=LEFT> \r\n");
+ curIndexStream.Write(" </TD>\r\n");
+ curIndexStream.Write(" </TR>\r\n");
+ } else if (entry.Value is ProjectFile) {
+ ProjectFile fInfo = (ProjectFile)entry.Value;
+ DateTime time = Directory.GetLastAccessTime(fInfo.Name);
+ FileStream reader = File.OpenRead(fInfo.Name);
+ long size = reader.Length;
+ reader.Close();
+
+ int idx = GetImageIndex(fInfo.Name);
+ if (bitmapTable[idx] == null) {
+ string filename = "fileicon" + ++bitmapIconIndex + ".png";
+
+ //Bitmap bmp = (Bitmap)iconService.ImageList.Images[idx];
+ //bmp.Save(Path.GetDirectoryName(fileName) + Path.DirectorySeparatorChar + filename);
+ //bitmapTable[idx] = filename;
+ }
+ string outFile = ExportFile(fInfo.Name, System.IO.Path.GetDirectoryName(fileName));
+ ++FilesExported;
+ curIndexStream.Write(" <TR BGCOLOR=\"" + (coloring ? "#FFFFFF" : "#EEEEEE") + "\" VALIGN=TOP>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT><a href=\"" + outFile + "\"><IMG ALIGN=ABSBOTTOM BORDER=0 WIDTH=16 HEIGHT=16 SRC=\"" + bitmapTable[idx].ToString() +"\"></a></TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=LEFT><a href=\"" + outFile + "\">" + System.IO.Path.GetFileName(fInfo.Name) + "</a> </TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT>" + size + "</TD>\r\n");
+ curIndexStream.Write(" <TD NOWRAP VALIGN=TOP ALIGN=RIGHT>" + time.ToString("d") + "</TD>\r\n");
+ curIndexStream.Write(" <TD VALIGN=TOP ALIGN=LEFT> \r\n");
+ curIndexStream.Write(" </TD>\r\n");
+ curIndexStream.Write(" </TR>\r\n");
+
+ }
+ coloring = !coloring;
+ }
+
+ curIndexStream.Write("</TABLE>\r\n");
+
+ curIndexStream.Write("<p>\r\n");
+ curIndexStream.Write("This page was automatically generated by \r\n");
+ curIndexStream.Write("<A TARGET=\"_blank\" HREF=\"http://www.icsharpcode.net/OpenSource/SD\">SharpDevelop</A>.\r\n");
+ curIndexStream.Write("</p>\r\n");
+ curIndexStream.Write("</body>\r\n");
+ curIndexStream.Write("</html>\r\n");
+
+ lock (this) {
+ curIndexStream.Close();
+ curIndexStreamStack.Pop();
+ }
+ }
+
+ delegate void MyD();
+
+ void QuitDialog()
+ {
+ //DialogResult = DialogResult.OK;
+ }
+
+ Thread exportFilesThread;
+ void ExportFilesThread()
+ {
+ resourceService.GetBitmap("Icons.16x16.ClosedFolderBitmap").Save(fileUtilityService.GetDirectoryNameWithSeparator(pathTextBox.Text) + "folderbitmap.png");
+ WriteIndexTable(fileUtilityService.GetDirectoryNameWithSeparator(pathTextBox.Text) + "index.html", "[ROOT]", new ArrayList(), projectTable);
+ CreateCSS(pathTextBox.Text);
+ Invoke(new MyD(QuitDialog));
+ }
+
+ void StopThread(object sender, EventArgs e)
+ {
+ lock (this) {
+ exportFilesThread.Abort();
+ curFileStream.Close();
+ while (curIndexStreamStack.Count > 0) {
+ ((StreamWriter)curIndexStreamStack.Pop()).Close();
+ }
+ QuitDialog();
+ }
+ }
+
+ void CreateCSS(string targetPath)
+ {
+ lock (this) {
+ StreamWriter sw = File.CreateText(targetPath + Path.DirectorySeparatorChar + "sdcss.css");
+ sw.Write("div.code\r\n");
+ sw.Write("{\r\n");
+ sw.Write(" background-color: rgb(255,255,255);\r\n");
+ sw.Write(" font-family: \"Lucida Console\", \"courier new\", courier;\r\n");
+ sw.Write(" color: rgb(0,0,0);\r\n");
+ sw.Write(" font-size: x-small;\r\n");
+ sw.Write(" padding: 1em;\r\n");
+ sw.Write(" margin: 1em;\r\n");
+ sw.Write("}\r\n");
+
+ foreach (DictionaryEntry entry in Spans) {
+ string color = entry.Key.ToString();
+ string name = entry.Value.ToString();
+ bool bold = color.StartsWith("b");
+ if (bold) {
+ color = color.Substring(1);
+ }
+ bool italic = color.StartsWith("i");
+ if (italic) {
+ color = color.Substring(1);
+ }
+
+ sw.Write("div.code span." + name +"\r\n");
+ sw.Write("{\r\n");
+ sw.Write(" color: rgb("+ color + ");\r\n");
+ if (bold) {
+ sw.Write(" font-weight: bold;\r\n");
+ } else
+ if (italic) {
+ sw.Write(" font-weight: italic;\r\n");
+ } else {
+ sw.Write(" font-weight: normal;\r\n");
+ }
+
+ sw.Write("}\r\n");
+ }
+ sw.Close();
+ }
+
+ }
+
+ void ExportProject(object sender, EventArgs e)
+ {
+ if (!Directory.Exists(pathTextBox.Text)) {
+ MessageBox.Show("Directory doesn't exists", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ foreach (ProjectFile fInfo in project.ProjectFiles) {
+ if (fInfo.Subtype != Subtype.Directory) {
+ if (fInfo.BuildAction == BuildAction.Compile ||
+ fInfo.BuildAction == BuildAction.Nothing) {
+ string relativefile = fileUtilityService.AbsoluteToRelativePath(project.BaseDirectory, fInfo.Name);
+ Hashtable table = GetPath(relativefile, projectTable, true);
+ table [System.IO.Path.GetFileName(fInfo.Name)] = fInfo;
+ }
+ }
+ }
+
+ StartExporting();
+ exportFilesThread = new Thread(new ThreadStart(ExportFilesThread));
+ exportFilesThread.IsBackground = true;
+ exportFilesThread.Start();
+ }
+ */
+ }
+}
More information about the Monodevelop-patches-list
mailing list