]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl add relocation code
authorEric Bollengier <eric@eb.homelinux.org>
Thu, 12 Apr 2007 07:10:56 +0000 (07:10 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 12 Apr 2007 07:10:56 +0000 (07:10 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4537 91ce42f0-d328-0410-95d8-f526ca767f89

gui/brestore/brestore-fr.glade
gui/brestore/brestore.glade
gui/brestore/brestore.pl
gui/bweb/cgi/bconsole.pl
gui/bweb/lib/Bweb.pm

index 5d605e21f3b2a9f896a51c1cdea3bd0785757498..d93b83cc5b573cf0386302bb59f9f2b1c12b7336 100644 (file)
@@ -2674,117 +2674,23 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
          </child>
 
          <child>
-           <widget class="GtkFrame" id="frame7">
+           <widget class="GtkFrame" id="frame16">
              <property name="visible">True</property>
              <property name="label_xalign">0</property>
              <property name="label_yalign">0.5</property>
              <property name="shadow_type">GTK_SHADOW_NONE</property>
 
              <child>
-               <widget class="GtkAlignment" id="alignment10">
-                 <property name="border_width">3</property>
+               <widget class="GtkAlignment" id="alignment22">
                  <property name="visible">True</property>
                  <property name="xalign">0.5</property>
                  <property name="yalign">0.5</property>
                  <property name="xscale">1</property>
                  <property name="yscale">1</property>
-                 <property name="top_padding">5</property>
+                 <property name="top_padding">0</property>
                  <property name="bottom_padding">0</property>
-                 <property name="left_padding">20</property>
-                 <property name="right_padding">30</property>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox12">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">10</property>
-
-                     <child>
-                       <widget class="GtkComboBox" id="combo_launch_client">
-                         <property name="visible">True</property>
-                         <property name="add_tearoffs">True</property>
-                         <property name="focus_on_click">True</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-
-                     <child>
-                       <widget class="GtkEntry" id="entry_launch_where">
-                         <property name="visible">True</property>
-                         <property name="tooltip" translatable="yes">Ou restaurer</property>
-                         <property name="can_focus">True</property>
-                         <property name="editable">True</property>
-                         <property name="visibility">True</property>
-                         <property name="max_length">0</property>
-                         <property name="text" translatable="yes">/tmp/bacula-restore</property>
-                         <property name="has_frame">True</property>
-                         <property name="invisible_char">*</property>
-                         <property name="activates_default">False</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">True</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-
-             <child>
-               <widget class="GtkLabel" id="label34">
-                 <property name="visible">True</property>
-                 <property name="label" translatable="yes">&lt;b&gt;Destination&lt;/b&gt;</property>
-                 <property name="use_underline">False</property>
-                 <property name="use_markup">True</property>
-                 <property name="justify">GTK_JUSTIFY_LEFT</property>
-                 <property name="wrap">False</property>
-                 <property name="selectable">False</property>
-                 <property name="xalign">0.5</property>
-                 <property name="yalign">0.5</property>
-                 <property name="xpad">0</property>
-                 <property name="ypad">0</property>
-                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                 <property name="width_chars">-1</property>
-                 <property name="single_line_mode">False</property>
-                 <property name="angle">0</property>
-               </widget>
-               <packing>
-                 <property name="type">label_item</property>
-               </packing>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">False</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkExpander" id="expander1">
-             <property name="border_width">3</property>
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="expanded">False</property>
-             <property name="spacing">0</property>
-
-             <child>
-               <widget class="GtkAlignment" id="alignment9">
-                 <property name="visible">True</property>
-                 <property name="xalign">0.5</property>
-                 <property name="yalign">0.5</property>
-                 <property name="xscale">1</property>
-                 <property name="yscale">1</property>
-                 <property name="top_padding">3</property>
-                 <property name="bottom_padding">3</property>
                  <property name="left_padding">12</property>
-                 <property name="right_padding">5</property>
+                 <property name="right_padding">0</property>
 
                  <child>
                    <widget class="GtkTable" id="table1">
@@ -2947,7 +2853,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                      </child>
 
                      <child>
-                       <widget class="GtkHBox" id="hbox13">
+                       <widget class="GtkHBox" id="hbox18">
                          <property name="visible">True</property>
                          <property name="homogeneous">False</property>
                          <property name="spacing">3</property>
@@ -2962,7 +2868,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                              <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                              <property name="snap_to_ticks">False</property>
                              <property name="wrap">False</property>
-                             <property name="adjustment">10 1 100 1 10 10</property>
+                             <property name="adjustment">9 1 100 1 10 10</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
@@ -2972,7 +2878,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                          </child>
 
                          <child>
-                           <widget class="GtkLabel" id="label42">
+                           <widget class="GtkLabel" id="label61">
                              <property name="visible">True</property>
                              <property name="label" translatable="yes">Priorité</property>
                              <property name="use_underline">False</property>
@@ -3002,7 +2908,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                          <property name="top_attach">0</property>
                          <property name="bottom_attach">1</property>
                          <property name="x_options">fill</property>
-                         <property name="y_options">fill</property>
+                         <property name="y_options"></property>
                        </packing>
                      </child>
                    </widget>
@@ -3011,7 +2917,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
              </child>
 
              <child>
-               <widget class="GtkLabel" id="label32">
+               <widget class="GtkLabel" id="label55">
                  <property name="visible">True</property>
                  <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
                  <property name="use_underline">False</property>
@@ -3033,6 +2939,426 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                </packing>
              </child>
            </widget>
+           <packing>
+             <property name="padding">0</property>
+             <property name="expand">False</property>
+             <property name="fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkFrame" id="frame7">
+             <property name="visible">True</property>
+             <property name="label_xalign">0</property>
+             <property name="label_yalign">0.5</property>
+             <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+             <child>
+               <widget class="GtkVBox" id="vbox18">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
+
+                 <child>
+                   <widget class="GtkAlignment" id="alignment10">
+                     <property name="border_width">3</property>
+                     <property name="visible">True</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xscale">1</property>
+                     <property name="yscale">1</property>
+                     <property name="top_padding">5</property>
+                     <property name="bottom_padding">0</property>
+                     <property name="left_padding">20</property>
+                     <property name="right_padding">30</property>
+
+                     <child>
+                       <widget class="GtkHBox" id="hbox12">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">10</property>
+
+                         <child>
+                           <widget class="GtkComboBox" id="combo_launch_client">
+                             <property name="visible">True</property>
+                             <property name="add_tearoffs">True</property>
+                             <property name="focus_on_click">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkEntry" id="entry_launch_where">
+                             <property name="visible">True</property>
+                             <property name="tooltip" translatable="yes">Ou restaurer</property>
+                             <property name="can_focus">True</property>
+                             <property name="editable">True</property>
+                             <property name="visibility">True</property>
+                             <property name="max_length">0</property>
+                             <property name="text" translatable="yes">/tmp/bacula-restore</property>
+                             <property name="has_frame">True</property>
+                             <property name="invisible_char">*</property>
+                             <property name="activates_default">False</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkExpander" id="expander1">
+                     <property name="border_width">6</property>
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="expanded">True</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkVBox" id="vbox19">
+                         <property name="border_width">3</property>
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">0</property>
+
+                         <child>
+                           <widget class="GtkCheckButton" id="chk_file_relocation">
+                             <property name="border_width">3</property>
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Utiliser la re-localisation</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                             <signal name="toggled" handler="on_use_regexp_toggled" last_modification_time="Thu, 05 Apr 2007 19:58:39 GMT"/>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkTable" id="table5">
+                             <property name="border_width">6</property>
+                             <property name="visible">True</property>
+                             <property name="n_rows">5</property>
+                             <property name="n_columns">2</property>
+                             <property name="homogeneous">False</property>
+                             <property name="row_spacing">3</property>
+                             <property name="column_spacing">5</property>
+
+                             <child>
+                               <widget class="GtkLabel" id="label57">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Ajouter un suffix :</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">2</property>
+                                 <property name="bottom_attach">3</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_add_suffix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">Utiliser &quot;.old&quot; ici pour restauter tous les fichier en fichier.old</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">2</property>
+                                 <property name="bottom_attach">3</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label60">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Where regexp :</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">4</property>
+                                 <property name="bottom_attach">5</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_rwhere">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">A bacula regexp uses &quot;!&quot; as separator. Like in !/opt!/tmp!</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">4</property>
+                                 <property name="bottom_attach">5</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_strip_prefix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">Supprimer une partie du path source (/tmp/fichier -&gt; /fichier)</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label56">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Supprimer un prefix :</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_add_prefix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">Ajouter un prefix au path destination (/etc -&gt; /tmp/etc)</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <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>
+
+                             <child>
+                               <widget class="GtkLabel" id="label58">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Ajouter un prefix :</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">1</property>
+                                 <property name="bottom_attach">2</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkCheckButton" id="chk_use_regexp">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="label" translatable="yes">Utiliser une expression
+régulière</property>
+                                 <property name="use_underline">True</property>
+                                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                                 <property name="focus_on_click">True</property>
+                                 <property name="active">False</property>
+                                 <property name="inconsistent">False</property>
+                                 <property name="draw_indicator">True</property>
+                                 <signal name="toggled" handler="on_use_rwhere_toggled" last_modification_time="Wed, 11 Apr 2007 11:46:44 GMT"/>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">3</property>
+                                 <property name="bottom_attach">4</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label32">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">Options de re-localisation des fichiers...</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">True</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="type">label_item</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+               </widget>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label34">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">&lt;b&gt;Destination&lt;/b&gt;</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">True</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0.5</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
+               </widget>
+               <packing>
+                 <property name="type">label_item</property>
+               </packing>
+             </child>
+           </widget>
            <packing>
              <property name="padding">0</property>
              <property name="expand">True</property>
index b32a8e693eb68c3c538c530463ad868dc767ae54..595c5390ae16d51a7b2561baeda2ecce41b1ff68 100644 (file)
@@ -1135,7 +1135,7 @@ This year</property>
          <child>
            <widget class="GtkLabel" id="copyright_lable">
              <property name="visible">True</property>
-             <property name="label" translatable="yes">&lt;small&gt;Bacula Copyright ©2000-2006FSF Europe&lt;/small&gt;
+             <property name="label" translatable="yes">&lt;small&gt;Bacula Copyright ©2000-2007FSF Europe&lt;/small&gt;
 </property>
              <property name="use_underline">False</property>
              <property name="use_markup">True</property>
@@ -2678,117 +2678,23 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
          </child>
 
          <child>
-           <widget class="GtkFrame" id="frame7">
+           <widget class="GtkFrame" id="frame16">
              <property name="visible">True</property>
              <property name="label_xalign">0</property>
              <property name="label_yalign">0.5</property>
              <property name="shadow_type">GTK_SHADOW_NONE</property>
 
              <child>
-               <widget class="GtkAlignment" id="alignment10">
-                 <property name="border_width">3</property>
+               <widget class="GtkAlignment" id="alignment22">
                  <property name="visible">True</property>
                  <property name="xalign">0.5</property>
                  <property name="yalign">0.5</property>
                  <property name="xscale">1</property>
                  <property name="yscale">1</property>
-                 <property name="top_padding">5</property>
+                 <property name="top_padding">0</property>
                  <property name="bottom_padding">0</property>
-                 <property name="left_padding">20</property>
-                 <property name="right_padding">30</property>
-
-                 <child>
-                   <widget class="GtkHBox" id="hbox12">
-                     <property name="visible">True</property>
-                     <property name="homogeneous">False</property>
-                     <property name="spacing">10</property>
-
-                     <child>
-                       <widget class="GtkComboBox" id="combo_launch_client">
-                         <property name="visible">True</property>
-                         <property name="add_tearoffs">True</property>
-                         <property name="focus_on_click">True</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">False</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-
-                     <child>
-                       <widget class="GtkEntry" id="entry_launch_where">
-                         <property name="visible">True</property>
-                         <property name="tooltip" translatable="yes">Where to restore</property>
-                         <property name="can_focus">True</property>
-                         <property name="editable">True</property>
-                         <property name="visibility">True</property>
-                         <property name="max_length">0</property>
-                         <property name="text" translatable="yes">/tmp/bacula-restore</property>
-                         <property name="has_frame">True</property>
-                         <property name="invisible_char">*</property>
-                         <property name="activates_default">False</property>
-                       </widget>
-                       <packing>
-                         <property name="padding">0</property>
-                         <property name="expand">True</property>
-                         <property name="fill">True</property>
-                       </packing>
-                     </child>
-                   </widget>
-                 </child>
-               </widget>
-             </child>
-
-             <child>
-               <widget class="GtkLabel" id="label34">
-                 <property name="visible">True</property>
-                 <property name="label" translatable="yes">&lt;b&gt;Destination&lt;/b&gt;</property>
-                 <property name="use_underline">False</property>
-                 <property name="use_markup">True</property>
-                 <property name="justify">GTK_JUSTIFY_LEFT</property>
-                 <property name="wrap">False</property>
-                 <property name="selectable">False</property>
-                 <property name="xalign">0.5</property>
-                 <property name="yalign">0.5</property>
-                 <property name="xpad">0</property>
-                 <property name="ypad">0</property>
-                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                 <property name="width_chars">-1</property>
-                 <property name="single_line_mode">False</property>
-                 <property name="angle">0</property>
-               </widget>
-               <packing>
-                 <property name="type">label_item</property>
-               </packing>
-             </child>
-           </widget>
-           <packing>
-             <property name="padding">0</property>
-             <property name="expand">False</property>
-             <property name="fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkExpander" id="expander1">
-             <property name="border_width">3</property>
-             <property name="visible">True</property>
-             <property name="can_focus">True</property>
-             <property name="expanded">False</property>
-             <property name="spacing">0</property>
-
-             <child>
-               <widget class="GtkAlignment" id="alignment9">
-                 <property name="visible">True</property>
-                 <property name="xalign">0.5</property>
-                 <property name="yalign">0.5</property>
-                 <property name="xscale">1</property>
-                 <property name="yscale">1</property>
-                 <property name="top_padding">3</property>
-                 <property name="bottom_padding">3</property>
                  <property name="left_padding">12</property>
-                 <property name="right_padding">5</property>
+                 <property name="right_padding">0</property>
 
                  <child>
                    <widget class="GtkTable" id="table1">
@@ -2951,7 +2857,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                      </child>
 
                      <child>
-                       <widget class="GtkHBox" id="hbox13">
+                       <widget class="GtkHBox" id="hbox18">
                          <property name="visible">True</property>
                          <property name="homogeneous">False</property>
                          <property name="spacing">3</property>
@@ -2966,7 +2872,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                              <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                              <property name="snap_to_ticks">False</property>
                              <property name="wrap">False</property>
-                             <property name="adjustment">10 1 100 1 10 10</property>
+                             <property name="adjustment">9 1 100 1 10 10</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
@@ -2976,7 +2882,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                          </child>
 
                          <child>
-                           <widget class="GtkLabel" id="label42">
+                           <widget class="GtkLabel" id="label61">
                              <property name="visible">True</property>
                              <property name="label" translatable="yes">Priority</property>
                              <property name="use_underline">False</property>
@@ -3006,7 +2912,7 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
                          <property name="top_attach">0</property>
                          <property name="bottom_attach">1</property>
                          <property name="x_options">fill</property>
-                         <property name="y_options">fill</property>
+                         <property name="y_options"></property>
                        </packing>
                      </child>
                    </widget>
@@ -3015,9 +2921,427 @@ http://user:pass@director/cgi-bin/bweb/bconsole.pl</property>
              </child>
 
              <child>
-               <widget class="GtkLabel" id="label32">
+               <widget class="GtkLabel" id="label55">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">True</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0.5</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
+               </widget>
+               <packing>
+                 <property name="type">label_item</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="padding">0</property>
+             <property name="expand">False</property>
+             <property name="fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkFrame" id="frame7">
+             <property name="visible">True</property>
+             <property name="label_xalign">0</property>
+             <property name="label_yalign">0.5</property>
+             <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+             <child>
+               <widget class="GtkVBox" id="vbox18">
                  <property name="visible">True</property>
-                 <property name="label" translatable="yes">&lt;b&gt;More Options&lt;/b&gt;</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
+
+                 <child>
+                   <widget class="GtkAlignment" id="alignment10">
+                     <property name="border_width">3</property>
+                     <property name="visible">True</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xscale">1</property>
+                     <property name="yscale">1</property>
+                     <property name="top_padding">5</property>
+                     <property name="bottom_padding">0</property>
+                     <property name="left_padding">20</property>
+                     <property name="right_padding">30</property>
+
+                     <child>
+                       <widget class="GtkHBox" id="hbox12">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">10</property>
+
+                         <child>
+                           <widget class="GtkComboBox" id="combo_launch_client">
+                             <property name="visible">True</property>
+                             <property name="add_tearoffs">True</property>
+                             <property name="focus_on_click">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkEntry" id="entry_launch_where">
+                             <property name="visible">True</property>
+                             <property name="tooltip" translatable="yes">Where to restore</property>
+                             <property name="can_focus">True</property>
+                             <property name="editable">True</property>
+                             <property name="visibility">True</property>
+                             <property name="max_length">0</property>
+                             <property name="text" translatable="yes">/tmp/bacula-restore</property>
+                             <property name="has_frame">True</property>
+                             <property name="invisible_char">*</property>
+                             <property name="activates_default">False</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkExpander" id="expander1">
+                     <property name="border_width">6</property>
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="expanded">False</property>
+                     <property name="spacing">0</property>
+
+                     <child>
+                       <widget class="GtkVBox" id="vbox19">
+                         <property name="border_width">3</property>
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">0</property>
+
+                         <child>
+                           <widget class="GtkCheckButton" id="chk_file_relocation">
+                             <property name="border_width">3</property>
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Use file relocation</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                             <signal name="toggled" handler="on_use_regexp_toggled" last_modification_time="Thu, 05 Apr 2007 19:58:39 GMT"/>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkTable" id="table5">
+                             <property name="border_width">6</property>
+                             <property name="visible">True</property>
+                             <property name="n_rows">5</property>
+                             <property name="n_columns">2</property>
+                             <property name="homogeneous">False</property>
+                             <property name="row_spacing">3</property>
+                             <property name="column_spacing">5</property>
+
+                             <child>
+                               <widget class="GtkLabel" id="label57">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Add suffix:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">2</property>
+                                 <property name="bottom_attach">3</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_add_suffix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">Put &quot;.old&quot; here to get all restored files to files.old</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">2</property>
+                                 <property name="bottom_attach">3</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label60">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Where regexp:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">4</property>
+                                 <property name="bottom_attach">5</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_rwhere">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">A bacula regexp uses &quot;!&quot; as separator. Like in !/opt!/tmp!</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">4</property>
+                                 <property name="bottom_attach">5</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_strip_prefix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="tooltip" translatable="yes">Removed from path (be sure to keep a / at the begining of your path)</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label56">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Strip prefix:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkEntry" id="entry_add_prefix">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="editable">True</property>
+                                 <property name="visibility">True</property>
+                                 <property name="max_length">0</property>
+                                 <property name="text" translatable="yes"></property>
+                                 <property name="has_frame">True</property>
+                                 <property name="invisible_char">●</property>
+                                 <property name="activates_default">False</property>
+                               </widget>
+                               <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>
+
+                             <child>
+                               <widget class="GtkLabel" id="label58">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Add prefix:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">1</property>
+                                 <property name="bottom_attach">2</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkCheckButton" id="chk_use_regexp">
+                                 <property name="visible">True</property>
+                                 <property name="sensitive">False</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="label" translatable="yes">Use regexp</property>
+                                 <property name="use_underline">True</property>
+                                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                                 <property name="focus_on_click">True</property>
+                                 <property name="active">False</property>
+                                 <property name="inconsistent">False</property>
+                                 <property name="draw_indicator">True</property>
+                                 <signal name="toggled" handler="on_use_rwhere_toggled" last_modification_time="Wed, 11 Apr 2007 11:46:44 GMT"/>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">3</property>
+                                 <property name="bottom_attach">4</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">True</property>
+                             <property name="fill">True</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label32">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">More relocation options...</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">True</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="type">label_item</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+               </widget>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label34">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">&lt;b&gt;Destination&lt;/b&gt;</property>
                  <property name="use_underline">False</property>
                  <property name="use_markup">True</property>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
index e019f7af66706e4a5a6fa0912b3811fb4e09f072..33f17328b1861d2272aea57f17c98c324a22d1f1 100755 (executable)
@@ -71,7 +71,7 @@ use Gtk2::SimpleList;         # easy wrapper for list views
 use Gtk2::Gdk::Keysyms;                # keyboard code constants
 use Data::Dumper qw/Dumper/;
 my $debug=0;                   # can be on brestore.conf
-our ($VERSION) = ('$Revision$' =~ /(\d+\.\d+)/);
+our ($VERSION) = ('$Revision$' =~ /(\d+)/);
 
 package Pref;
 use DBI;
@@ -656,12 +656,89 @@ To follow it, you must use bconsole (or install/configure bweb)");
     }
 }
 
+sub on_use_regexp_toggled
+{
+    my ($self,$widget) = @_;
+    my $act = $widget->get_active();
+
+    foreach my $w ('entry_launch_where') {
+       $self->{glade}->get_widget($w)->set_sensitive(!$act);
+    }
+
+    foreach my $w ('entry_add_prefix', 'entry_strip_prefix', 
+                  'entry_add_suffix','entry_rwhere','chk_use_regexp')
+    {
+       $self->{glade}->get_widget($w)->set_sensitive($act);
+    }
+
+    if ($act) { # if we activate file relocation, we reset use_regexp
+       $self->{glade}->get_widget('entry_rwhere')->set_sensitive(0);
+       $self->{glade}->get_widget('chk_use_regexp')->set_active(0);
+    }
+}
+
+
+sub on_use_rwhere_toggled
+{
+    my ($self,$widget) = @_;
+    my $act = $widget->get_active();
+
+    foreach my $w ('entry_rwhere') {
+       $self->{glade}->get_widget($w)->set_sensitive($act);
+    }
+
+    foreach my $w ('entry_add_prefix', 'entry_strip_prefix', 
+                  'entry_add_suffix')
+    {
+       $self->{glade}->get_widget($w)->set_sensitive(!$act);
+    }
+}
+
 sub on_cancel_resto_clicked
 {
     my ($self) = @_ ;
     $self->{glade}->get_widget('dlg_launch')->destroy();
 }
 
+sub get_where
+{
+    my ($self) = @_ ;
+
+    if ($self->{glade}->get_widget('chk_file_relocation')->get_active()) {
+       # using regexp
+       if ($self->{glade}->get_widget('chk_use_regexp')->get_active()) {
+
+           return ('rwhere', 
+                   $self->{glade}->get_widget('entry_rwhere')->get_active());
+       }
+           
+       # using regexp utils
+       my @ret;
+       my ($strip_prefix, $add_prefix, $add_suffix) = 
+           ($self->{glade}->get_widget('entry_strip_prefix')->get_text(),
+            $self->{glade}->get_widget('entry_add_prefix')->get_text(),
+            $self->{glade}->get_widget('entry_add_suffix')->get_text());
+           
+       if ($strip_prefix) {
+           push @ret,"!$strip_prefix!!i";
+       }
+       
+       if ($add_prefix) {
+           push @ret,"!^!$add_prefix!";
+       }
+
+       if ($add_suffix) {
+           push @ret,"!([^/])$!\$1$add_prefix!";
+       }
+
+       return ('rwhere', join(',', @ret));
+
+    } else { # using where
+       return ('where', 
+               $self->{glade}->get_widget('entry_launch_where')->get_text());
+    }
+}
+
 sub on_submit_resto_clicked
 {
     my ($self) = @_ ;
@@ -680,7 +757,8 @@ sub on_submit_resto_clicked
     my $storage = $glade->get_widget('combo_launch_storage')
                               ->get_active_text();
 
-    my $where = $glade->get_widget('entry_launch_where')->get_text();
+    my ($where_cmd, $where) = $self->get_where();
+    print "$where_cmd => $where\n";
 
     my $job = $glade->get_widget('combo_launch_job')
                               ->get_active_text();
@@ -707,7 +785,7 @@ sub on_submit_resto_clicked
                                       client  => $client,
                                       storage => $storage,
                                       fileset => $fileset,
-                                      where   => $where,
+                                      $where_cmd => $where,
                                       replace => $replace,
                                       priority=> $prio,
                                       bootstrap => $r);
@@ -2065,7 +2143,7 @@ WHERE Job.JobId = JobMedia.JobId
        # path, volsessiontime DESC (get the most recent file...)
        # The array rows look like this :
        # complete_path,is_dir,fileindex,
-       # ref->(jobid,VolsessionId,VolsessionTime,File,FirstIndex,
+       #\81 ref->(jobid,VolsessionId,VolsessionTime,File,FirstIndex,
        #       LastIndex,StartBlock-EndBlock,VolIndex,Volumename,MediaType)
        @temp_list = sort {$a->[0] cmp $b->[0]
                         || $b->[3]->[2] <=> $a->[3]->[2]
@@ -2173,11 +2251,11 @@ WHERE Job.JobId = JobMedia.JobId
                       or $prev_volfile ne $volfile)
                {
                        # We have to create a new section in the bsr...
-                       # We print the previous one ... 
+                       #\81Â\81 We print the previous one ... 
                        # (before that, save the current range ...)
                        if ($first_of_current_range != $prev_fileindex)
                        {
-                               # we are in a range
+                               #\81Â\81 we are in a range
                                push @fileindex_ranges,
                                    ("$first_of_current_range-$prev_fileindex");
                        }
@@ -2669,7 +2747,7 @@ sub get_all_file_versions
        if ($ref->[8])
        {
            # The file has a md5. We compare his md5 to other known md5...
-           # We take size into account. It may happen that 2 files
+           #\81 We take size into account. It may happen that 2 files
            # have the same md5sum and are different. size is a supplementary
            # criterion
             
@@ -2680,7 +2758,7 @@ sub get_all_file_versions
            # we never met this one before...
            $allready_seen_by_md5{$ref->[8] .'-'. $ref->[6]}=1;
        }
-       # Even if it has a md5, we should also work with mtimes
+       #\81 Even if it has a md5, we should also work with mtimes
         # We allready have a (better) version
        next if ( (not $see_all)
                  and $allready_seen_by_mtime{$ref->[5] .'-'. $ref->[6]}); 
@@ -3126,9 +3204,10 @@ sub run
                                client  => $arg{client},
                                storage => $arg{storage} || '',
                                fileset => $arg{fileset} || '',
-                               where   => $arg{where},
-                               replace => $arg{replace},
+                               where   => $arg{where}   || '',
+                               rwhere  => $arg{rwhere}  || '',
                                priority=> $arg{prio}    || '',
+                               replace => $arg{replace},
                                action  => 'run',
                                timeout => 10,
                                bootstrap => [$arg{bootstrap}],
index 2bc674813046f2dd0c8f2807aa836d1ec086bc3c..8444151c17d76cc022c379b5a4b9a9b4783ce341 100755 (executable)
@@ -85,7 +85,7 @@ for my $a (@action)
     } elsif ($a eq 'run' and $have_run==0) {
        $have_run=1;
 
-       my $arg = $bweb->get_form(qw/job client storage fileset 
+       my $arg = $bweb->get_form(qw/job client storage fileset rwhere
                                     where replace priority/);
 
        my $bootstrap = CGI::param('bootstrap');
@@ -107,6 +107,7 @@ for my $a (@action)
                                   storage   => $arg->{storage},
                                   fileset   => $arg->{fileset},
                                   where     => $arg->{where},
+                                  rwhere    => $arg->{rwhere},
                                   replace   => $arg->{replace},
                                   priority  => $arg->{priority},
                                   bootstrap => $filename);
index 007ff6429949ae9a90aec1bfe0ab6c11cf81fbcc..722d0c417b06571be5410a9175e18fa65fd8c8a7 100644 (file)
@@ -1076,7 +1076,7 @@ sub dbh_disconnect
     my ($self) = @_;
     if ($self->{dbh}) {
        $self->{dbh}->disconnect();
-       undef self->{dbh};
+       undef $self->{dbh};
     }
 }
 
@@ -1401,6 +1401,7 @@ sub get_form
                 device => 1,
                 where  => 1,
                 );
+    my %opt_r = (rwhere => 1);
 
     my %opt_d = (              # option with date
                 voluseduration=> 1,
@@ -1443,6 +1444,11 @@ sub get_form
            if ($value =~ /^([\w\d\.\/\s:\@\-]+)$/) {
                $ret{$i} = $1;
            }
+       } elsif (exists $opt_r{$i}) {
+           my $value = CGI::param($i) || '';
+           if ($value =~ /^([^'"']+)$/) {
+               $ret{$i} = $1;
+           }
        } elsif (exists $opt_d{$i}) {
            my $value = CGI::param($i) || '';
            if ($value =~ /^\s*(\d+\s+\w+)$/) {
@@ -2457,7 +2463,7 @@ INSERT LocationLog (Date, Comment, MediaId, LocationId, NewVolStatus)
     $self->display({ email  => $self->{info}->{email_media},
                     url => $url,
                     newlocation => $newloc,
-                    # [ { volumename => 'vol1' }, { volumename => 'vol2'\81 },..]
+                    # [ { volumename => 'vol1' }, { volumename => 'vol2'\81\81 },..]
                     medias => [ values %$medias ],
                   },
                   "change_location.tpl");