[anjuta/git-shell: 81/82] git: Implement the add files pane



commit 47569f46b1291e821ce43cd586ea93f3e85b3e65
Author: James Liggett <jrliggett cox net>
Date:   Wed Jun 23 16:50:00 2010 -0700

    git: Implement the add files pane
    
    The first real test of our new file list widget...

 plugins/git/Makefile.am          |    8 +-
 plugins/git/anjuta-git.ui        | 1664 ++++++++++++++++++++------------------
 plugins/git/git-add-files-pane.c |  166 ++++
 plugins/git/git-add-files-pane.h |   60 ++
 plugins/git/plugin.c             |   18 +
 5 files changed, 1127 insertions(+), 789 deletions(-)
---
diff --git a/plugins/git/Makefile.am b/plugins/git/Makefile.am
index e7f111a..768255e 100644
--- a/plugins/git/Makefile.am
+++ b/plugins/git/Makefile.am
@@ -20,7 +20,9 @@ git_plugin_DATA = $(plugin_in_files:.plugin.in=.plugin) \
 	git-pane.c        \
 	git-pane.h        \
 	git-merge-pane.c        \
-	git-merge-pane.h
+	git-merge-pane.h        \
+	git-add-files-pane.h        \
+	git-add-files-pane.c
 
 # NOTE :
 # The naming convention is very intentional
@@ -175,7 +177,9 @@ libanjuta_git_la_SOURCES = \
 	git-status-pane.h \
 	git-status-pane.c \
 	git-commit-pane.h \
-	git-commit-pane.c
+	git-commit-pane.c \
+	git-add-files-pane.c \
+	git-add-files-pane.h
 
 libanjuta_git_la_LDFLAGS = $(ANJUTA_PLUGIN_LDFLAGS)
 
diff --git a/plugins/git/anjuta-git.ui b/plugins/git/anjuta-git.ui
index 71bb6a6..864e3b7 100644
--- a/plugins/git/anjuta-git.ui
+++ b/plugins/git/anjuta-git.ui
@@ -1,582 +1,396 @@
 <?xml version="1.0"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
   <!-- interface-requires anjuta 0.0 -->
+  <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkListStore" id="log_branch_combo_model">
-    <columns>
-      <!-- column-name active-icon -->
-      <column type="gchararray"/>
-      <!-- column-name name -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkListStore" id="branches_list_model">
-    <columns>
-      <!-- column-name selected -->
-      <column type="gboolean"/>
-      <!-- column-name active -->
-      <column type="gboolean"/>
-      <!-- column-name remote -->
-      <column type="gboolean"/>
-      <!-- column-name name -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
-  <object class="GtkTreeStore" id="status_model">
-    <columns>
-      <!-- column-name selected -->
-      <column type="gboolean"/>
-      <!-- column-name status -->
-      <column type="gint"/>
-      <!-- column-name path -->
-      <column type="gchararray"/>
-      <!-- column-name type -->
-      <column type="gint"/>
-    </columns>
-  </object>
-  <object class="GtkVBox" id="log_pane">
+  <object class="GtkVBox" id="add_pane">
     <property name="visible">True</property>
     <property name="orientation">vertical</property>
     <child>
-      <object class="GtkFrame" id="frame10">
+      <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
-          <object class="GtkAlignment" id="alignment10">
+          <object class="GtkAlignment" id="alignment1">
             <property name="visible">True</property>
             <property name="left_padding">12</property>
             <child>
-              <object class="GtkVBox" id="vbox11">
+              <object class="AnjutaFileList" id="file_list">
                 <property name="visible">True</property>
                 <property name="orientation">vertical</property>
-                <child>
-                  <object class="GtkHBox" id="hbox1">
-                    <property name="visible">True</property>
-                    <property name="spacing">2</property>
-                    <child>
-                      <object class="GtkHBox" id="log_path_entry_hbox">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <child>
-                          <object class="GtkEntry" id="log_path_entry">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="invisible_char">&#x25CF;</property>
-                          </object>
-                          <packing>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="log_browse_button">
-                            <property name="label" translatable="yes">Browse&#x2026;</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkButton" id="log_view_button">
-                        <property name="label" translatable="yes">View Log</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">True</property>
-                        <property name="image">find_button_image</property>
-                      </object>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkCheckButton" id="log_whole_project_check">
-                    <property name="label" translatable="yes">Whole project</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
+                <property name="spacing">2</property>
               </object>
             </child>
           </object>
         </child>
         <child type="label">
-          <object class="GtkLabel" id="label19">
+          <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
-            <property name="label" translatable="yes">View the Log for File/Folder:</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
+            <property name="label" translatable="yes">&lt;b&gt;Add Files:&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
           </object>
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
         <property name="position">0</property>
       </packing>
     </child>
     <child>
-      <object class="GtkFrame" id="frame17">
+      <object class="GtkFrame" id="frame2">
         <property name="visible">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
-          <object class="GtkAlignment" id="alignment17">
+          <object class="GtkAlignment" id="alignment2">
             <property name="visible">True</property>
             <property name="left_padding">12</property>
             <child>
-              <object class="GtkComboBox" id="log_branch_combo">
+              <object class="GtkCheckButton" id="force_check">
+                <property name="label" translatable="yes">Force</property>
                 <property name="visible">True</property>
-                <property name="model">log_branch_combo_model</property>
-                <child>
-                  <object class="GtkCellRendererPixbuf" id="log_branch_combo_active_icon"/>
-                  <attributes>
-                    <attribute name="stock-id">0</attribute>
-                  </attributes>
-                </child>
-                <child>
-                  <object class="GtkCellRendererText" id="log_branch_combo_name"/>
-                  <attributes>
-                    <attribute name="text">1</attribute>
-                  </attributes>
-                </child>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="draw_indicator">True</property>
               </object>
             </child>
           </object>
         </child>
         <child type="label">
-          <object class="GtkLabel" id="label21">
+          <object class="GtkLabel" id="label2">
             <property name="visible">True</property>
-            <property name="label" translatable="yes">Branch:</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
+            <property name="label" translatable="yes">&lt;b&gt;Options:&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
           </object>
         </child>
       </object>
       <packing>
         <property name="expand">False</property>
+        <property name="fill">False</property>
         <property name="position">1</property>
       </packing>
     </child>
     <child>
-      <object class="GtkExpander" id="expander1">
+      <object class="GtkHButtonBox" id="hbuttonbox1">
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
+        <property name="spacing">5</property>
+        <property name="layout_style">end</property>
         <child>
-          <object class="GtkVBox" id="vbox16">
+          <object class="GtkButton" id="cancel_button">
+            <property name="label">gtk-cancel</property>
             <property name="visible">True</property>
-            <property name="orientation">vertical</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_stock">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="ok_button">
+            <property name="label">gtk-ok</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_stock">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkVBox" id="commit_pane">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkNotebook" id="notebook1">
+              <object class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkTable" id="table2">
+                  <object class="GtkVBox" id="vbox5">
                     <property name="visible">True</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="row_spacing">2</property>
                     <child>
-                      <object class="GtkLabel" id="label33">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Author:</property>
-                      </object>
-                      <packing>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
-                        <property name="x_padding">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label34">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Grep:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options">GTK_SHRINK</property>
-                        <property name="x_padding">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkEntry" id="log_filter_author_entry">
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkTextView" id="log_view">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                        </child>
                       </object>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="y_options"></property>
+                        <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="log_filter_grep_entry">
+                      <object class="GtkLabel" id="column_label">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="xalign">1</property>
+                        <property name="label" translatable="yes">Column 1</property>
                       </object>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="y_options"></property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                   </object>
                 </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="label30">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes" comments="&quot;Author&quot; means search for commits whose author matches the given grep expression. &quot;Grep&quot; searches through commit logs and patches.">Author/Grep</property>
-                  </object>
-                  <packing>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;b&gt;Log Message:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkTable" id="table4">
+                  <object class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="column_spacing">5</property>
                     <child>
-                      <object class="GtkCalendar" id="log_filter_to_calendar">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="year">2009</property>
-                        <property name="month">10</property>
-                        <property name="day">21</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCalendar" id="log_filter_from_calendar">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="year">2009</property>
-                        <property name="month">10</property>
-                        <property name="day">21</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="log_filter_from_check">
-                        <property name="label" translatable="yes">From</property>
+                      <object class="GtkCheckButton" id="amend_check">
+                        <property name="label" translatable="yes">Amernd the previous commit</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkCheckButton" id="log_filter_to_check">
-                        <property name="label" translatable="yes">To</property>
+                      <object class="GtkCheckButton" id="failed_merge_check">
+                        <property name="label" translatable="yes">This commit concludes a failed merged (use -i)</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="label31">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Date</property>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkTable" id="table3">
-                    <property name="visible">True</property>
-                    <property name="n_rows">2</property>
-                    <property name="n_columns">2</property>
-                    <property name="row_spacing">2</property>
-                    <child>
-                      <object class="GtkLabel" id="label38">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">From:</property>
-                      </object>
-                      <packing>
-                        <property name="x_options">GTK_SHRINK</property>
-                        <property name="y_options">GTK_SHRINK</property>
-                        <property name="x_padding">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label37">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">To:</property>
-                      </object>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options"></property>
-                        <property name="y_options">GTK_SHRINK</property>
-                        <property name="x_padding">2</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="log_filter_from_entry">
+                      <object class="GtkCheckButton" id="use_custom_author_info_check">
+                        <property name="label" translatable="yes">Use custom author information:</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="receives_default">False</property>
+                        <property name="draw_indicator">True</property>
                       </object>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="y_options"></property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="log_filter_to_entry">
+                      <object class="GtkAlignment" id="author_info_alignment">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="sensitive">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <child>
+                              <object class="GtkLabel" id="label5">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Name:</property>
+                              </object>
+                              <packing>
+                                <property name="x_options"></property>
+                                <property name="x_padding">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">E-mail:</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options"></property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="name_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">&#x25CF;</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkEntry" id="email_entry">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">&#x25CF;</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="y_padding">2</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
                       </object>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="y_options"></property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                   </object>
-                  <packing>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-                <child type="tab">
-                  <object class="GtkLabel" id="label32">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Tag/Commit</property>
-                  </object>
-                  <packing>
-                    <property name="position">2</property>
-                    <property name="tab_fill">False</property>
-                  </packing>
                 </child>
               </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
             </child>
-            <child>
-              <object class="GtkHButtonBox" id="hbuttonbox5">
+            <child type="label">
+              <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
-                <property name="layout_style">end</property>
-                <child>
-                  <object class="GtkButton" id="log_filter_clear_button">
-                    <property name="label">gtk-clear</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_stock">True</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
+                <property name="label" translatable="yes">&lt;b&gt;Options:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
               </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
             </child>
           </object>
-        </child>
-        <child type="label">
-          <object class="GtkLabel" id="label29">
-            <property name="visible">True</property>
-            <property name="label" translatable="yes">Filters</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
-          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">2</property>
+        <property name="position">0</property>
       </packing>
     </child>
     <child>
-      <object class="GtkVBox" id="vbox15">
+      <object class="GtkHButtonBox" id="hbuttonbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <property name="homogeneous">True</property>
+        <property name="spacing">5</property>
+        <property name="layout_style">end</property>
         <child>
-          <object class="GtkVPaned" id="vpaned1">
+          <object class="GtkButton" id="cancel_button">
+            <property name="label">gtk-cancel</property>
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="orientation">vertical</property>
-            <child>
-              <object class="GtkFrame" id="frame18">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment18">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <object class="GtkTreeView" id="log_changes_view">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label22">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Changes:</property>
-                    <attributes>
-                      <attribute name="weight" value="bold"/>
-                    </attributes>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkFrame" id="frame20">
-                <property name="visible">True</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <object class="GtkAlignment" id="alignment20">
-                    <property name="visible">True</property>
-                    <property name="left_padding">12</property>
-                    <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow6">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <object class="GtkTextView" id="log_text_view">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="editable">False</property>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label23">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">Log Message:</property>
-                    <attributes>
-                      <attribute name="weight" value="bold"/>
-                    </attributes>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
+            <property name="receives_default">True</property>
+            <property name="use_stock">True</property>
           </object>
           <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
             <property name="position">0</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkButton" id="ok_button">
+            <property name="label">gtk-ok</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_stock">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
       </object>
       <packing>
-        <property name="position">3</property>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">1</property>
       </packing>
     </child>
   </object>
-  <object class="GtkImage" id="find_button_image">
-    <property name="visible">True</property>
-    <property name="stock">gtk-find</property>
+  <object class="GtkTreeStore" id="status_model">
+    <columns>
+      <!-- column-name selected -->
+      <column type="gboolean"/>
+      <!-- column-name status -->
+      <column type="gint"/>
+      <!-- column-name path -->
+      <column type="gchararray"/>
+      <!-- column-name type -->
+      <column type="gint"/>
+    </columns>
   </object>
-  <object class="GtkVBox" id="branches_pane">
+  <object class="GtkListStore" id="branches_list_model">
+    <columns>
+      <!-- column-name selected -->
+      <column type="gboolean"/>
+      <!-- column-name active -->
+      <column type="gboolean"/>
+      <!-- column-name remote -->
+      <column type="gboolean"/>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkListStore" id="log_branch_combo_model">
+    <columns>
+      <!-- column-name active-icon -->
+      <column type="gchararray"/>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkVBox" id="status_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -594,33 +408,27 @@
                 <property name="vscrollbar_policy">automatic</property>
                 <property name="shadow_type">in</property>
                 <child>
-                  <object class="GtkTreeView" id="branches_view">
+                  <object class="GtkTreeView" id="status_view">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="model">branches_list_model</property>
+                    <property name="model">status_model</property>
                     <property name="headers_visible">False</property>
+                    <property name="headers_clickable">False</property>
+                    <property name="search_column">0</property>
                     <child>
-                      <object class="GtkTreeViewColumn" id="branch_selected_column">
+                      <object class="GtkTreeViewColumn" id="status_column">
                         <property name="title">column</property>
                         <child>
-                          <object class="GtkCellRendererToggle" id="branch_selected_renderer"/>
-                          <attributes>
-                            <attribute name="active">0</attribute>
-                          </attributes>
+                          <object class="GtkCellRendererToggle" id="selected_renderer"/>
                         </child>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkTreeViewColumn" id="branch_name_column">
-                        <property name="title">column</property>
                         <child>
-                          <object class="GtkCellRendererPixbuf" id="branch_active_icon_renderer"/>
+                          <object class="GtkCellRendererPixbuf" id="status_icon_renderer"/>
                         </child>
                         <child>
-                          <object class="GtkCellRendererText" id="branch_name_renderer"/>
-                          <attributes>
-                            <attribute name="text">3</attribute>
-                          </attributes>
+                          <object class="GtkCellRendererText" id="status_name_renderer"/>
+                        </child>
+                        <child>
+                          <object class="GtkCellRendererText" id="path_renderer"/>
                         </child>
                       </object>
                     </child>
@@ -633,7 +441,7 @@
         <child type="label">
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
-            <property name="label" translatable="yes">&lt;b&gt;Branches&lt;/b&gt;</property>
+            <property name="label" translatable="yes">&lt;b&gt;Repository Status:&lt;/b&gt;</property>
             <property name="use_markup">True</property>
           </object>
         </child>
@@ -642,42 +450,166 @@
         <property name="position">0</property>
       </packing>
     </child>
+    <child>
+      <object class="GtkHButtonBox" id="hbuttonbox1">
+        <property name="visible">True</property>
+        <property name="layout_style">end</property>
+        <child>
+          <object class="GtkButton" id="refresh_button">
+            <property name="label">gtk-refresh</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_stock">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
   </object>
-  <object class="GtkVBox" id="delete_branches_pane">
+  <object class="GtkVBox" id="merge_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
-      <object class="GtkFrame" id="frame14">
+      <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="label_xalign">0</property>
-        <property name="shadow_type">none</property>
         <child>
-          <object class="GtkAlignment" id="alignment14">
+          <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
-            <property name="left_padding">12</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkCheckButton" id="require_merged_check">
-                <property name="label" translatable="yes">Branches must be fully merged</property>
+              <object class="GtkAlignment" id="alignment1">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="draw_indicator">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="AnjutaDropEntry" id="revision_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">&#x25CF;</property>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;b&gt;Revision to merge with:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
               </object>
             </child>
           </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
         </child>
-        <child type="label">
-          <object class="GtkLabel" id="label15">
+        <child>
+          <object class="GtkFrame" id="frame2">
             <property name="visible">True</property>
-            <property name="label" translatable="yes">Options:</property>
-            <attributes>
-              <attribute name="weight" value="bold"/>
-            </attributes>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkCheckButton" id="do_not_commit_check">
+                        <property name="label" translatable="yes">Do not commit</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="squash_check">
+                        <property name="label" translatable="yes">Squash</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="use_custom_log_check">
+                        <property name="label" translatable="yes">Use a custom log message:</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkTextView" id="log_view">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="column_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">1</property>
+                        <property name="label" translatable="yes">Column 0</property>
+                      </object>
+                      <packing>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;b&gt;Options:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
           </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
         </child>
       </object>
       <packing>
-        <property name="expand">False</property>
         <property name="position">0</property>
       </packing>
     </child>
@@ -723,11 +655,9 @@
   </object>
   <object class="GtkVBox" id="create_branch_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame4">
             <property name="visible">True</property>
@@ -771,7 +701,6 @@
                 <child>
                   <object class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkRadioButton" id="repository_head_radio">
                         <property name="label" translatable="yes">Repository head</property>
@@ -914,143 +843,40 @@
       </packing>
     </child>
   </object>
-  <object class="GtkVBox" id="merge_pane">
+  <object class="GtkVBox" id="delete_branches_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
-      <object class="GtkVBox" id="vbox1">
+      <object class="GtkFrame" id="frame14">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
         <child>
-          <object class="GtkFrame" id="frame1">
+          <object class="GtkAlignment" id="alignment14">
             <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="AnjutaDropEntry" id="revision_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label1">
+              <object class="GtkCheckButton" id="require_merged_check">
+                <property name="label" translatable="yes">Branches must be fully merged</property>
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Revision to merge with:&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="draw_indicator">True</property>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
         </child>
-        <child>
-          <object class="GtkFrame" id="frame2">
+        <child type="label">
+          <object class="GtkLabel" id="label15">
             <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
-            <child>
-              <object class="GtkAlignment" id="alignment2">
-                <property name="visible">True</property>
-                <property name="left_padding">12</property>
-                <child>
-                  <object class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
-                    <child>
-                      <object class="GtkCheckButton" id="do_not_commit_check">
-                        <property name="label" translatable="yes">Do not commit</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="squash_check">
-                        <property name="label" translatable="yes">Squash</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkCheckButton" id="use_custom_log_check">
-                        <property name="label" translatable="yes">Use a custom log message:</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="draw_indicator">True</property>
-                      </object>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
-                        <child>
-                          <object class="GtkTextView" id="log_view">
-                            <property name="visible">True</property>
-                            <property name="sensitive">False</property>
-                            <property name="can_focus">True</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="position">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="column_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">Column 0</property>
-                      </object>
-                      <packing>
-                        <property name="position">4</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child type="label">
-              <object class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Options:&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </object>
-            </child>
+            <property name="label" translatable="yes">Options:</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
           </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
         </child>
       </object>
       <packing>
+        <property name="expand">False</property>
         <property name="position">0</property>
       </packing>
     </child>
@@ -1094,9 +920,8 @@
       </packing>
     </child>
   </object>
-  <object class="GtkVBox" id="status_pane">
+  <object class="GtkVBox" id="branches_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -1114,27 +939,33 @@
                 <property name="vscrollbar_policy">automatic</property>
                 <property name="shadow_type">in</property>
                 <child>
-                  <object class="GtkTreeView" id="status_view">
+                  <object class="GtkTreeView" id="branches_view">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="model">status_model</property>
+                    <property name="model">branches_list_model</property>
                     <property name="headers_visible">False</property>
-                    <property name="headers_clickable">False</property>
-                    <property name="search_column">0</property>
                     <child>
-                      <object class="GtkTreeViewColumn" id="status_column">
+                      <object class="GtkTreeViewColumn" id="branch_selected_column">
                         <property name="title">column</property>
                         <child>
-                          <object class="GtkCellRendererToggle" id="selected_renderer"/>
-                        </child>
-                        <child>
-                          <object class="GtkCellRendererPixbuf" id="status_icon_renderer"/>
+                          <object class="GtkCellRendererToggle" id="branch_selected_renderer"/>
+                          <attributes>
+                            <attribute name="active">0</attribute>
+                          </attributes>
                         </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" id="branch_name_column">
+                        <property name="title">column</property>
                         <child>
-                          <object class="GtkCellRendererText" id="status_name_renderer"/>
+                          <object class="GtkCellRendererPixbuf" id="branch_active_icon_renderer"/>
                         </child>
                         <child>
-                          <object class="GtkCellRendererText" id="path_renderer"/>
+                          <object class="GtkCellRendererText" id="branch_name_renderer"/>
+                          <attributes>
+                            <attribute name="text">3</attribute>
+                          </attributes>
                         </child>
                       </object>
                     </child>
@@ -1147,7 +978,7 @@
         <child type="label">
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
-            <property name="label" translatable="yes">&lt;b&gt;Repository Status:&lt;/b&gt;</property>
+            <property name="label" translatable="yes">&lt;b&gt;Branches&lt;/b&gt;</property>
             <property name="use_markup">True</property>
           </object>
         </child>
@@ -1156,64 +987,55 @@
         <property name="position">0</property>
       </packing>
     </child>
-    <child>
-      <object class="GtkHButtonBox" id="hbuttonbox1">
-        <property name="visible">True</property>
-        <property name="layout_style">end</property>
-        <child>
-          <object class="GtkButton" id="refresh_button">
-            <property name="label">gtk-refresh</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_stock">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-      <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">1</property>
-      </packing>
-    </child>
   </object>
-  <object class="GtkVBox" id="commit_pane">
+  <object class="GtkImage" id="find_button_image">
+    <property name="visible">True</property>
+    <property name="stock">gtk-find</property>
+  </object>
+  <object class="GtkVBox" id="log_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
-      <object class="GtkVBox" id="vbox1">
+      <object class="GtkFrame" id="frame10">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
         <child>
-          <object class="GtkFrame" id="frame1">
+          <object class="GtkAlignment" id="alignment10">
             <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="left_padding">12</property>
             <child>
-              <object class="GtkAlignment" id="alignment1">
+              <object class="GtkVBox" id="vbox11">
                 <property name="visible">True</property>
-                <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkVBox" id="vbox5">
+                  <object class="GtkHBox" id="hbox1">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
+                    <property name="spacing">2</property>
                     <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                      <object class="GtkHBox" id="log_path_entry_hbox">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">in</property>
+                        <property name="sensitive">False</property>
                         <child>
-                          <object class="GtkTextView" id="log_view">
+                          <object class="GtkEntry" id="log_path_entry">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
                           </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="log_browse_button">
+                            <property name="label" translatable="yes">Browse&#x2026;</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
@@ -1221,10 +1043,12 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="column_label">
+                      <object class="GtkButton" id="log_view_button">
+                        <property name="label" translatable="yes">View Log</property>
                         <property name="visible">True</property>
-                        <property name="xalign">1</property>
-                        <property name="label" translatable="yes">Column 1</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="image">find_button_image</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -1233,202 +1057,468 @@
                       </packing>
                     </child>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="log_whole_project_check">
+                    <property name="label" translatable="yes">Whole project</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
                 </child>
               </object>
             </child>
-            <child type="label">
-              <object class="GtkLabel" id="label1">
+          </object>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="label19">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">View the Log for File/Folder:</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkFrame" id="frame17">
+        <property name="visible">True</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">none</property>
+        <child>
+          <object class="GtkAlignment" id="alignment17">
+            <property name="visible">True</property>
+            <property name="left_padding">12</property>
+            <child>
+              <object class="GtkComboBox" id="log_branch_combo">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Log Message:&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
+                <property name="model">log_branch_combo_model</property>
+                <child>
+                  <object class="GtkCellRendererPixbuf" id="log_branch_combo_active_icon"/>
+                  <attributes>
+                    <attribute name="stock-id">0</attribute>
+                  </attributes>
+                </child>
+                <child>
+                  <object class="GtkCellRendererText" id="log_branch_combo_name"/>
+                  <attributes>
+                    <attribute name="text">1</attribute>
+                  </attributes>
+                </child>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="position">0</property>
-          </packing>
         </child>
+        <child type="label">
+          <object class="GtkLabel" id="label21">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Branch:</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkExpander" id="expander1">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
         <child>
-          <object class="GtkFrame" id="frame2">
+          <object class="GtkVBox" id="vbox16">
             <property name="visible">True</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
             <child>
-              <object class="GtkAlignment" id="alignment2">
+              <object class="GtkNotebook" id="notebook1">
                 <property name="visible">True</property>
-                <property name="left_padding">12</property>
+                <property name="can_focus">True</property>
                 <child>
-                  <object class="GtkVBox" id="vbox3">
+                  <object class="GtkTable" id="table2">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="row_spacing">2</property>
                     <child>
-                      <object class="GtkCheckButton" id="amend_check">
-                        <property name="label" translatable="yes">Amernd the previous commit</property>
+                      <object class="GtkLabel" id="label33">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Author:</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
+                        <property name="x_padding">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label34">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Grep:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options">GTK_SHRINK</property>
+                        <property name="x_padding">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="log_filter_author_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="y_options"></property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkCheckButton" id="failed_merge_check">
-                        <property name="label" translatable="yes">This commit concludes a failed merged (use -i)</property>
+                      <object class="GtkEntry" id="log_filter_grep_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+                <child type="tab">
+                  <object class="GtkLabel" id="label30">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes" comments="&quot;Author&quot; means search for commits whose author matches the given grep expression. &quot;Grep&quot; searches through commit logs and patches.">Author/Grep</property>
+                  </object>
+                  <packing>
+                    <property name="tab_fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table4">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">5</property>
+                    <child>
+                      <object class="GtkCalendar" id="log_filter_to_calendar">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="year">2009</property>
+                        <property name="month">10</property>
+                        <property name="day">21</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCalendar" id="log_filter_from_calendar">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="year">2009</property>
+                        <property name="month">10</property>
+                        <property name="day">21</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkCheckButton" id="log_filter_from_check">
+                        <property name="label" translatable="yes">From</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">1</property>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkCheckButton" id="use_custom_author_info_check">
-                        <property name="label" translatable="yes">Use custom author information:</property>
+                      <object class="GtkCheckButton" id="log_filter_to_check">
+                        <property name="label" translatable="yes">To</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
                         <property name="draw_indicator">True</property>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
                       </packing>
                     </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child type="tab">
+                  <object class="GtkLabel" id="label31">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Date</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                    <property name="tab_fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table3">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="row_spacing">2</property>
                     <child>
-                      <object class="GtkAlignment" id="author_info_alignment">
+                      <object class="GtkLabel" id="label38">
                         <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkTable" id="table1">
-                            <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">2</property>
-                            <child>
-                              <object class="GtkLabel" id="label5">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Name:</property>
-                              </object>
-                              <packing>
-                                <property name="x_options"></property>
-                                <property name="x_padding">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label6">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">E-mail:</property>
-                              </object>
-                              <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options"></property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="name_entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">&#x25CF;</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="email_entry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="invisible_char">&#x25CF;</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="y_padding">2</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
+                        <property name="label" translatable="yes">From:</property>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">3</property>
+                        <property name="x_options">GTK_SHRINK</property>
+                        <property name="y_options">GTK_SHRINK</property>
+                        <property name="x_padding">2</property>
                       </packing>
                     </child>
+                    <child>
+                      <object class="GtkLabel" id="label37">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">To:</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options"></property>
+                        <property name="y_options">GTK_SHRINK</property>
+                        <property name="x_padding">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="log_filter_from_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="log_filter_to_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child type="tab">
+                  <object class="GtkLabel" id="label32">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Tag/Commit</property>
                   </object>
+                  <packing>
+                    <property name="position">2</property>
+                    <property name="tab_fill">False</property>
+                  </packing>
                 </child>
               </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
             </child>
-            <child type="label">
-              <object class="GtkLabel" id="label2">
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox5">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Options:&lt;/b&gt;</property>
-                <property name="use_markup">True</property>
+                <property name="layout_style">end</property>
+                <child>
+                  <object class="GtkButton" id="log_filter_clear_button">
+                    <property name="label">gtk-clear</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
+        </child>
+        <child type="label">
+          <object class="GtkLabel" id="label29">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Filters</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
         </child>
       </object>
       <packing>
-        <property name="position">0</property>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">2</property>
       </packing>
     </child>
     <child>
-      <object class="GtkHButtonBox" id="hbuttonbox1">
+      <object class="GtkVBox" id="vbox15">
         <property name="visible">True</property>
-        <property name="spacing">5</property>
-        <property name="layout_style">end</property>
+        <property name="homogeneous">True</property>
         <child>
-          <object class="GtkButton" id="cancel_button">
-            <property name="label">gtk-cancel</property>
+          <object class="GtkVPaned" id="vpaned1">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_stock">True</property>
+            <child>
+              <object class="GtkFrame" id="frame18">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment18">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkTreeView" id="log_changes_view">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label22">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Changes:</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frame20">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment20">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkTextView" id="log_text_view">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="editable">False</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label23">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Log Message:</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
           </object>
           <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
             <property name="position">0</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkButton" id="ok_button">
-            <property name="label">gtk-ok</property>
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="use_stock">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
       </object>
       <packing>
-        <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="position">1</property>
+        <property name="position">3</property>
       </packing>
     </child>
   </object>
diff --git a/plugins/git/git-add-files-pane.c b/plugins/git/git-add-files-pane.c
new file mode 100644
index 0000000..9f13516
--- /dev/null
+++ b/plugins/git/git-add-files-pane.c
@@ -0,0 +1,166 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) James Liggett 2010 <jrliggett cox net>
+ * 
+ * anjuta is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * anjuta is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "git-add-files-pane.h"
+
+struct _GitAddFilesPanePriv
+{
+	GtkBuilder *builder;
+};
+
+G_DEFINE_TYPE (GitAddFilesPane, git_add_files_pane, GIT_TYPE_PANE);
+
+static void
+on_ok_button_clicked (GtkButton *button, GitAddFilesPane *self)
+{
+	Git *plugin;
+	AnjutaFileList *file_list;
+	GtkToggleButton *force_check;
+	GList *paths;
+	GitAddCommand *add_command;
+
+	plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self)));
+	file_list = ANJUTA_FILE_LIST (gtk_builder_get_object (self->priv->builder,
+	                                                      "file_list"));
+	force_check = GTK_TOGGLE_BUTTON (gtk_builder_get_object (self->priv->builder,
+	                                                         "force_check"));
+	paths = anjuta_file_list_get_paths (file_list);
+	add_command = git_add_command_new_list (plugin->project_root_directory,
+	                                        paths,
+	                                        gtk_toggle_button_get_active (force_check));
+
+	git_command_free_string_list (paths);
+
+	g_signal_connect (G_OBJECT (add_command), "command-finished",
+	                  G_CALLBACK (g_object_unref),
+	                  NULL);
+
+	anjuta_command_start (ANJUTA_COMMAND (add_command));
+
+	anjuta_dock_remove_pane (ANJUTA_DOCK (plugin->dock), 
+	                         ANJUTA_DOCK_PANE (self));
+}
+
+static void
+on_cancel_button_clicked (GtkButton *button, GitAddFilesPane *self)
+{
+	Git *plugin;
+
+	plugin = ANJUTA_PLUGIN_GIT (anjuta_dock_pane_get_plugin (ANJUTA_DOCK_PANE (self)));
+
+	anjuta_dock_remove_pane (ANJUTA_DOCK (plugin->dock), 
+	                         ANJUTA_DOCK_PANE (self));
+}
+
+static void
+git_add_files_pane_init (GitAddFilesPane *self)
+{
+	gchar *objects[] = {"add_pane",
+						NULL};
+	GError *error = NULL;
+	GtkWidget *ok_button;
+	GtkWidget *cancel_button;
+
+	self->priv = g_new0 (GitAddFilesPanePriv, 1);
+	self->priv->builder = gtk_builder_new ();
+
+	if (!gtk_builder_add_objects_from_file (self->priv->builder, BUILDER_FILE, 
+	                                        objects, 
+	                                        &error))
+	{
+		g_warning ("Couldn't load builder file: %s", error->message);
+		g_error_free (error);
+	}
+
+	ok_button = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+	                                                "ok_button"));
+	cancel_button = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+	                                                    "cancel_button"));
+
+	g_signal_connect (G_OBJECT (ok_button), "clicked",
+	                  G_CALLBACK (on_ok_button_clicked),
+	                  self);
+
+	g_signal_connect (G_OBJECT (cancel_button), "clicked",
+	                  G_CALLBACK (on_cancel_button_clicked),
+	                  self);
+}
+
+static void
+git_add_files_pane_finalize (GObject *object)
+{
+	GitAddFilesPane *self;
+
+	self = GIT_ADD_FILES_PANE (object);
+
+	g_object_unref (self->priv->builder);
+	g_free (self->priv);
+
+	G_OBJECT_CLASS (git_add_files_pane_parent_class)->finalize (object);
+}
+
+static GtkWidget *
+git_add_files_pane_get_widget (AnjutaDockPane *pane)
+{
+	GitAddFilesPane *self;
+
+	self = GIT_ADD_FILES_PANE (pane);
+
+	return GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+	                                           "add_pane"));
+}
+
+static void
+git_add_files_pane_class_init (GitAddFilesPaneClass *klass)
+{
+	GObjectClass* object_class = G_OBJECT_CLASS (klass);
+	AnjutaDockPaneClass* pane_class = ANJUTA_DOCK_PANE_CLASS (klass);
+
+	object_class->finalize = git_add_files_pane_finalize;
+	pane_class->get_widget = git_add_files_pane_get_widget;
+	pane_class->refresh = NULL;
+}
+
+AnjutaDockPane *
+git_add_files_pane_new (Git *plugin)
+{
+	GitAddFilesPane *self;
+	AnjutaFileList *file_list;
+
+	self = g_object_new (GIT_TYPE_ADD_FILES_PANE, "plugin", plugin, NULL);
+	file_list = ANJUTA_FILE_LIST (gtk_builder_get_object (self->priv->builder,
+	                                                      "file_list"));
+
+	anjuta_file_list_set_relative_path (file_list, 
+	                                    plugin->project_root_directory);
+
+	return ANJUTA_DOCK_PANE (self);
+}
+
+void
+on_add_button_clicked (GtkAction *action, Git* plugin)
+{
+	AnjutaDockPane *pane;
+
+	pane = git_add_files_pane_new (plugin);
+
+	anjuta_dock_add_pane (ANJUTA_DOCK (plugin->dock), "AddFiles", 
+	                      _("Add Files"), NULL, pane, GDL_DOCK_BOTTOM,
+	                      NULL, 0, NULL);
+}
diff --git a/plugins/git/git-add-files-pane.h b/plugins/git/git-add-files-pane.h
new file mode 100644
index 0000000..50cf428
--- /dev/null
+++ b/plugins/git/git-add-files-pane.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) James Liggett 2010 <jrliggett cox net>
+ * 
+ * anjuta is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * anjuta is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _GIT_ADD_FILES_PANE_H_
+#define _GIT_ADD_FILES_PANE_H_
+
+#include <glib-object.h>
+#include <libanjuta/anjuta-file-list.h>
+#include "git-pane.h"
+#include "git-add-command.h"
+
+G_BEGIN_DECLS
+
+#define GIT_TYPE_ADD_FILES_PANE             (git_add_files_pane_get_type ())
+#define GIT_ADD_FILES_PANE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIT_TYPE_ADD_FILES_PANE, GitAddFilesPane))
+#define GIT_ADD_FILES_PANE_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GIT_TYPE_ADD_FILES_PANE, GitAddFilesPaneClass))
+#define GIT_IS_ADD_FILES_PANE(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIT_TYPE_ADD_FILES_PANE))
+#define GIT_IS_ADD_FILES_PANE_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GIT_TYPE_ADD_FILES_PANE))
+#define GIT_ADD_FILES_PANE_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GIT_TYPE_ADD_FILES_PANE, GitAddFilesPaneClass))
+
+typedef struct _GitAddFilesPaneClass GitAddFilesPaneClass;
+typedef struct _GitAddFilesPane GitAddFilesPane;
+typedef struct _GitAddFilesPanePriv GitAddFilesPanePriv;
+
+struct _GitAddFilesPaneClass
+{
+	GitPaneClass parent_class;
+};
+
+struct _GitAddFilesPane
+{
+	GitPane parent_instance;
+
+	GitAddFilesPanePriv *priv;
+};
+
+GType git_add_files_pane_get_type (void) G_GNUC_CONST;
+AnjutaDockPane * git_add_files_pane_new (Git *plugin);
+
+void on_add_button_clicked (GtkAction *action, Git *plugin);
+
+G_END_DECLS
+
+#endif /* _GIT_ADD_FILES_PANE_H_ */
diff --git a/plugins/git/plugin.c b/plugins/git/plugin.c
index 71d96d3..4bbb6d7 100644
--- a/plugins/git/plugin.c
+++ b/plugins/git/plugin.c
@@ -28,6 +28,7 @@
 #include "git-merge-pane.h"
 #include "git-status-pane.h"
 #include "git-commit-pane.h"
+#include "git-add-files-pane.h"
 
 AnjutaCommandBarEntry branch_entries[] =
 {
@@ -89,7 +90,24 @@ AnjutaCommandBarEntry status_entries[] = {
 		N_("Commit changes"),
 		GTK_STOCK_APPLY,
 		G_CALLBACK (on_commit_button_clicked)
+	},
+	{
+		ANJUTA_COMMAND_BAR_ENTRY_FRAME,
+		"NULL",
+		N_("Files"),
+		NULL,
+		NULL,
+		NULL
+	},
+	{
+		ANJUTA_COMMAND_BAR_ENTRY_BUTTON,
+		"AddFiles",
+		N_("Add"),
+		N_("Add files to the index"),
+		GTK_STOCK_ADD,
+		G_CALLBACK (on_add_button_clicked)
 	}
+	
 };
 
 static gpointer parent_class;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]