5 // Joel Reed (joelwreed@gmail.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System
.Collections
.Generic
;
33 using Microsoft
.TeamFoundation
.Client
;
34 using Microsoft
.TeamFoundation
.VersionControl
.Common
;
35 using Microsoft
.TeamFoundation
.VersionControl
.Client
;
36 using Mono
.GetOptions
;
38 using Gtk
.TeamFoundation
;
40 [Command("explore", "Explore the repository visually.", "", "gui")]
41 class ExploreCommand
: Command
43 [Option("Version", "V", "version")]
44 public string OptionVersion
;
46 [Option("Limit the number of changesets shown (default=100)", "", "stopafter")]
47 public int OptionStopAfter
= 100;
49 private ExploreView exploreView
;
51 public ExploreCommand(Driver driver
, string[] args
): base(driver
, args
)
55 public override void Run()
59 Gtk
.Window frame
= new Gtk
.Window("OpenTF Explorer");
61 exploreView
= new ExploreView(Driver
, OptionStopAfter
);
62 exploreView
.ShowChangeset
+= MyShowChangesetEventHandler
;
63 exploreView
.ShowFile
+= MyShowFileEventHandler
;
65 frame
.Add(exploreView
);
66 frame
.DeleteEvent
+= new DeleteEventHandler(DeleteEvent
);
67 frame
.KeyReleaseEvent
+= MyKeyReleaseHandler
;
69 int x
, y
, width
, height
, depth
;
70 frame
.RootWindow
.GetGeometry (out x
, out y
, out width
, out height
, out depth
);
71 frame
.SetDefaultSize(Convert
.ToInt32(width
*.9), Convert
.ToInt32(height
*.9));
77 void MyShowChangesetEventHandler(object sender
, ShowChangesetEventArgs args
)
79 ShowChangesetDialog dialog
= new ShowChangesetDialog(args
.VersionControlServer
, args
.ChangesetId
);
81 int x
, y
, width
, height
, depth
;
82 Gtk
.Widget widget
= sender
as Gtk
.Widget
;
83 widget
.RootWindow
.GetGeometry (out x
, out y
, out width
, out height
, out depth
);
84 dialog
.SetDefaultSize(Convert
.ToInt32(width
*.9), Convert
.ToInt32(height
*.9));
91 void MyShowFileEventHandler(object sender
, ShowFileEventArgs args
)
93 ShowFileDialog dialog
= new ShowFileDialog(args
.VersionControlServer
, args
.ServerItem
);
95 int x
, y
, width
, height
, depth
;
96 Gtk
.Widget widget
= sender
as Gtk
.Widget
;
97 widget
.RootWindow
.GetGeometry(out x
, out y
, out width
, out height
, out depth
);
98 dialog
.SetDefaultSize(Convert
.ToInt32(width
*.9), Convert
.ToInt32(height
*.9));
105 static void DeleteEvent(object obj
, DeleteEventArgs args
)
110 void MyKeyReleaseHandler(object o
, KeyReleaseEventArgs args
)
112 if ((Gdk
.Key
.q
== args
.Event
.Key
) && ((args
.Event
.State
& Gdk
.ModifierType
.ControlMask
) != 0))