[longomatch] Added ability to import project into the DB Closes #603260: Ability to export/import projects to/fr



commit 83d7e07433012df8b3075a40d5f19118764f9627
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Thu Dec 24 13:05:19 2009 +0100

    Added ability to import project into the DB
    	Closes #603260: Ability to export/import projects to/from other machines

 LongoMatch/DB/DataBase.cs                       |   20 +++++++++
 LongoMatch/Gui/MainWindow.cs                    |   49 ++++++++++++++++++++++-
 LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs |   14 +++++--
 LongoMatch/gtk-gui/gui.stetic                   |   16 ++++++-
 4 files changed, 91 insertions(+), 8 deletions(-)
---
diff --git a/LongoMatch/DB/DataBase.cs b/LongoMatch/DB/DataBase.cs
index 0335760..a9d7999 100644
--- a/LongoMatch/DB/DataBase.cs
+++ b/LongoMatch/DB/DataBase.cs
@@ -305,6 +305,26 @@ namespace LongoMatch.DB
 				}
 			}
 		}
+		
+		/// <summary>
+		/// Checks if a project already exists in the DataBase with the same file 
+		/// </summary>
+		/// <param name="project">
+		/// A <see cref="Project"/> to compare
+		/// </param>
+		/// <returns>
+		/// A <see cref="System.Boolean"/>
+		/// </returns>
+		public bool Exists(Project project){
+			IObjectContainer db = Db4oFactory.OpenFile(file);
+			try{
+				return Exists(project.File.FilePath, db);
+			}catch{
+				return false;
+			}finally{
+				CloseDB(db);
+			}				
+		}
 
 		private void CloseDB(IObjectContainer db) {
 			db.Ext().Purge();
diff --git a/LongoMatch/Gui/MainWindow.cs b/LongoMatch/Gui/MainWindow.cs
index 4da6eeb..aee8843 100644
--- a/LongoMatch/Gui/MainWindow.cs
+++ b/LongoMatch/Gui/MainWindow.cs
@@ -279,6 +279,52 @@ namespace LongoMatch.Gui
 		{
 			CloseActualProyect();
 		}
+		
+		protected virtual void OnImportProjectActionActivated (object sender, System.EventArgs e)
+		{
+			FileChooserDialog fChooser = new FileChooserDialog(Catalog.GetString("Import Project"),
+			                (Gtk.Window)Toplevel,
+			                FileChooserAction.Open,
+			                "gtk-cancel",ResponseType.Cancel,
+			                "gtk-open",ResponseType.Accept);
+			fChooser.SetCurrentFolder(MainClass.HomeDir());
+			FileFilter filter = new FileFilter();
+			filter.Name = "LongoMatch Project";
+			filter.AddPattern("*.lpr");
+
+			fChooser.AddFilter(filter);
+			if (fChooser.Run() == (int)ResponseType.Accept) {
+				Project project;
+				try{
+					project = Project.Import(fChooser.Filename);
+					if (!MainClass.DB.Exists(project)){
+						MainClass.DB.AddProject(project);
+						MessagePopup.PopupMessage(this, MessageType.Info, 
+						                          Catalog.GetString("Project successfully imported."));
+					}
+					else{
+						MessageDialog md = new MessageDialog((Gtk.Window)this.Toplevel,
+						                       DialogFlags.Modal,
+						                       MessageType.Question,
+						                       Gtk.ButtonsType.YesNo,
+						                       Catalog.GetString("A project already exists for the file:")+project.File.FilePath+
+						                       "\n"+Catalog.GetString("Do you want to overwritte it?"));
+						md.Icon=Stetic.IconLoader.LoadIcon(this, "longomatch", Gtk.IconSize.Dialog, 48);
+						if (md.Run() == (int)ResponseType.Yes){
+							MainClass.DB.UpdateProject(project);
+						}
+						md.Destroy();						
+					}
+				}
+				catch (Exception ex){
+					MessagePopup.PopupMessage(this, MessageType.Error, ex.Message);
+					fChooser.Destroy();
+					return;
+				}
+			}
+			fChooser.Destroy();
+			
+		}
 
 		protected virtual void OnDatabaseManagerActivated(object sender, System.EventArgs e)
 		{
@@ -495,6 +541,7 @@ GNU General Public License for more details.";
 				System.Diagnostics.Process.Start("http://www.longomatch.ylatuya.es/documentation/manual.html";);
 			} catch {}
 		}
-		#endregion
+
+		#endregion}
 	}
 }
\ No newline at end of file
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs b/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
index a553030..ddebdd0 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -57,6 +57,8 @@ namespace LongoMatch.Gui {
         
         private Gtk.ToggleAction DrawingToolAction;
         
+        private Gtk.Action ImportProjectAction;
+        
         private Gtk.VBox vbox1;
         
         private Gtk.VBox menubox;
@@ -181,6 +183,9 @@ namespace LongoMatch.Gui {
             this.DrawingToolAction = new Gtk.ToggleAction("DrawingToolAction", Mono.Unix.Catalog.GetString("_Drawing Tool"), null, null);
             this.DrawingToolAction.ShortLabel = Mono.Unix.Catalog.GetString("Drawing Tool");
             w1.Add(this.DrawingToolAction, "<Control>d");
+            this.ImportProjectAction = new Gtk.Action("ImportProjectAction", Mono.Unix.Catalog.GetString("_Import Project"), null, "stock-import");
+            this.ImportProjectAction.ShortLabel = Mono.Unix.Catalog.GetString("_Import Project");
+            w1.Add(this.ImportProjectAction, "<Control>i");
             this.UIManager.InsertActionGroup(w1, 0);
             this.AddAccelGroup(this.UIManager.AccelGroup);
             this.Name = "LongoMatch.Gui.MainWindow";
@@ -197,7 +202,7 @@ namespace LongoMatch.Gui {
             this.menubox.Name = "menubox";
             this.menubox.Spacing = 6;
             // Container child menubox.Gtk.Box+BoxChild
-            this.UIManager.AddUiFromString("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='OpenProjectAction' action='OpenProjectAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem name='CloseProjectAction' action='CloseProjectAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' action='TeamsTemplatesManagerAction'/><menuitem name='ExportProjectToCSVFileAction' action='ExportProjectToCSVFileAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='FullScreenAction' action='FullScreenAction'/><menuitem name='HideAllWidgetsAction' action='HideAllWidgetsActi
 on'/><separator/><menuitem name='PlaylistAction' action='PlaylistAction'/><menuitem name='DrawingToolAction' action='DrawingToolAction'/><separator/><menuitem name='CaptureModeAction' action='CaptureModeAction'/><menuitem name='AnalyzeModeAction' action='AnalyzeModeAction'/></menu><menu name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem name='HelpAction1' action='HelpAction1'/></menu></menubar></ui>");
+            this.UIManager.AddUiFromString("<ui><menubar name='menubar1'><menu name='FileAction' action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='OpenProjectAction' action='OpenProjectAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem name='CloseProjectAction' action='CloseProjectAction'/><separator/><menuitem name='ImportProjectAction' action='ImportProjectAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' action='TeamsTemplatesManagerAction'/><menuitem name='ExportProjectToCSVFileAction' action='ExportProjectToCSVFileAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem name='FullScreenAction' action='Full
 ScreenAction'/><menuitem name='HideAllWidgetsAction' action='HideAllWidgetsAction'/><separator/><menuitem name='PlaylistAction' action='PlaylistAction'/><menuitem name='DrawingToolAction' action='DrawingToolAction'/><separator/><menuitem name='CaptureModeAction' action='CaptureModeAction'/><menuitem name='AnalyzeModeAction' action='AnalyzeModeAction'/></menu><menu name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem name='HelpAction1' action='HelpAction1'/></menu></menubar></ui>");
             this.menubar1 = ((Gtk.MenuBar)(this.UIManager.GetWidget("/menubar1")));
             this.menubar1.Name = "menubar1";
             this.menubox.Add(this.menubar1);
@@ -214,7 +219,7 @@ namespace LongoMatch.Gui {
             this.hpaned = new Gtk.HPaned();
             this.hpaned.CanFocus = true;
             this.hpaned.Name = "hpaned";
-            this.hpaned.Position = 299;
+            this.hpaned.Position = 294;
             // Container child hpaned.Gtk.Paned+PanedChild
             this.leftbox = new Gtk.VBox();
             this.leftbox.Name = "leftbox";
@@ -272,7 +277,7 @@ namespace LongoMatch.Gui {
             this.hpaned1 = new Gtk.HPaned();
             this.hpaned1.CanFocus = true;
             this.hpaned1.Name = "hpaned1";
-            this.hpaned1.Position = 789;
+            this.hpaned1.Position = 804;
             // Container child hpaned1.Gtk.Paned+PanedChild
             this.vbox5 = new Gtk.VBox();
             this.vbox5.Name = "vbox5";
@@ -378,7 +383,7 @@ namespace LongoMatch.Gui {
                 this.Child.ShowAll();
             }
             this.DefaultWidth = 1259;
-            this.DefaultHeight = 761;
+            this.DefaultHeight = 786;
             this.leftbox.Hide();
             this.drawingtoolbox1.Hide();
             this.timelinewidget1.Hide();
@@ -405,6 +410,7 @@ namespace LongoMatch.Gui {
             this.HideAllWidgetsAction.Toggled += new System.EventHandler(this.OnHideAllWidgetsActionToggled);
             this.HelpAction1.Activated += new System.EventHandler(this.OnHelpAction1Activated);
             this.DrawingToolAction.Toggled += new System.EventHandler(this.OnDrawingToolActionToggled);
+            this.ImportProjectAction.Activated += new System.EventHandler(this.OnImportProjectActionActivated);
             this.treewidget1.TimeNodeSelected += new LongoMatch.Handlers.TimeNodeSelectedHandler(this.OnTimeNodeSelected);
             this.playerbin1.Error += new LongoMatch.Video.Handlers.ErrorHandler(this.OnPlayerbin1Error);
             this.playerbin1.SegmentClosedEvent += new LongoMatch.Video.Handlers.SegmentClosedHandler(this.OnSegmentClosedEvent);
diff --git a/LongoMatch/gtk-gui/gui.stetic b/LongoMatch/gtk-gui/gui.stetic
index 8c12a03..d6b5425 100644
--- a/LongoMatch/gtk-gui/gui.stetic
+++ b/LongoMatch/gtk-gui/gui.stetic
@@ -1482,7 +1482,7 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="1259 761">
+  <widget class="Gtk.Window" id="LongoMatch.Gui.MainWindow" design-size="1259 786">
     <action-group name="Default">
       <action id="FileAction">
         <property name="Type">Action</property>
@@ -1637,6 +1637,14 @@
         <property name="Active">False</property>
         <signal name="Toggled" handler="OnDrawingToolActionToggled" />
       </action>
+      <action id="ImportProjectAction">
+        <property name="Type">Action</property>
+        <property name="Accelerator">&lt;Control&gt;i</property>
+        <property name="Label" translatable="yes">_Import Project</property>
+        <property name="ShortLabel" translatable="yes">_Import Project</property>
+        <property name="StockId">stock-import</property>
+        <signal name="Activated" handler="OnImportProjectActionActivated" />
+      </action>
     </action-group>
     <property name="MemberName" />
     <property name="Title" translatable="yes">LongoMatch</property>
@@ -1662,6 +1670,8 @@
                     <node type="Menuitem" action="SaveProjectAction" />
                     <node type="Menuitem" action="CloseProjectAction" />
                     <node type="Separator" />
+                    <node type="Menuitem" action="ImportProjectAction" />
+                    <node type="Separator" />
                     <node type="Menuitem" action="QuitAction" />
                   </node>
                   <node type="Menu" action="ToolsAction">
@@ -1705,7 +1715,7 @@
           <widget class="Gtk.HPaned" id="hpaned">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="Position">299</property>
+            <property name="Position">294</property>
             <child>
               <widget class="Gtk.VBox" id="leftbox">
                 <property name="MemberName" />
@@ -1784,7 +1794,7 @@
               <widget class="Gtk.HPaned" id="hpaned1">
                 <property name="MemberName" />
                 <property name="CanFocus">True</property>
-                <property name="Position">789</property>
+                <property name="Position">804</property>
                 <child>
                   <widget class="Gtk.VBox" id="vbox5">
                     <property name="MemberName" />



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