Author: spouliot
Date: 2007-06-28 22:16:18 -0400 (Thu, 28 Jun 2007)
New Revision: 81018
Modified:
trunk/cecil/monoxide/Monoxide/ChangeLog
trunk/cecil/monoxide/Monoxide/MainWindow.cs
Log:
2007-06-28 Sebastien Pouliot <[EMAIL PROTECTED]>
* MainWindow.cs: Memorize last folder used to load assemblies. Fix
right-click on the treeview (to always show the right popup).
Implement new refresh mechanism.
Modified: trunk/cecil/monoxide/Monoxide/ChangeLog
===================================================================
--- trunk/cecil/monoxide/Monoxide/ChangeLog 2007-06-29 02:15:43 UTC (rev
81017)
+++ trunk/cecil/monoxide/Monoxide/ChangeLog 2007-06-29 02:16:18 UTC (rev
81018)
@@ -1,3 +1,9 @@
+2007-06-28 Sebastien Pouliot <[EMAIL PROTECTED]>
+
+ * MainWindow.cs: Memorize last folder used to load assemblies. Fix
+ right-click on the treeview (to always show the right popup).
+ Implement new refresh mechanism.
+
2007-06-28 Sebastien Pouliot <[EMAIL PROTECTED]>
* MainWindow.cs: Set page/focus on the newly created plugin.
Modified: trunk/cecil/monoxide/Monoxide/MainWindow.cs
===================================================================
--- trunk/cecil/monoxide/Monoxide/MainWindow.cs 2007-06-29 02:15:43 UTC (rev
81017)
+++ trunk/cecil/monoxide/Monoxide/MainWindow.cs 2007-06-29 02:16:18 UTC (rev
81018)
@@ -39,15 +39,17 @@
using Mono.Addins;
using Mono.Addins.Gui;
using Mono.Cecil;
+using Monoxide.Framework;
using Monoxide.Framework.Addins;
namespace Monoxide {
public partial class MainWindow : Gtk.Window {
- private TreeStore m_store;
- private TreeIter m_cursor;
+ private TreeStore tree_store;
+ private TreeIter tree_cursor;
+ private string current_directory;
private List<AssemblyDefinition> assemblies;
private Menu popup_assemblies;
@@ -83,9 +85,9 @@
popup_types.ShowAll ();
popup_methods.ShowAll ();
- m_store = new TreeStore (typeof (string), typeof
(object));
+ tree_store = new TreeStore (typeof (string), typeof
(object));
- treeview.Model = m_store;
+ treeview.Model = tree_store;
treeview.EnableSearch = false;
treeview.AppendColumn ("Object", new CellRendererText
(), "text", 0);
treeview.Selection.Changed += OnSelectionChanged;
@@ -110,7 +112,25 @@
private void OnSelectionChanged (object o, EventArgs args)
{
- OnRefreshActivated (o, args);
+ TreeIter iter;
+ TreeModel model;
+ if (treeview.Selection.GetSelected (out model, out
iter)) {
+ object obj = model.GetValue (iter, 1);
+
+ AssemblyDefinition ad = (obj as
AssemblyDefinition);
+ if (ad != null) {
+ objectLabel.Text = ad.Name.FullName;
+ } else {
+ TypeDefinition td = (obj as
TypeDefinition);
+ if (td != null) {
+ objectLabel.Text = td.ToString
();
+ } else {
+ MethodDefinition md = (obj as
MethodDefinition);
+ if (md != null)
+ objectLabel.Text =
md.ToString ();
+ }
+ }
+ }
}
protected virtual void OnAddinManagerActivated (object sender,
System.EventArgs e)
@@ -141,25 +161,25 @@
private void PopulateStore (AssemblyDefinition assembly)
{
- m_cursor = m_store.AppendValues
(assembly.Name.FullName, assembly);
+ tree_cursor = tree_store.AppendValues
(assembly.Name.FullName, assembly);
foreach (ModuleDefinition module in assembly.Modules) {
foreach (TypeDefinition type in module.Types) {
- TreeIter titer = m_cursor;
+ TreeIter titer = tree_cursor;
- m_cursor = m_store.AppendValues
(m_cursor, type.ToString (), type);
+ tree_cursor = tree_store.AppendValues
(tree_cursor, type.ToString (), type);
- TreeIter miter = m_cursor;
+ TreeIter miter = tree_cursor;
foreach (MethodDefinition method in
type.Constructors) {
- m_store.AppendValues (miter,
GetMethodName (method), method);
+ tree_store.AppendValues (miter,
GetMethodName (method), method);
}
foreach (MethodDefinition method in
type.Methods) {
- m_store.AppendValues (miter,
GetMethodName (method), method);
+ tree_store.AppendValues (miter,
GetMethodName (method), method);
}
- m_cursor = titer;
+ tree_cursor = titer;
}
}
- m_store.SetSortColumnId (0, SortType.Ascending);
+ tree_store.SetSortColumnId (0, SortType.Ascending);
}
private string GetMethodName (MethodDefinition method)
@@ -185,7 +205,16 @@
{
// check for a right-click
if (args.Event.Button == 3) {
- object obj = GetSelectedObject ();
+ // note: at this stage GetSelectedObject is
"late" and return the previous item
+ object obj = null;
+ TreePath path;
+ if (treeview.GetPathAtPos ((int)args.Event.X,
(int)args.Event.Y, out path)) {
+ TreeIter iter;
+ if (treeview.Model.GetIter (out iter,
path)) {
+ obj = treeview.Model.GetValue
(iter, 1);
+ Console.WriteLine (obj);
+ }
+ }
if ((obj is AssemblyDefinition) &&
(popup_assemblies.Children.Length > 0))
popup_assemblies.Popup ();
@@ -203,6 +232,9 @@
using (FileChooserDialog fcd = new FileChooserDialog
("Open Assembly...", this, FileChooserAction.Open,
"Cancel", ResponseType.Cancel, "Open",
ResponseType.Accept)) {
+ if (current_directory != null)
+ fcd.SetCurrentFolder
(current_directory);
+
fcd.SelectMultiple = true;
bool ok = (fcd.Run () == (int)
ResponseType.Accept);
@@ -210,6 +242,8 @@
if (ok) {
foreach (string aname in fcd.Filenames)
LoadAssembly (aname);
+
+ current_directory = fcd.CurrentFolder;
}
}
}
@@ -223,28 +257,9 @@
protected virtual void OnRefreshActivated (object sender,
System.EventArgs e)
{
- if (sender == null)
- return;
-
- TreeIter iter;
- TreeModel model;
- if (treeview.Selection.GetSelected (out model, out
iter)) {
- object obj = model.GetValue (iter, 1);
-
- AssemblyDefinition ad = (obj as
AssemblyDefinition);
- if (ad != null) {
- objectLabel.Text = ad.Name.FullName;
- } else {
- TypeDefinition td = (obj as
TypeDefinition);
- if (td != null) {
- objectLabel.Text = td.ToString
();
- } else {
- MethodDefinition md = (obj as
MethodDefinition);
- if (md != null)
- objectLabel.Text =
md.ToString ();
- }
- }
- }
+ AddinScrolledWindow asw = (notebook.CurrentPageWidget
as AddinScrolledWindow);
+ if (asw != null)
+ asw.Refresh ();
}
// Help Menu
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches