diff options
author | Miguel de Icaza <miguel@gnome.org> | 2006-11-22 02:25:09 +0300 |
---|---|---|
committer | Miguel de Icaza <miguel@gnome.org> | 2006-11-22 02:25:09 +0300 |
commit | e62bc2ffc2bac952a89fd7bc93e35c2ca8cdb2a4 (patch) | |
tree | 7fe4113929bfa0ab8142cc3dfc1b4cae320615ba | |
parent | 736fdb43184adc696c1924e5d0df55169d0d0900 (diff) |
Backport dialog crasher fixemono-1-2-1
svn path=/branches/mono-tools-1-2-1/; revision=68303
-rw-r--r-- | docbrowser/BookmarkManager.cs | 396 | ||||
-rw-r--r-- | docbrowser/ChangeLog | 5 |
2 files changed, 203 insertions, 198 deletions
diff --git a/docbrowser/BookmarkManager.cs b/docbrowser/BookmarkManager.cs index 976a1b23..0167eeee 100644 --- a/docbrowser/BookmarkManager.cs +++ b/docbrowser/BookmarkManager.cs @@ -21,23 +21,23 @@ namespace Monodoc { [Serializable] public class BookmarkBase { [XmlAttribute] - public string ID = Guid.NewGuid().ToString(); + public string ID = Guid.NewGuid ().ToString (); [XmlAttribute] public string Name = String.Empty; - public BookmarkBase() {} + public BookmarkBase () {} } [Serializable] - [XmlInclude(typeof(Bookmark))] + [XmlInclude (typeof (Bookmark))] public class BookmarkGroup : BookmarkBase { - [XmlElement("Member")] - public ArrayList Members = new ArrayList(); + [XmlElement ("Member")] + public ArrayList Members = new ArrayList (); - public BookmarkGroup() {} + public BookmarkGroup () {} - public BookmarkGroup(string name) { + public BookmarkGroup (string name) { Name = name; } @@ -48,12 +48,12 @@ namespace Monodoc { public string Url; - public Bookmark(string name, string url){ + public Bookmark (string name, string url){ Name = name; Url = url; } - public Bookmark() {} + public Bookmark () {} } internal class ManageBookmarkDialog { [Glade.Widget] Gtk.TreeView bookmarks_treeview; @@ -64,30 +64,30 @@ namespace Monodoc { CellRendererText cell_render; const string UNTITLED = "Untitled"; - public ManageBookmarkDialog(BookmarkGroup bookmarks) { - Glade.XML xml = new Glade.XML("browser.glade","manage_bookmarks_dialog"); - xml.Autoconnect(this); - iter_to_id = new Hashtable(); + public ManageBookmarkDialog (BookmarkGroup bookmarks) { + Glade.XML xml = new Glade.XML ("browser.glade","manage_bookmarks_dialog"); + xml.Autoconnect (this); + iter_to_id = new Hashtable (); root_group = bookmarks; bookmarks_treeview.RulesHint = true; bookmarks_treeview.EnableSearch = true; // treeview handlers - bookmarks_treeview.RowExpanded += new Gtk.RowExpandedHandler(on_row_expanded); - bookmarks_treeview.Selection.Changed += new EventHandler(on_row_selected); - bookmarks_treeview.RowActivated += new Gtk.RowActivatedHandler(on_row_activated); - cell_render = new CellRendererText(); - cell_render.Edited += new EditedHandler(on_cellrender_edited); + bookmarks_treeview.RowExpanded += new Gtk.RowExpandedHandler (on_row_expanded); + bookmarks_treeview.Selection.Changed += new EventHandler (on_row_selected); + bookmarks_treeview.RowActivated += new Gtk.RowActivatedHandler (on_row_activated); + cell_render = new CellRendererText (); + cell_render.Edited += new EditedHandler (on_cellrender_edited); cell_render.Editable = true; - bookmarks_treeview.AppendColumn("Column 1", cell_render,"text",0); + bookmarks_treeview.AppendColumn ("Column 1", cell_render,"text",0); } - void on_row_expanded(object sender, Gtk.RowExpandedArgs args) { + void on_row_expanded (object sender, Gtk.RowExpandedArgs args) { } - void on_row_selected(object sender, EventArgs args) { + void on_row_selected (object sender, EventArgs args) { Gtk.TreeIter iter; Gtk.TreeModel model; @@ -97,17 +97,17 @@ namespace Monodoc { } - void on_cellrender_edited(object sender, EditedArgs args) { + void on_cellrender_edited (object sender, EditedArgs args) { // root group can't be edited if ( selected_id == root_group.ID) return; BookmarkBase bk = null; - BookmarkManager.GetBookmarkBase(root_group,selected_id,ref bk); + BookmarkManager.GetBookmarkBase (root_group,selected_id,ref bk); if (bk == null ) { - Console.WriteLine("error, could not retrieve bookmark:{0}",selected_id); + Console.WriteLine ("error, could not retrieve bookmark:{0}",selected_id); return; } @@ -116,159 +116,170 @@ namespace Monodoc { //refreshing tree_view - BookmarkManager.Refresh(); - BuildTreeView(); + BookmarkManager.Refresh (); + BuildTreeView (); } - void on_row_activated(object sender, Gtk.RowActivatedArgs args) { + void on_row_activated (object sender, Gtk.RowActivatedArgs args) + { } - void OnDelete(object o, EventArgs args) { - manage_bookmarks_dialog.Destroy(); + + void OnDelete (object o, DeleteEventArgs args) + { + manage_bookmarks_dialog.Destroy (); } - void on_NewFolderButton_clicked(object sender, EventArgs args) { - BookmarkManager.AddBookmarkGroup(root_group,selected_id,UNTITLED); - BookmarkManager.Refresh(); - BuildTreeView(); + + void on_NewFolderButton_clicked (object sender, EventArgs args) + { + BookmarkManager.AddBookmarkGroup (root_group,selected_id,UNTITLED); + BookmarkManager.Refresh (); + BuildTreeView (); } - void on_EditButton_clicked(object sender, EventArgs args) { + + void on_EditButton_clicked (object sender, EventArgs args) + { } - void OnDeleteClicked(object o, EventArgs args){ + + void OnDeleteClicked (object o, EventArgs args) + { if (selected_id != string.Empty) { - BookmarkManager.DeleteBookmarkBase(root_group,selected_id); - BookmarkManager.Refresh(); - BuildTreeView(); - + BookmarkManager.DeleteBookmarkBase (root_group,selected_id); + BookmarkManager.Refresh (); + BuildTreeView (); } } - void OnCancelClicked(object o, EventArgs args) { + + void OnCancelClicked (object o, EventArgs args) + { //TODO add undo logic - manage_bookmarks_dialog.Hide(); + manage_bookmarks_dialog.Hide (); } - public void Show(){ - BuildTreeView(); - manage_bookmarks_dialog.ShowAll(); + public void Show () + { + BuildTreeView (); + manage_bookmarks_dialog.ShowAll (); } - void BuildTreeView() { - - - TreeStore store = new TreeStore(typeof(string)); + void BuildTreeView () + { + TreeStore store = new TreeStore (typeof (string)); bookmarks_treeview.Model = store; - TreeIter iter = store.AppendValues(root_group.Name); + TreeIter iter = store.AppendValues (root_group.Name); // appending root iter_to_id[iter] = root_group.ID; // calling the recursevily builder - BuildTreeViewHelper(root_group,iter,store); + BuildTreeViewHelper (root_group,iter,store); /* - foreach(object i in root_group.Members) { + foreach (object i in root_group.Members) { if (i is Bookmark) - iter_to_id[store.AppendValues(iter,((Bookmark)i).Name )] = ((Bookmark)i).ID; + iter_to_id[store.AppendValues (iter, ((Bookmark)i).Name )] = ((Bookmark)i).ID; } */ - bookmarks_treeview.ExpandAll(); + bookmarks_treeview.ExpandAll (); } - void BuildTreeViewHelper(BookmarkGroup bookmarks, TreeIter iter, TreeStore store) { + + void BuildTreeViewHelper (BookmarkGroup bookmarks, TreeIter iter, TreeStore store) + { TreeIter tmp_iter; foreach (object i in bookmarks.Members) { if (i is BookmarkGroup) { - tmp_iter = store.AppendValues(iter,((BookmarkGroup)i).Name ); + tmp_iter = store.AppendValues (iter, ((BookmarkGroup)i).Name ); iter_to_id[tmp_iter] = ((BookmarkGroup)i).ID; - BuildTreeViewHelper( (BookmarkGroup)i, tmp_iter, store); + BuildTreeViewHelper ((BookmarkGroup)i, tmp_iter, store); } if (i is Bookmark) { - tmp_iter = store.AppendValues(iter,((Bookmark)i).Name); + tmp_iter = store.AppendValues (iter, ((Bookmark)i).Name); iter_to_id[tmp_iter] = ((Bookmark)i).ID; } } - } - } + internal class AddBookmarkDialog { [Glade.Widget] Gtk.Entry name_entry; [Glade.Widget] HBox hbox37; [Glade.Widget] Gtk.Window add_bookmark_dialog; - + string text, url; BookmarkGroup root; Combo combo; - Hashtable combo_to_id = new Hashtable(); + Hashtable combo_to_id = new Hashtable (); - public AddBookmarkDialog(BookmarkGroup root_group) { - - Glade.XML xml = new Glade.XML("browser.glade","add_bookmark_dialog"); - xml.Autoconnect(this); + public AddBookmarkDialog (BookmarkGroup root_group) + { + Glade.XML xml = new Glade.XML ("browser.glade","add_bookmark_dialog"); + xml.Autoconnect (this); - combo = new Combo(); + combo = new Combo (); - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList (); - BuildComboList(root_group,list); - combo.PopdownStrings = list.ToArray(typeof(string)) as string[]; + BuildComboList (root_group,list); + combo.PopdownStrings = list.ToArray (typeof (string)) as string[]; combo.AllowEmpty = false; combo.Entry.Editable = false; - combo.DisableActivate(); + combo.DisableActivate (); // pusihing widget into hbox - hbox37.PackEnd(combo); + hbox37.PackEnd (combo); - //combo.Entry.Activated += new EventHandler(on_combo_entry_activated); + //combo.Entry.Activated += new EventHandler (on_combo_entry_activated); root = root_group; text = url = String.Empty; } - //recursively builds combo box - private void BuildComboList(BookmarkGroup bookmarks, ArrayList list) { - + // recursively builds combo box + private void BuildComboList (BookmarkGroup bookmarks, ArrayList list) + { foreach (object i in bookmarks.Members) { if (i is BookmarkGroup) { - BuildComboList(i as BookmarkGroup, list); + BuildComboList (i as BookmarkGroup, list); } } - list.Add(bookmarks.Name); + list.Add (bookmarks.Name); combo_to_id[bookmarks.Name] = bookmarks.ID; } - public void on_AddBookmark_delete_event(object o, EventArgs args) { - add_bookmark_dialog.Destroy(); + + public void on_AddBookmark_delete_event (object o, DeleteEventArgs args) + { + add_bookmark_dialog.Destroy (); } - public void on_AddButton_clicked(object o, EventArgs args) { - - /* - if (combo.Entry.Text != text ) - BookmarkManager.AddBookmarkGroup(root,root.Name,combo.Entry.Text); - */ - - BookmarkManager.AddBookmark(root,combo_to_id[combo.Entry.Text] as string,name_entry.Text,url); - add_bookmark_dialog.Hide(); - BookmarkManager.Refresh(); + public void on_AddButton_clicked (object o, EventArgs args) + { + BookmarkManager.AddBookmark (root,combo_to_id [combo.Entry.Text] as string,name_entry.Text,url); + add_bookmark_dialog.Hide (); + BookmarkManager.Refresh (); } - public void on_CancelButton_clicked(object o, EventArgs args) { - add_bookmark_dialog.Hide(); + public void on_CancelButton_clicked (object o, EventArgs args) + { + add_bookmark_dialog.Hide (); } - public void on_combo_entry_activated(object sender, EventArgs args) { + public void on_combo_entry_activated (object sender, EventArgs args) + { } - public void Show(string T, string U) { + public void Show (string T, string U) + { name_entry.Text = T; - text = T.Trim(); - url = U.Trim(); - add_bookmark_dialog.ShowAll(); + text = T.Trim (); + url = U.Trim (); + add_bookmark_dialog.ShowAll (); } } @@ -288,33 +299,33 @@ namespace Monodoc { const string EDIT_BANNER = " Manage bookmarks"; const string ROOT_NAME = "Bookmarks"; - private static void Refresh() { - BookmarkManager.Save(); - BookmarkManager.BuildMenu(_Browser.bookmarksMenu); + private static void Refresh () { + BookmarkManager.Save (); + BookmarkManager.BuildMenu (_Browser.bookmarksMenu); } - private static void Save() { - using (FileStream file = new FileStream(bookmark_file,FileMode.Create)) { - serializer.Serialize(file,root_group); + private static void Save () { + using (FileStream file = new FileStream (bookmark_file,FileMode.Create)) { + serializer.Serialize (file,root_group); } #if DEBUG - Console.WriteLine("bookmarks saved ({0})",root_group.Members.Count); + Console.WriteLine ("bookmarks saved ({0})",root_group.Members.Count); #endif } - private static void Load() { - using (FileStream file = new FileStream(bookmark_file,FileMode.Open)) { - root_group = (BookmarkGroup)serializer.Deserialize(file); + private static void Load () { + using (FileStream file = new FileStream (bookmark_file,FileMode.Open)) { + root_group = (BookmarkGroup)serializer.Deserialize (file); } #if DEBUG - Console.WriteLine("bookmarks loaded ({0})",root_group.Members.Count); + Console.WriteLine ("bookmarks loaded ({0})",root_group.Members.Count); #endif } - public BookmarkManager(Browser browser){ + public BookmarkManager (Browser browser){ _Browser = browser; - Console.WriteLine("Bookmark Manager init"); + Console.WriteLine ("Bookmark Manager init"); //discoverig bookmark file bookmark_file = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData); @@ -322,200 +333,189 @@ namespace Monodoc { bookmark_file = System.IO.Path.Combine (bookmark_file, "bookmarks.xml"); // creating serializer - serializer = new XmlSerializer(typeof(BookmarkGroup)); + serializer = new XmlSerializer (typeof (BookmarkGroup)); // trying to load saved bookmarks try { - Load(); + Load (); }catch (Exception e) { // no bookmarks found, creating new root - root_group = new BookmarkGroup(ROOT_NAME); + root_group = new BookmarkGroup (ROOT_NAME); } current_bookmark_group = ROOT_NAME; - menu_to_id = new Hashtable(); - BuildMenu(_Browser.bookmarksMenu); + menu_to_id = new Hashtable (); + BuildMenu (_Browser.bookmarksMenu); } - public static void BuildMenu(MenuItem bookmark_menu) { + public static void BuildMenu (MenuItem bookmark_menu) { Menu aux = (Menu) bookmark_menu.Submenu; foreach (Widget w in aux.Children) { - aux.Remove(w); + aux.Remove (w); } - menu_to_id.Clear(); + menu_to_id.Clear (); //adding Default Items: - AccelGroup bk_grp = new AccelGroup(); - _Browser.window1.AddAccelGroup(bk_grp); + AccelGroup bk_grp = new AccelGroup (); + _Browser.window1.AddAccelGroup (bk_grp); ImageMenuItem item; - item = new ImageMenuItem(ADD_BANNER); - //item.Image = new Gtk.Image(Stock.Add,IconSize.Menu); - item.AddAccelerator("activate",bk_grp,new AccelKey(Gdk.Key.D,Gdk.ModifierType.ControlMask,AccelFlags.Visible)); + item = new ImageMenuItem (ADD_BANNER); + //item.Image = new Gtk.Image (Stock.Add,IconSize.Menu); + item.AddAccelerator ("activate",bk_grp,new AccelKey (Gdk.Key.D,Gdk.ModifierType.ControlMask,AccelFlags.Visible)); item.Activated += on_add_bookmark_activated; - aux.Append(item); + aux.Append (item); //edit - item = new ImageMenuItem(EDIT_BANNER); - item.AddAccelerator("activate",bk_grp,new AccelKey(Gdk.Key.M,Gdk.ModifierType.ControlMask,AccelFlags.Visible)); + item = new ImageMenuItem (EDIT_BANNER); + item.AddAccelerator ("activate",bk_grp,new AccelKey (Gdk.Key.M,Gdk.ModifierType.ControlMask,AccelFlags.Visible)); item.Activated += on_edit_bookmark_activated; - //item.Image = new Gtk.Image(Stock.Edit,Iconsize,Menu); - aux.Append(item); + //item.Image = new Gtk.Image (Stock.Edit,Iconsize,Menu); + aux.Append (item); // and finally the separtor - aux.Append(new SeparatorMenuItem()); + aux.Append (new SeparatorMenuItem ()); - BuildMenuHelper(aux,root_group); - aux.ShowAll(); + BuildMenuHelper (aux,root_group); + aux.ShowAll (); } - private static void BuildMenuHelper(Menu menu, BookmarkGroup group) { - foreach (object i in group.Members) - { - - if (i is BookmarkGroup) { - MenuItem item = new MenuItem( ((BookmarkGroup)i).Name); - item.Activated += on_bookmarkgroup_activated; - menu_to_id[item] = ((BookmarkGroup)i).ID; - menu.Append(item); - Menu m = new Menu(); - item.Submenu = m; - BuildMenuHelper(m,((BookmarkGroup)i)); - } + private static void BuildMenuHelper (Menu menu, BookmarkGroup group) + { + foreach (object i in group.Members) { + if (!(i is BookmarkGroup)) + continue; + + MenuItem item = new MenuItem (((BookmarkGroup)i).Name); + item.Activated += on_bookmarkgroup_activated; + menu_to_id[item] = ((BookmarkGroup)i).ID; + menu.Append (item); + Menu m = new Menu (); + item.Submenu = m; + BuildMenuHelper (m, ((BookmarkGroup)i)); } foreach (object i in group.Members) { if (i is Bookmark) { #if DEBUG - Console.WriteLine("appending bookmark: [" + ((Bookmark)i).Name + "]"); + Console.WriteLine ("appending bookmark: [" + ((Bookmark)i).Name + "]"); #endif - MenuItem item = new MenuItem( ((Bookmark)i).Name); + MenuItem item = new MenuItem (((Bookmark)i).Name); menu_to_id[item] = ((Bookmark)i).ID; item.Activated += on_bookmark_activated; - menu.Append(item); + menu.Append (item); menu_to_id[item] = ((Bookmark)i).ID; } } } // Event Handlers - static void on_add_bookmark_activated(object sender, EventArgs e){ - add_window = new AddBookmarkDialog(root_group); - add_window.Show(_Browser.CurrentTab.Title,_Browser.CurrentUrl); + static void on_add_bookmark_activated (object sender, EventArgs e){ + add_window = new AddBookmarkDialog (root_group); + add_window.Show (_Browser.CurrentTab.Title,_Browser.CurrentUrl); } - static void on_edit_bookmark_activated(object sender,EventArgs e) { - edit_window = new ManageBookmarkDialog(root_group); - edit_window.Show(); + static void on_edit_bookmark_activated (object sender,EventArgs e) { + edit_window = new ManageBookmarkDialog (root_group); + edit_window.Show (); } - static void on_bookmark_activated(object sender, EventArgs e) { - + static void on_bookmark_activated (object sender, EventArgs e) + { // finding the inner label BookmarkBase bk = null; - #if DEBUG - Console.WriteLine("looking for {0}/{1}",current_bookmark_group,label.Name); - #endif - GetBookmarkBase(root_group, menu_to_id[(MenuItem)sender] as string,ref bk); + GetBookmarkBase (root_group, menu_to_id[ (MenuItem)sender] as string,ref bk); if (bk != null) { if (bk is Bookmark) - _Browser.LoadUrl( ((Bookmark)bk).Url); - } - else { - Console.WriteLine("Bookmark error -> could not load bookmark"); + _Browser.LoadUrl (((Bookmark)bk).Url); + } else { + Console.WriteLine ("Bookmark error -> could not load bookmark"); } } - static void on_bookmarkgroup_activated(object sender, EventArgs e) { - // finding the inner label - if ( ((MenuItem)sender).Child is Gtk.Label) { + static void on_bookmarkgroup_activated (object sender, EventArgs e) + { + if (((MenuItem)sender).Child is Gtk.Label) { Gtk.Label label = (Gtk.Label) ((MenuItem)sender).Child; current_bookmark_group = label.Name; } } - public void EditBookMark() {} + public void EditBookMark () {} // static helper methods /// <summary> Recursively deletes a bookmark </summary> - public static void DeleteBookmarkBase(BookmarkGroup bookmarks, string ID) { + public static void DeleteBookmarkBase (BookmarkGroup bookmarks, string ID) { foreach (object i in bookmarks.Members) { - - if ( i is Bookmark) { - if ( ((Bookmark)i).ID == ID) { - bookmarks.Members.Remove(i); + if (i is Bookmark) { + if (((Bookmark)i).ID == ID) { + bookmarks.Members.Remove (i); return; } - }else if (i is BookmarkGroup) { - if ( ((BookmarkGroup)i).ID == ID) { - bookmarks.Members.Remove(i); + } else if (i is BookmarkGroup) { + if (((BookmarkGroup)i).ID == ID) { + bookmarks.Members.Remove (i); return; } - DeleteBookmarkBase( ((BookmarkGroup)i),ID); + DeleteBookmarkBase (((BookmarkGroup)i), ID); } - - } } /// <summary> Recursively finds a bookmarkbase </summary> - public static void GetBookmarkBase(BookmarkGroup bookmarks, string ID, ref BookmarkBase retval) { + public static void GetBookmarkBase (BookmarkGroup bookmarks, string ID, ref BookmarkBase retval) { foreach (object i in bookmarks.Members) { - - if ( ((BookmarkBase)i).ID == ID) { + if (((BookmarkBase)i).ID == ID) { retval = i as BookmarkBase; return; } - if ( i is BookmarkGroup) { - GetBookmarkBase((BookmarkGroup)i,ID,ref retval); - } - - + if (i is BookmarkGroup) + GetBookmarkBase ((BookmarkGroup)i,ID,ref retval); } } /// <summary> Recursively adds a bookmark </summary> - public static void AddBookmark(BookmarkGroup bookmarks, string parent_ID, string bookmark_text, string bookmark_url) { + public static void AddBookmark (BookmarkGroup bookmarks, string parent_ID, string bookmark_text, string bookmark_url) { if ( bookmarks.ID == parent_ID) { - bookmarks.Members.Add(new Bookmark(bookmark_text,bookmark_url) ); + bookmarks.Members.Add (new Bookmark (bookmark_text,bookmark_url) ); return; } foreach (object i in bookmarks.Members) { if (i is BookmarkGroup) { - AddBookmark( ((BookmarkGroup)i),parent_ID,bookmark_text,bookmark_url); + AddBookmark (((BookmarkGroup)i), parent_ID,bookmark_text, bookmark_url); } } } /// <summary> Recursively adds a bookmark </summary> - public static void AddBookmarkGroup(BookmarkGroup bookmarks, string parent_ID, string name) { - if ( bookmarks.ID == parent_ID) { - bookmarks.Members.Add(new BookmarkGroup(name) ); + public static void AddBookmarkGroup (BookmarkGroup bookmarks, string parent_ID, string name) + { + if (bookmarks.ID == parent_ID) { + bookmarks.Members.Add (new BookmarkGroup (name)); return; } foreach (object i in bookmarks.Members) { - if (i is BookmarkGroup) { - AddBookmarkGroup( ((BookmarkGroup)i),parent_ID,name); - - } - if (i is Bookmark ){ - if ( ((Bookmark)i).ID == parent_ID ) { - bookmarks.Members.Add(new BookmarkGroup(name)); + if (i is BookmarkGroup) + AddBookmarkGroup (((BookmarkGroup)i), parent_ID,name); + + if (i is Bookmark){ + if (((Bookmark)i).ID == parent_ID) { + bookmarks.Members.Add (new BookmarkGroup (name)); return; } } diff --git a/docbrowser/ChangeLog b/docbrowser/ChangeLog index ac76a060..1150f167 100644 --- a/docbrowser/ChangeLog +++ b/docbrowser/ChangeLog @@ -1,3 +1,8 @@ +2006-11-19 Miguel de Icaza <miguel@novell.com> + + * mondoc.in: Make this work with XulRunner, otherwise this crashes + with some crash inside AppendText inside Mozilla. + 2006-08-09 Mike Kestner <mkestner@novell.com> * browser.cs: fix a few event handler sigs. |