Feature added: Allow user to change the persistence location
This commit is contained in:
		| @@ -185,6 +185,11 @@ | |||||||
|                     SubType = "Code" |                     SubType = "Code" | ||||||
|                     BuildAction = "Compile" |                     BuildAction = "Compile" | ||||||
|                 /> |                 /> | ||||||
|  |                 <File | ||||||
|  |                     RelPath = "DbgFileChooser.cs" | ||||||
|  |                     SubType = "Code" | ||||||
|  |                     BuildAction = "Compile" | ||||||
|  |                 /> | ||||||
|                 <File |                 <File | ||||||
|                     RelPath = "ExportSecrets.cs" |                     RelPath = "ExportSecrets.cs" | ||||||
|                     SubType = "Code" |                     SubType = "Code" | ||||||
|   | |||||||
| @@ -92,7 +92,8 @@ namespace Novell.CASA.GUI | |||||||
| 						entryOldMP, | 						entryOldMP, | ||||||
| 						entryNewMP1, | 						entryNewMP1, | ||||||
| 						entryNewMP2, | 						entryNewMP2, | ||||||
| 						entryFirefoxMP; | 						entryFirefoxMP, | ||||||
|  | 						entryStorageDirectory; | ||||||
| 						 | 						 | ||||||
| 						 | 						 | ||||||
| 		[Glade.Widget]  | 		[Glade.Widget]  | ||||||
| @@ -110,7 +111,8 @@ namespace Novell.CASA.GUI | |||||||
|         				labelDesktopPasswordMessage; |         				labelDesktopPasswordMessage; | ||||||
| 						 | 						 | ||||||
| 		[Glade.Widget]  | 		[Glade.Widget]  | ||||||
| 		Gtk.Button		okbuttonPersistentStorage; | 		Gtk.Button		okbuttonPersistentStorage, | ||||||
|  | 						buttonChooseDirectory; | ||||||
| 			 | 			 | ||||||
| 		[Glade.Widget]  | 		[Glade.Widget]  | ||||||
| 		Gtk.MenuItem 	mmiNew, | 		Gtk.MenuItem 	mmiNew, | ||||||
| @@ -527,7 +529,7 @@ namespace Novell.CASA.GUI | |||||||
|  |  | ||||||
| 		private bool DeleteMiCasaFiles() | 		private bool DeleteMiCasaFiles() | ||||||
| 		{ | 		{ | ||||||
| 			string[] faFiles = Directory.GetFiles(Common.GetUserHomeDir(), ".miCASA*"); | 			string[] faFiles = Directory.GetFiles(Common.GetUserPersistentDir(config), ".miCASA*"); | ||||||
| 			bool bDeletedFiles = true; | 			bool bDeletedFiles = true; | ||||||
|  |  | ||||||
| 			for (int i=0; i<faFiles.Length; i++) | 			for (int i=0; i<faFiles.Length; i++) | ||||||
| @@ -701,7 +703,7 @@ namespace Novell.CASA.GUI | |||||||
| 			Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - BEGIN"); | 			Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - BEGIN"); | ||||||
|     	 |     	 | ||||||
| 			string MICASA_PASSCODE_BY_MASTER_PASSWD_FILE = "/.miCASAPCByMPasswd"; | 			string MICASA_PASSCODE_BY_MASTER_PASSWD_FILE = "/.miCASAPCByMPasswd"; | ||||||
| 			string fileName = Common.GetUserHomeDir() + MICASA_PASSCODE_BY_MASTER_PASSWD_FILE; | 			string fileName = Common.GetUserPersistentDir(config) + MICASA_PASSCODE_BY_MASTER_PASSWD_FILE; | ||||||
|            	 |            	 | ||||||
| 			Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - END"); | 			Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - END"); | ||||||
| 			return (File.Exists(fileName)); | 			return (File.Exists(fileName)); | ||||||
| @@ -723,7 +725,7 @@ namespace Novell.CASA.GUI | |||||||
|             catch |             catch | ||||||
|             { |             { | ||||||
|                 // check for existence of persistent files |                 // check for existence of persistent files | ||||||
|                 string sHomeDir = Common.GetUserHomeDir(); |                 string sHomeDir = Common.GetUserPersistentDir(config); | ||||||
|  |  | ||||||
|                 Logger.DbgLog("GUI:CasaMain.DoesPersistentFilesExist() - END"); |                 Logger.DbgLog("GUI:CasaMain.DoesPersistentFilesExist() - END"); | ||||||
|                 return (File.Exists(sHomeDir + Common.MICASA_PERSISTENCE_FILE) |                 return (File.Exists(sHomeDir + Common.MICASA_PERSISTENCE_FILE) | ||||||
| @@ -1656,6 +1658,11 @@ namespace Novell.CASA.GUI | |||||||
| 				checkbuttonKdeWallet.Visible = false; | 				checkbuttonKdeWallet.Visible = false; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			if (entryStorageDirectory != null) | ||||||
|  | 			{ | ||||||
|  | 				entryStorageDirectory.Text = Common.GetUserPersistentDir(config); | ||||||
|  | 			} | ||||||
|  |          | ||||||
| 			Logger.DbgLog("GUI:CasaMain.Preferences() - END");  	          	         | 			Logger.DbgLog("GUI:CasaMain.Preferences() - END");  	          	         | ||||||
| 		} | 		} | ||||||
|      |      | ||||||
| @@ -1777,6 +1784,24 @@ namespace Novell.CASA.GUI | |||||||
| 			} | 			} | ||||||
| 			StorePolicyInterface.SaveAggregationPolicy(); | 			StorePolicyInterface.SaveAggregationPolicy(); | ||||||
|  |  | ||||||
|  | 			// update perisentent location | ||||||
|  | 			// move .miCASA files | ||||||
|  | 			string sNewDir = entryStorageDirectory.Text; | ||||||
|  | 			string sOldDir = Common.GetUserPersistentDir(config); | ||||||
|  | 			try | ||||||
|  | 			{ | ||||||
|  | 				if (MoveMiCASAFiles(sOldDir, sNewDir)) | ||||||
|  | 				{ | ||||||
|  | 					// save off selected directory | ||||||
|  | 					Common.SetUserPersistentDir(config, sNewDir);										 | ||||||
|  | 					CommonGUI.DisplayMessage(Gtk.MessageType.Info, "Files moved from\r\n" + sOldDir + "\r\nto\r\n" + sNewDir); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			catch (Exception e) | ||||||
|  | 			{ | ||||||
|  | 				CommonGUI.DisplayMessage(Gtk.MessageType.Warning, "Error occurred while moving files.\r\n" + e.ToString()); | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
| 			Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - END");          	   	 | 			Logger.DbgLog("GUI:CasaMain.okbuttonPreferences_clicked() - END");          	   	 | ||||||
| 		} | 		} | ||||||
|      |      | ||||||
| @@ -2081,6 +2106,11 @@ namespace Novell.CASA.GUI | |||||||
| 				windowMain.Destroy(); | 				windowMain.Destroy(); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
|  | 		/// <summary>		 | ||||||
|  | 		/// ******************************************************************** | ||||||
|  | 		/// Import/export handlers | ||||||
|  | 		/// ******************************************************************** | ||||||
|  | 		/// </summary> | ||||||
| 		 | 		 | ||||||
| 		public void on_exportSecrets_activate(object obj, EventArgs args) | 		public void on_exportSecrets_activate(object obj, EventArgs args) | ||||||
| 		{ | 		{ | ||||||
| @@ -2099,6 +2129,61 @@ namespace Novell.CASA.GUI | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		public void on_buttonChooseDirectory_clicked(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			//Choose directory for persistent storage | ||||||
|  | 			FileChooser fc = new FileChooser(FileChooser.ACTION_CHOOSE_DIR); | ||||||
|  | 			string sDirectory = fc.GetFile(entryStorageDirectory.Text, null); | ||||||
|  |  | ||||||
|  | 			// show the user the directory choosen | ||||||
|  | 			if (sDirectory != null) | ||||||
|  | 			{ | ||||||
|  | 				if (Directory.Exists(sDirectory)) | ||||||
|  | 				{ | ||||||
|  | 					entryStorageDirectory.Text = sDirectory; | ||||||
|  | 				} | ||||||
|  | 				else | ||||||
|  | 				{ | ||||||
|  | 					CommonGUI.DisplayMessage(Gtk.MessageType.Error, "Directory does not exist\r\n" + sDirectory); | ||||||
|  | 				}				 | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		private bool MoveMiCASAFiles(string sOldDirectory, string sNewDirectory) | ||||||
|  | 		{ | ||||||
|  | 			if ((sOldDirectory != null) && (sNewDirectory != null)) | ||||||
|  | 			{ | ||||||
|  | 				if (!sOldDirectory.Equals(sNewDirectory)) | ||||||
|  | 				{ | ||||||
|  | 					// get file list for .miCASAFiles | ||||||
|  | 					string[] files = Directory.GetFiles(sOldDirectory, ".miCASA*"); | ||||||
|  | 					if (files != null) | ||||||
|  | 					{	 | ||||||
|  | 						// first copy them to the new location | ||||||
|  | 						foreach ( string file in files) | ||||||
|  | 						{ | ||||||
|  | 							string sFileName = file.Substring(file.LastIndexOf("\\") + 1); | ||||||
|  | 							File.Copy(file, sNewDirectory + sFileName, true);					 | ||||||
|  | 						}				 | ||||||
|  |  | ||||||
|  | 						// TODO: tell our daemon/service we changed the location | ||||||
|  | 						ChangePersistentDir cpd = new ChangePersistentDir(sOldDirectory, sNewDirectory); | ||||||
|  | 						cpd = (ChangePersistentDir)MiCasaRequestReply.Send(MiCasaRequestReply.VERB_CHANGE_PERSIST_DIR, cpd); | ||||||
|  |  | ||||||
|  | 						// now delete them from the old directory | ||||||
|  | 						foreach (string file in files) | ||||||
|  | 						{ | ||||||
|  | 							File.Delete(file); | ||||||
|  | 						} | ||||||
|  |  | ||||||
|  | 						return true; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		/// <summary>		 | 		/// <summary>		 | ||||||
| 		/// ******************************************************************** | 		/// ******************************************************************** | ||||||
| 		/// private void HandleQuit() | 		/// private void HandleQuit() | ||||||
| @@ -2154,6 +2239,11 @@ namespace Novell.CASA.GUI | |||||||
| 			Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - END"); | 			Logger.DbgLog("GUI:CasaMain.OnWindowMainDeleted() - END"); | ||||||
| 		}		 | 		}		 | ||||||
|  |  | ||||||
|  | 		public void on_debug_file_chooser_activate(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			DbgFileChooser dbf = new DbgFileChooser(); | ||||||
|  | 			dbf.Run(); | ||||||
|  | 		}		 | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -138,8 +138,11 @@ public class Common | |||||||
| 	public static string	ARG_SHOW_TRAY_ICON			= "-tray"; | 	public static string	ARG_SHOW_TRAY_ICON			= "-tray"; | ||||||
| 	public static string	ARG_DEBUG					= "-debug"; | 	public static string	ARG_DEBUG					= "-debug"; | ||||||
|  |  | ||||||
|  | 	// config settings | ||||||
| 	public static string	CONFIG_RUN_IN_TRAY			= "RunInTray"; | 	public static string	CONFIG_RUN_IN_TRAY			= "RunInTray"; | ||||||
| 	public static string	DISPLAY_CASA_MANAGER		= "DisplayCasaManagerOnClick"; | 	public static string	DISPLAY_CASA_MANAGER		= "DisplayCasaManagerOnClick"; | ||||||
|  | 	public static string	CONFIG_PERSISTENT_DIRECTORY	= "PersistentDirectory"; | ||||||
|  |  | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
| 	///############################################################# | 	///############################################################# | ||||||
| @@ -439,6 +442,16 @@ public class Common | |||||||
| 			return Environment.GetEnvironmentVariable("USERPROFILE");		 | 			return Environment.GetEnvironmentVariable("USERPROFILE");		 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	internal static string GetUserPersistentDir(Config config) | ||||||
|  | 	{ | ||||||
|  | 		return (config.GetConfigSetting(CONFIG_PERSISTENT_DIRECTORY, GetUserHomeDir())); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	internal static void SetUserPersistentDir(Config config, string sNewDirectory) | ||||||
|  | 	{ | ||||||
|  | 		config.SetConfigSetting(CONFIG_PERSISTENT_DIRECTORY, sNewDirectory); | ||||||
|  | 		config.WriteConfig(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										78
									
								
								CASA/gui/DbgFileChooser.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								CASA/gui/DbgFileChooser.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | |||||||
|  | using System; | ||||||
|  |  | ||||||
|  | namespace Novell.CASA.GUI | ||||||
|  | { | ||||||
|  | 	/// <summary> | ||||||
|  | 	/// Summary description for DbgFileChooser. | ||||||
|  | 	/// </summary> | ||||||
|  | 	public class DbgFileChooser | ||||||
|  | 	{ | ||||||
|  | 		#region widgets | ||||||
|  | 		[Glade.Widget] | ||||||
|  | 		Gtk.Dialog 		dialogDebugFileChooser; | ||||||
|  |  | ||||||
|  | 		[Glade.Widget] | ||||||
|  | 		Gtk.Entry		entrySaveFile, | ||||||
|  | 						entryOpenFile, | ||||||
|  | 						entryChooseDirectory; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		#endregion | ||||||
|  |  | ||||||
|  | 		public DbgFileChooser() | ||||||
|  | 		{ | ||||||
|  |  | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public void Run() | ||||||
|  | 		{ | ||||||
|  | 			Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogDebugFileChooser", null); | ||||||
|  | 			gxmlTemp.Autoconnect (this); | ||||||
|  | 			//dialogDebugFileChooser.TransientFor = windowMain;    | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public void on_buttonSaveFile_clicked(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			FileChooser fc = new FileChooser(FileChooser.ACTION_SAVE); | ||||||
|  | 			string sFile = fc.GetFile(null, null); | ||||||
|  | 			if (sFile != null) | ||||||
|  | 			{ | ||||||
|  | 				entrySaveFile.Text = sFile; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				entrySaveFile.Text = "Null"; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public void on_buttonOpenFile_clicked(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			FileChooser fc = new FileChooser(FileChooser.ACTION_OPEN); | ||||||
|  | 			string sFile = fc.GetFile(null, null); | ||||||
|  | 			if (sFile != null) | ||||||
|  | 			{ | ||||||
|  | 				entryOpenFile.Text = sFile; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				entryOpenFile.Text = "Null"; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		public void on_buttonChooseDirectory_clicked(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			FileChooser fc = new FileChooser(FileChooser.ACTION_CHOOSE_DIR); | ||||||
|  | 			string sFile = fc.GetFile(null, null); | ||||||
|  | 			if (sFile != null) | ||||||
|  | 			{ | ||||||
|  | 				entryChooseDirectory.Text = sFile; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				entryChooseDirectory.Text = "Null"; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -25,6 +25,7 @@ namespace Novell.CASA.GUI | |||||||
| 		private int m_iAction = 1; | 		private int m_iAction = 1; | ||||||
| 		public const int ACTION_OPEN = 1; | 		public const int ACTION_OPEN = 1; | ||||||
| 		public const int ACTION_SAVE = 2; | 		public const int ACTION_SAVE = 2; | ||||||
|  | 		public const int ACTION_CHOOSE_DIR = 3; | ||||||
|  |  | ||||||
| 		Thread tChooserThread = null;		 | 		Thread tChooserThread = null;		 | ||||||
| 				 | 				 | ||||||
| @@ -72,6 +73,8 @@ namespace Novell.CASA.GUI | |||||||
| 			else | 			else | ||||||
| 				m_currentDirectory = dir;			 | 				m_currentDirectory = dir;			 | ||||||
|  |  | ||||||
|  | 			if (!m_currentDirectory.EndsWith(m_pathSeparator)) | ||||||
|  | 				m_currentDirectory = m_currentDirectory + m_pathSeparator; | ||||||
| 			 | 			 | ||||||
| 			//if (m_currentDirectory.EndsWith(m_pathSeparator)) | 			//if (m_currentDirectory.EndsWith(m_pathSeparator)) | ||||||
| 			//	m_currentDirectory = m_currentDirectory.Substring(0, m_currentDirectory.Length - 1); | 			//	m_currentDirectory = m_currentDirectory.Substring(0, m_currentDirectory.Length - 1); | ||||||
| @@ -92,16 +95,18 @@ namespace Novell.CASA.GUI | |||||||
| 				m_hintFile = sHintFile; | 				m_hintFile = sHintFile; | ||||||
| 			} | 			} | ||||||
| 			 | 			 | ||||||
| 			DoWork(); | 			DisplayChooser(); | ||||||
|  |  | ||||||
| 			if (m_sFileSelected != null) | 			if (m_sFileSelected != null) | ||||||
| 				return m_currentDirectory + m_pathSeparator +  m_sFileSelected;			 | 			{ | ||||||
|  | 				return m_currentDirectory + m_sFileSelected;			 | ||||||
|  | 			} | ||||||
| 			else | 			else | ||||||
| 				return null; | 				return null; | ||||||
|  |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		private void DoWork() | 		private void DisplayChooser() | ||||||
| 		{ | 		{ | ||||||
| 			 | 			 | ||||||
| 			// display chooser | 			// display chooser | ||||||
| @@ -140,7 +145,13 @@ namespace Novell.CASA.GUI | |||||||
| 			Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogFileChooser", null); | 			Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogFileChooser", null); | ||||||
| 			gxmlTemp.Autoconnect(this);						 | 			gxmlTemp.Autoconnect(this);						 | ||||||
|  |  | ||||||
| 			if (m_iAction == ACTION_OPEN) | 			if (m_iAction == ACTION_CHOOSE_DIR) | ||||||
|  | 			{ | ||||||
|  | 				entrySelectedFile.Visible = false; | ||||||
|  | 				dialogFileChooser.Title = "Select a directory"; | ||||||
|  |  | ||||||
|  | 			} | ||||||
|  | 			else if (m_iAction == ACTION_OPEN) | ||||||
| 			{ | 			{ | ||||||
| 				buttonNewFolder.Visible = false; | 				buttonNewFolder.Visible = false; | ||||||
| 				entrySelectedFile.Sensitive = false; | 				entrySelectedFile.Sensitive = false; | ||||||
| @@ -208,12 +219,15 @@ namespace Novell.CASA.GUI | |||||||
| 				ts.AppendValues(new Gdk.Pixbuf (Common.IMAGE_PATH + "folder.png"), dirs[i].Name, "", "File folder"); | 				ts.AppendValues(new Gdk.Pixbuf (Common.IMAGE_PATH + "folder.png"), dirs[i].Name, "", "File folder"); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			if (m_iAction < FileChooser.ACTION_CHOOSE_DIR) | ||||||
|  | 			{ | ||||||
| 				FileInfo[] files = dirInfo.GetFiles(); | 				FileInfo[] files = dirInfo.GetFiles(); | ||||||
| 				for (int i=0; i<files.Length; i++) | 				for (int i=0; i<files.Length; i++) | ||||||
| 				{								 | 				{								 | ||||||
| 					ts.AppendValues(new Gdk.Pixbuf (Common.IMAGE_PATH + "CASA_16.png"), files[i].Name, (files[i].Length/1000).ToString() + " KB", files[i].LastWriteTime.ToShortDateString() + " " + files[i].LastWriteTime.ToShortTimeString()); | 					ts.AppendValues(new Gdk.Pixbuf (Common.IMAGE_PATH + "CASA_16.png"), files[i].Name, (files[i].Length/1000).ToString() + " KB", files[i].LastWriteTime.ToShortDateString() + " " + files[i].LastWriteTime.ToShortTimeString()); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		private int GetItemCount(string sDir) | 		private int GetItemCount(string sDir) | ||||||
| 		{ | 		{ | ||||||
| @@ -235,8 +249,8 @@ namespace Novell.CASA.GUI | |||||||
| 			string selected; | 			string selected; | ||||||
| 		 | 		 | ||||||
| 			// trim any trailing \ | 			// trim any trailing \ | ||||||
| 			if (m_currentDirectory.EndsWith(m_pathSeparator)) | 			//if (m_currentDirectory.EndsWith(m_pathSeparator)) | ||||||
| 				m_currentDirectory = m_currentDirectory.Substring(0, m_currentDirectory.Length - 1); | 			//	m_currentDirectory = m_currentDirectory.Substring(0, m_currentDirectory.Length - 1); | ||||||
|  |  | ||||||
|  |  | ||||||
| 			try | 			try | ||||||
| @@ -246,7 +260,7 @@ namespace Novell.CASA.GUI | |||||||
| 					//selected = (string)   model.GetValue(iter, 1); | 					//selected = (string)   model.GetValue(iter, 1); | ||||||
| 					selected = entrySelectedFile.Text; | 					selected = entrySelectedFile.Text; | ||||||
| 										 | 										 | ||||||
| 					if (Directory.Exists(m_currentDirectory + m_pathSeparator + selected)) | 					if (Directory.Exists(m_currentDirectory + selected)) | ||||||
| 					{ | 					{ | ||||||
| 						// if we are at root | 						// if we are at root | ||||||
| 						if (m_currentDirectory.Equals("/")) | 						if (m_currentDirectory.Equals("/")) | ||||||
| @@ -255,11 +269,12 @@ namespace Novell.CASA.GUI | |||||||
| 						} | 						} | ||||||
| 						else | 						else | ||||||
| 						{ | 						{ | ||||||
| 							SetCurrentDirectory(m_currentDirectory + m_pathSeparator + selected); | 							SetCurrentDirectory(m_currentDirectory + selected); | ||||||
| 						} | 						} | ||||||
|  |  | ||||||
| 						// clear current view | 						// clear current view | ||||||
| 						ts.Clear(); | 						ts.Clear(); | ||||||
|  | 						entrySelectedFile.Text = ""; | ||||||
| 						DisplayFileListing(); | 						DisplayFileListing(); | ||||||
| 					} | 					} | ||||||
| 					else | 					else | ||||||
| @@ -305,9 +320,24 @@ namespace Novell.CASA.GUI | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		public void on_btnOkFileChooser_clicked(object obj, EventArgs args) | 		public void on_btnOkFileChooser_clicked(object obj, EventArgs args) | ||||||
|  | 		{ | ||||||
|  | 			if (m_iAction == ACTION_CHOOSE_DIR) | ||||||
|  | 			{	 | ||||||
|  | 				// set directory selected | ||||||
|  | 				if ((entrySelectedFile.Text != null) && (entrySelectedFile.Text.Length > 0)) | ||||||
|  | 					m_sFileSelected = entrySelectedFile.Text + m_pathSeparator; | ||||||
|  | 				else | ||||||
|  | 					m_sFileSelected = ""; | ||||||
|  |  | ||||||
|  | 				// destroy dialog | ||||||
|  | 				dialogFileChooser.Destroy(); | ||||||
|  | 				m_bFileChoosing = false; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
| 			{ | 			{ | ||||||
| 				ProcessSelection(); | 				ProcessSelection(); | ||||||
| 			} | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
| 		public void on_btnCancelFileChooser_clicked(object obj, EventArgs args) | 		public void on_btnCancelFileChooser_clicked(object obj, EventArgs args) | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ | |||||||
| 			  <property name="use_underline">True</property> | 			  <property name="use_underline">True</property> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3935"> | 			    <widget class="GtkImage" id="image3986"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-new</property> | 			      <property name="stock">gtk-new</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -78,7 +78,7 @@ | |||||||
| 				  <signal name="activate" handler="OnNewSecretActivated" last_modification_time="Tue, 27 Sep 2005 06:02:26 GMT"/> | 				  <signal name="activate" handler="OnNewSecretActivated" last_modification_time="Tue, 27 Sep 2005 06:02:26 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3936"> | 				    <widget class="GtkImage" id="image3987"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-new</property> | 				      <property name="stock">gtk-new</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -99,7 +99,7 @@ | |||||||
| 				  <signal name="activate" handler="OnNewKeyActivated" last_modification_time="Tue, 27 Sep 2005 06:02:36 GMT"/> | 				  <signal name="activate" handler="OnNewKeyActivated" last_modification_time="Tue, 27 Sep 2005 06:02:36 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3937"> | 				    <widget class="GtkImage" id="image3988"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-new</property> | 				      <property name="stock">gtk-new</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -125,7 +125,7 @@ | |||||||
| 			  <accelerator key="F5" modifiers="0" signal="activate"/> | 			  <accelerator key="F5" modifiers="0" signal="activate"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3938"> | 			    <widget class="GtkImage" id="image3989"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-refresh</property> | 			      <property name="stock">gtk-refresh</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -152,7 +152,7 @@ | |||||||
| 			  <signal name="activate" handler="OnLockMiCASASecrets" last_modification_time="Mon, 10 Oct 2005 19:51:54 GMT"/> | 			  <signal name="activate" handler="OnLockMiCASASecrets" last_modification_time="Mon, 10 Oct 2005 19:51:54 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3939"> | 			    <widget class="GtkImage" id="image3990"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-dialog-authentication</property> | 			      <property name="stock">gtk-dialog-authentication</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -173,7 +173,7 @@ | |||||||
| 			  <signal name="activate" handler="OnUnLockMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> | 			  <signal name="activate" handler="OnUnLockMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3940"> | 			    <widget class="GtkImage" id="image3991"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-open</property> | 			      <property name="stock">gtk-open</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -194,7 +194,7 @@ | |||||||
| 			  <signal name="activate" handler="OnDestroyMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> | 			  <signal name="activate" handler="OnDestroyMiCASASecrets" last_modification_time="Tue, 11 Oct 2005 20:12:35 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3941"> | 			    <widget class="GtkImage" id="image3992"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-delete</property> | 			      <property name="stock">gtk-delete</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -221,7 +221,7 @@ | |||||||
| 			  <signal name="activate" handler="on_exportSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/> | 			  <signal name="activate" handler="on_exportSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3942"> | 			    <widget class="GtkImage" id="image3993"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-floppy</property> | 			      <property name="stock">gtk-floppy</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -242,7 +242,7 @@ | |||||||
| 			  <signal name="activate" handler="on_importSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/> | 			  <signal name="activate" handler="on_importSecrets_activate" last_modification_time="Mon, 07 Aug 2006 19:38:42 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3943"> | 			    <widget class="GtkImage" id="image3994"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-open</property> | 			      <property name="stock">gtk-open</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -270,7 +270,7 @@ | |||||||
| 			  <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> | 			  <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3944"> | 			    <widget class="GtkImage" id="image3995"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-quit</property> | 			      <property name="stock">gtk-quit</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -306,7 +306,7 @@ | |||||||
| 			  <accelerator key="F2" modifiers="0" signal="activate"/> | 			  <accelerator key="F2" modifiers="0" signal="activate"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3945"> | 			    <widget class="GtkImage" id="image3996"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-zoom-fit</property> | 			      <property name="stock">gtk-zoom-fit</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -327,7 +327,7 @@ | |||||||
| 			  <signal name="activate" handler="LinkKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> | 			  <signal name="activate" handler="LinkKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3946"> | 			    <widget class="GtkImage" id="image3997"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-jump-to</property> | 			      <property name="stock">gtk-jump-to</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -348,7 +348,7 @@ | |||||||
| 			  <signal name="activate" handler="CopyKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> | 			  <signal name="activate" handler="CopyKeyValue" last_modification_time="Fri, 19 Aug 2005 06:23:15 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3947"> | 			    <widget class="GtkImage" id="image3998"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-copy</property> | 			      <property name="stock">gtk-copy</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -376,7 +376,7 @@ | |||||||
| 			  <accelerator key="Delete" modifiers="0" signal="activate"/> | 			  <accelerator key="Delete" modifiers="0" signal="activate"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3948"> | 			    <widget class="GtkImage" id="image3999"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-delete</property> | 			      <property name="stock">gtk-delete</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -410,7 +410,7 @@ | |||||||
| 			  <property name="use_underline">True</property> | 			  <property name="use_underline">True</property> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3949"> | 			    <widget class="GtkImage" id="image4000"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-execute</property> | 			      <property name="stock">gtk-execute</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -432,7 +432,7 @@ | |||||||
| 				  <signal name="activate" handler="on_konquerer_activate" last_modification_time="Thu, 02 Mar 2006 07:08:06 GMT"/> | 				  <signal name="activate" handler="on_konquerer_activate" last_modification_time="Thu, 02 Mar 2006 07:08:06 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3950"> | 				    <widget class="GtkImage" id="image4001"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-execute</property> | 				      <property name="stock">gtk-execute</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -453,7 +453,7 @@ | |||||||
| 				  <signal name="activate" handler="on_kopete_activate" last_modification_time="Thu, 02 Mar 2006 07:08:44 GMT"/> | 				  <signal name="activate" handler="on_kopete_activate" last_modification_time="Thu, 02 Mar 2006 07:08:44 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3951"> | 				    <widget class="GtkImage" id="image4002"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-execute</property> | 				      <property name="stock">gtk-execute</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -474,7 +474,7 @@ | |||||||
| 				  <signal name="activate" handler="on_networkmanager_activate" last_modification_time="Thu, 02 Mar 2006 07:07:54 GMT"/> | 				  <signal name="activate" handler="on_networkmanager_activate" last_modification_time="Thu, 02 Mar 2006 07:07:54 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3952"> | 				    <widget class="GtkImage" id="image4003"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-execute</property> | 				      <property name="stock">gtk-execute</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -495,7 +495,7 @@ | |||||||
| 				  <signal name="activate" handler="on_gaim_activate" last_modification_time="Thu, 02 Mar 2006 07:07:29 GMT"/> | 				  <signal name="activate" handler="on_gaim_activate" last_modification_time="Thu, 02 Mar 2006 07:07:29 GMT"/> | ||||||
|  |  | ||||||
| 				  <child internal-child="image"> | 				  <child internal-child="image"> | ||||||
| 				    <widget class="GtkImage" id="image3953"> | 				    <widget class="GtkImage" id="image4004"> | ||||||
| 				      <property name="visible">True</property> | 				      <property name="visible">True</property> | ||||||
| 				      <property name="stock">gtk-execute</property> | 				      <property name="stock">gtk-execute</property> | ||||||
| 				      <property name="icon_size">1</property> | 				      <property name="icon_size">1</property> | ||||||
| @@ -520,7 +520,7 @@ | |||||||
| 			  <signal name="activate" handler="ResetMasterPassword" last_modification_time="Wed, 02 Nov 2005 15:28:00 GMT"/> | 			  <signal name="activate" handler="ResetMasterPassword" last_modification_time="Wed, 02 Nov 2005 15:28:00 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3954"> | 			    <widget class="GtkImage" id="image4005"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-revert-to-saved</property> | 			      <property name="stock">gtk-revert-to-saved</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -547,7 +547,7 @@ | |||||||
| 			  <signal name="activate" handler="Preferences" last_modification_time="Fri, 19 Aug 2005 06:40:17 GMT"/> | 			  <signal name="activate" handler="Preferences" last_modification_time="Fri, 19 Aug 2005 06:40:17 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3955"> | 			    <widget class="GtkImage" id="image4006"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-preferences</property> | 			      <property name="stock">gtk-preferences</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -581,7 +581,7 @@ | |||||||
| 			  <signal name="activate" handler="on_create_sample_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:58:41 GMT"/> | 			  <signal name="activate" handler="on_create_sample_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:58:41 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3956"> | 			    <widget class="GtkImage" id="image4007"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-add</property> | 			      <property name="stock">gtk-add</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -602,7 +602,7 @@ | |||||||
| 			  <signal name="activate" handler="on_remove_test_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:59:05 GMT"/> | 			  <signal name="activate" handler="on_remove_test_secrets1_activate" last_modification_time="Fri, 30 Sep 2005 12:59:05 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3957"> | 			    <widget class="GtkImage" id="image4008"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-remove</property> | 			      <property name="stock">gtk-remove</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -621,6 +621,21 @@ | |||||||
| 			</widget> | 			</widget> | ||||||
| 		      </child> | 		      </child> | ||||||
|  |  | ||||||
|  | 		      <child> | ||||||
|  | 			<widget class="GtkMenuItem" id="debug_file_chooser"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Debug File Chooser</property> | ||||||
|  | 			  <property name="use_underline">True</property> | ||||||
|  | 			  <signal name="activate" handler="on_debug_file_chooser_activate" last_modification_time="Tue, 29 Aug 2006 15:54:42 GMT"/> | ||||||
|  | 			</widget> | ||||||
|  | 		      </child> | ||||||
|  |  | ||||||
|  | 		      <child> | ||||||
|  | 			<widget class="GtkSeparatorMenuItem" id="separator8"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			</widget> | ||||||
|  | 		      </child> | ||||||
|  |  | ||||||
| 		      <child> | 		      <child> | ||||||
| 			<widget class="GtkCheckMenuItem" id="enable_logging1"> | 			<widget class="GtkCheckMenuItem" id="enable_logging1"> | ||||||
| 			  <property name="visible">True</property> | 			  <property name="visible">True</property> | ||||||
| @@ -653,7 +668,7 @@ | |||||||
| 			  <accelerator key="F1" modifiers="0" signal="activate"/> | 			  <accelerator key="F1" modifiers="0" signal="activate"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3958"> | 			    <widget class="GtkImage" id="image4009"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-help</property> | 			      <property name="stock">gtk-help</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -680,7 +695,7 @@ | |||||||
| 			  <signal name="activate" handler="About" last_modification_time="Thu, 01 Sep 2005 15:30:28 GMT"/> | 			  <signal name="activate" handler="About" last_modification_time="Thu, 01 Sep 2005 15:30:28 GMT"/> | ||||||
|  |  | ||||||
| 			  <child internal-child="image"> | 			  <child internal-child="image"> | ||||||
| 			    <widget class="GtkImage" id="image3959"> | 			    <widget class="GtkImage" id="image4010"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="stock">gtk-dialog-info</property> | 			      <property name="stock">gtk-dialog-info</property> | ||||||
| 			      <property name="icon_size">1</property> | 			      <property name="icon_size">1</property> | ||||||
| @@ -4729,11 +4744,144 @@ prompted for the Master Password at startup.</property> | |||||||
| 	    </widget> | 	    </widget> | ||||||
| 	    <packing> | 	    <packing> | ||||||
| 	      <property name="padding">0</property> | 	      <property name="padding">0</property> | ||||||
|  | 	      <property name="expand">False</property> | ||||||
|  | 	      <property name="fill">True</property> | ||||||
|  | 	    </packing> | ||||||
|  | 	  </child> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkFrame" id="frame32"> | ||||||
|  | 	      <property name="border_width">6</property> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="label_xalign">0</property> | ||||||
|  | 	      <property name="label_yalign">0.5</property> | ||||||
|  | 	      <property name="shadow_type">GTK_SHADOW_IN</property> | ||||||
|  |  | ||||||
|  | 	      <child> | ||||||
|  | 		<widget class="GtkAlignment" id="alignment47"> | ||||||
|  | 		  <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">0</property> | ||||||
|  | 		  <property name="bottom_padding">0</property> | ||||||
|  | 		  <property name="left_padding">12</property> | ||||||
|  | 		  <property name="right_padding">0</property> | ||||||
|  |  | ||||||
|  | 		  <child> | ||||||
|  | 		    <widget class="GtkVBox" id="vbox159"> | ||||||
|  | 		      <property name="border_width">4</property> | ||||||
|  | 		      <property name="visible">True</property> | ||||||
|  | 		      <property name="homogeneous">False</property> | ||||||
|  | 		      <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 		      <child> | ||||||
|  | 			<widget class="GtkHBox" id="hbox92"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="homogeneous">False</property> | ||||||
|  | 			  <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 			  <child> | ||||||
|  | 			    <widget class="GtkHBox" id="hbox93"> | ||||||
|  | 			      <property name="visible">True</property> | ||||||
|  | 			      <property name="homogeneous">False</property> | ||||||
|  | 			      <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 			      <child> | ||||||
|  | 				<widget class="GtkEntry" id="entryStorageDirectory"> | ||||||
|  | 				  <property name="visible">True</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="padding">3</property> | ||||||
| 				  <property name="expand">True</property> | 				  <property name="expand">True</property> | ||||||
| 				  <property name="fill">True</property> | 				  <property name="fill">True</property> | ||||||
| 				</packing> | 				</packing> | ||||||
| 			      </child> | 			      </child> | ||||||
|  |  | ||||||
|  | 			      <child> | ||||||
|  | 				<widget class="GtkButton" id="buttonChooseDirectory"> | ||||||
|  | 				  <property name="visible">True</property> | ||||||
|  | 				  <property name="can_focus">True</property> | ||||||
|  | 				  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 				  <property name="focus_on_click">False</property> | ||||||
|  | 				  <signal name="clicked" handler="on_buttonChooseDirectory_clicked" last_modification_time="Mon, 28 Aug 2006 20:08:37 GMT"/> | ||||||
|  |  | ||||||
|  | 				  <child> | ||||||
|  | 				    <widget class="GtkImage" id="image3960"> | ||||||
|  | 				      <property name="visible">True</property> | ||||||
|  | 				      <property name="stock">gtk-find</property> | ||||||
|  | 				      <property name="icon_size">4</property> | ||||||
|  | 				      <property name="xalign">0.5</property> | ||||||
|  | 				      <property name="yalign">0.5</property> | ||||||
|  | 				      <property name="xpad">0</property> | ||||||
|  | 				      <property name="ypad">0</property> | ||||||
|  | 				    </widget> | ||||||
|  | 				  </child> | ||||||
|  | 				</widget> | ||||||
|  | 				<packing> | ||||||
|  | 				  <property name="padding">0</property> | ||||||
|  | 				  <property name="expand">False</property> | ||||||
|  | 				  <property name="fill">False</property> | ||||||
|  | 				</packing> | ||||||
|  | 			      </child> | ||||||
|  | 			    </widget> | ||||||
|  | 			    <packing> | ||||||
|  | 			      <property name="padding">0</property> | ||||||
|  | 			      <property name="expand">True</property> | ||||||
|  | 			      <property name="fill">True</property> | ||||||
|  | 			    </packing> | ||||||
|  | 			  </child> | ||||||
|  | 			</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="label273"> | ||||||
|  | 		  <property name="visible">True</property> | ||||||
|  | 		  <property name="label" translatable="yes"><b> miCASA Storage Location </b></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> | 	  <child> | ||||||
| 	    <widget class="GtkFrame" id="frame16"> | 	    <widget class="GtkFrame" id="frame16"> | ||||||
| 	      <property name="border_width">6</property> | 	      <property name="border_width">6</property> | ||||||
| @@ -4858,7 +5006,7 @@ prompted for the Master Password at startup.</property> | |||||||
| 	    </widget> | 	    </widget> | ||||||
| 	    <packing> | 	    <packing> | ||||||
| 	      <property name="padding">0</property> | 	      <property name="padding">0</property> | ||||||
| 	      <property name="expand">True</property> | 	      <property name="expand">False</property> | ||||||
| 	      <property name="fill">True</property> | 	      <property name="fill">True</property> | ||||||
| 	    </packing> | 	    </packing> | ||||||
| 	  </child> | 	  </child> | ||||||
| @@ -12999,4 +13147,449 @@ to encrypt this file</property> | |||||||
|   </child> |   </child> | ||||||
| </widget> | </widget> | ||||||
|  |  | ||||||
|  | <widget class="GtkDialog" id="dialogDebugFileChooser"> | ||||||
|  |   <property name="visible">True</property> | ||||||
|  |   <property name="title" translatable="yes">CASA - Debug File chooser</property> | ||||||
|  |   <property name="type">GTK_WINDOW_TOPLEVEL</property> | ||||||
|  |   <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> | ||||||
|  |   <property name="modal">True</property> | ||||||
|  |   <property name="resizable">True</property> | ||||||
|  |   <property name="destroy_with_parent">True</property> | ||||||
|  |   <property name="icon">CASAicons.ico</property> | ||||||
|  |   <property name="decorated">True</property> | ||||||
|  |   <property name="skip_taskbar_hint">False</property> | ||||||
|  |   <property name="skip_pager_hint">False</property> | ||||||
|  |   <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> | ||||||
|  |   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> | ||||||
|  |   <property name="focus_on_map">True</property> | ||||||
|  |   <property name="urgency_hint">False</property> | ||||||
|  |   <property name="has_separator">True</property> | ||||||
|  |  | ||||||
|  |   <child internal-child="vbox"> | ||||||
|  |     <widget class="GtkVBox" id="vbox160"> | ||||||
|  |       <property name="visible">True</property> | ||||||
|  |       <property name="homogeneous">False</property> | ||||||
|  |       <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  |       <child internal-child="action_area"> | ||||||
|  | 	<widget class="GtkHButtonBox" id="hbuttonbox25"> | ||||||
|  | 	  <property name="visible">True</property> | ||||||
|  | 	  <property name="layout_style">GTK_BUTTONBOX_END</property> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkButton" id="button66"> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="can_default">True</property> | ||||||
|  | 	      <property name="can_focus">True</property> | ||||||
|  | 	      <property name="label">gtk-help</property> | ||||||
|  | 	      <property name="use_stock">True</property> | ||||||
|  | 	      <property name="relief">GTK_RELIEF_NONE</property> | ||||||
|  | 	      <property name="focus_on_click">True</property> | ||||||
|  | 	      <property name="response_id">-11</property> | ||||||
|  | 	    </widget> | ||||||
|  | 	  </child> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkButton" id="button67"> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="can_default">True</property> | ||||||
|  | 	      <property name="can_focus">True</property> | ||||||
|  | 	      <property name="label">gtk-close</property> | ||||||
|  | 	      <property name="use_stock">True</property> | ||||||
|  | 	      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 	      <property name="focus_on_click">True</property> | ||||||
|  | 	      <property name="response_id">-7</property> | ||||||
|  | 	    </widget> | ||||||
|  | 	  </child> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkButton" id="button68"> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="can_default">True</property> | ||||||
|  | 	      <property name="can_focus">True</property> | ||||||
|  | 	      <property name="label">gtk-ok</property> | ||||||
|  | 	      <property name="use_stock">True</property> | ||||||
|  | 	      <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 	      <property name="focus_on_click">True</property> | ||||||
|  | 	      <property name="response_id">-5</property> | ||||||
|  | 	    </widget> | ||||||
|  | 	  </child> | ||||||
|  | 	</widget> | ||||||
|  | 	<packing> | ||||||
|  | 	  <property name="padding">0</property> | ||||||
|  | 	  <property name="expand">False</property> | ||||||
|  | 	  <property name="fill">True</property> | ||||||
|  | 	  <property name="pack_type">GTK_PACK_END</property> | ||||||
|  | 	</packing> | ||||||
|  |       </child> | ||||||
|  |  | ||||||
|  |       <child> | ||||||
|  | 	<widget class="GtkVBox" id="vbox161"> | ||||||
|  | 	  <property name="visible">True</property> | ||||||
|  | 	  <property name="homogeneous">False</property> | ||||||
|  | 	  <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkHBox" id="hbox94"> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="homogeneous">False</property> | ||||||
|  | 	      <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 	      <child> | ||||||
|  | 		<widget class="GtkVBox" id="vbox162"> | ||||||
|  | 		  <property name="visible">True</property> | ||||||
|  | 		  <property name="homogeneous">False</property> | ||||||
|  | 		  <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 		  <child> | ||||||
|  | 		    <widget class="GtkImage" id="image3961"> | ||||||
|  | 		      <property name="visible">True</property> | ||||||
|  | 		      <property name="stock">gtk-dialog-authentication</property> | ||||||
|  | 		      <property name="icon_size">6</property> | ||||||
|  | 		      <property name="xalign">0.5</property> | ||||||
|  | 		      <property name="yalign">0.5</property> | ||||||
|  | 		      <property name="xpad">0</property> | ||||||
|  | 		      <property name="ypad">0</property> | ||||||
|  | 		    </widget> | ||||||
|  | 		    <packing> | ||||||
|  | 		      <property name="padding">4</property> | ||||||
|  | 		      <property name="expand">False</property> | ||||||
|  | 		      <property name="fill">True</property> | ||||||
|  | 		    </packing> | ||||||
|  | 		  </child> | ||||||
|  | 		</widget> | ||||||
|  | 		<packing> | ||||||
|  | 		  <property name="padding">4</property> | ||||||
|  | 		  <property name="expand">True</property> | ||||||
|  | 		  <property name="fill">True</property> | ||||||
|  | 		</packing> | ||||||
|  | 	      </child> | ||||||
|  |  | ||||||
|  | 	      <child> | ||||||
|  | 		<widget class="GtkVBox" id="vbox163"> | ||||||
|  | 		  <property name="visible">True</property> | ||||||
|  | 		  <property name="homogeneous">False</property> | ||||||
|  | 		  <property name="spacing">0</property> | ||||||
|  |  | ||||||
|  | 		  <child> | ||||||
|  | 		    <widget class="GtkLabel" id="label274"> | ||||||
|  | 		      <property name="visible">True</property> | ||||||
|  | 		      <property name="label" translatable="yes"><b>Debug file Chooser</b></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</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="padding">4</property> | ||||||
|  | 		      <property name="expand">False</property> | ||||||
|  | 		      <property name="fill">False</property> | ||||||
|  | 		    </packing> | ||||||
|  | 		  </child> | ||||||
|  |  | ||||||
|  | 		  <child> | ||||||
|  | 		    <widget class="GtkLabel" id="label275"> | ||||||
|  | 		      <property name="visible">True</property> | ||||||
|  | 		      <property name="label" translatable="yes">This will be removed</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="padding">4</property> | ||||||
|  | 		      <property name="expand">False</property> | ||||||
|  | 		      <property name="fill">False</property> | ||||||
|  | 		    </packing> | ||||||
|  | 		  </child> | ||||||
|  | 		</widget> | ||||||
|  | 		<packing> | ||||||
|  | 		  <property name="padding">0</property> | ||||||
|  | 		  <property name="expand">True</property> | ||||||
|  | 		  <property name="fill">True</property> | ||||||
|  | 		</packing> | ||||||
|  | 	      </child> | ||||||
|  | 	    </widget> | ||||||
|  | 	    <packing> | ||||||
|  | 	      <property name="padding">0</property> | ||||||
|  | 	      <property name="expand">True</property> | ||||||
|  | 	      <property name="fill">True</property> | ||||||
|  | 	    </packing> | ||||||
|  | 	  </child> | ||||||
|  |  | ||||||
|  | 	  <child> | ||||||
|  | 	    <widget class="GtkFrame" id="frame33"> | ||||||
|  | 	      <property name="border_width">6</property> | ||||||
|  | 	      <property name="visible">True</property> | ||||||
|  | 	      <property name="label_xalign">0</property> | ||||||
|  | 	      <property name="label_yalign">0.5</property> | ||||||
|  | 	      <property name="shadow_type">GTK_SHADOW_IN</property> | ||||||
|  |  | ||||||
|  | 	      <child> | ||||||
|  | 		<widget class="GtkAlignment" id="alignment48"> | ||||||
|  | 		  <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">0</property> | ||||||
|  | 		  <property name="bottom_padding">0</property> | ||||||
|  | 		  <property name="left_padding">12</property> | ||||||
|  | 		  <property name="right_padding">0</property> | ||||||
|  |  | ||||||
|  | 		  <child> | ||||||
|  | 		    <widget class="GtkTable" id="table33"> | ||||||
|  | 		      <property name="visible">True</property> | ||||||
|  | 		      <property name="n_rows">3</property> | ||||||
|  | 		      <property name="n_columns">3</property> | ||||||
|  | 		      <property name="homogeneous">False</property> | ||||||
|  | 		      <property name="row_spacing">0</property> | ||||||
|  | 		      <property name="column_spacing">0</property> | ||||||
|  |  | ||||||
|  | 		      <child> | ||||||
|  | 			<widget class="GtkLabel" id="label276"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Save File</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="GtkLabel" id="label277"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Open File</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="GtkLabel" id="label278"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Choose Directory</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="entrySaveFile"> | ||||||
|  | 			  <property name="visible">True</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="GtkEntry" id="entryOpenFile"> | ||||||
|  | 			  <property name="visible">True</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="GtkEntry" id="entryChooseDirectory"> | ||||||
|  | 			  <property name="visible">True</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="GtkButton" id="buttonSaveFile"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="can_focus">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Save As...</property> | ||||||
|  | 			  <property name="use_underline">True</property> | ||||||
|  | 			  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 			  <property name="focus_on_click">True</property> | ||||||
|  | 			  <signal name="clicked" handler="on_buttonSaveFile_clicked" last_modification_time="Tue, 29 Aug 2006 15:53:20 GMT"/> | ||||||
|  | 			</widget> | ||||||
|  | 			<packing> | ||||||
|  | 			  <property name="left_attach">2</property> | ||||||
|  | 			  <property name="right_attach">3</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="GtkButton" id="buttonOpenFile"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="can_focus">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Open file</property> | ||||||
|  | 			  <property name="use_underline">True</property> | ||||||
|  | 			  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 			  <property name="focus_on_click">True</property> | ||||||
|  | 			  <signal name="clicked" handler="on_buttonOpenFile_clicked" last_modification_time="Tue, 29 Aug 2006 15:53:35 GMT"/> | ||||||
|  | 			</widget> | ||||||
|  | 			<packing> | ||||||
|  | 			  <property name="left_attach">2</property> | ||||||
|  | 			  <property name="right_attach">3</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="GtkButton" id="buttonChooseDirectory"> | ||||||
|  | 			  <property name="visible">True</property> | ||||||
|  | 			  <property name="can_focus">True</property> | ||||||
|  | 			  <property name="label" translatable="yes">Choose Dir</property> | ||||||
|  | 			  <property name="use_underline">True</property> | ||||||
|  | 			  <property name="relief">GTK_RELIEF_NORMAL</property> | ||||||
|  | 			  <property name="focus_on_click">True</property> | ||||||
|  | 			  <signal name="clicked" handler="on_buttonChooseDirectory_clicked" last_modification_time="Tue, 29 Aug 2006 15:53:42 GMT"/> | ||||||
|  | 			</widget> | ||||||
|  | 			<packing> | ||||||
|  | 			  <property name="left_attach">2</property> | ||||||
|  | 			  <property name="right_attach">3</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> | ||||||
|  | 		    </widget> | ||||||
|  | 		  </child> | ||||||
|  | 		</widget> | ||||||
|  | 	      </child> | ||||||
|  | 	    </widget> | ||||||
|  | 	    <packing> | ||||||
|  | 	      <property name="padding">0</property> | ||||||
|  | 	      <property name="expand">True</property> | ||||||
|  | 	      <property name="fill">True</property> | ||||||
|  | 	    </packing> | ||||||
|  | 	  </child> | ||||||
|  | 	</widget> | ||||||
|  | 	<packing> | ||||||
|  | 	  <property name="padding">0</property> | ||||||
|  | 	  <property name="expand">True</property> | ||||||
|  | 	  <property name="fill">True</property> | ||||||
|  | 	</packing> | ||||||
|  |       </child> | ||||||
|  |     </widget> | ||||||
|  |   </child> | ||||||
|  | </widget> | ||||||
|  |  | ||||||
| </glade-interface> | </glade-interface> | ||||||
|   | |||||||
							
								
								
									
										97
									
								
								CASA/micasad/cache/SecretStore.cs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										97
									
								
								CASA/micasad/cache/SecretStore.cs
									
									
									
									
										vendored
									
									
								
							| @@ -34,6 +34,8 @@ using sscs.constants; | |||||||
| using sscs.lss; | using sscs.lss; | ||||||
| using sscs.crypto; | using sscs.crypto; | ||||||
|  |  | ||||||
|  | using Novell.CASA.CASAPolicy; | ||||||
|  |  | ||||||
| namespace sscs.cache | namespace sscs.cache | ||||||
| { | { | ||||||
|     class SecretStore |     class SecretStore | ||||||
| @@ -54,6 +56,7 @@ namespace sscs.cache | |||||||
|  |  | ||||||
|         private LocalStorage lss = null;  |         private LocalStorage lss = null;  | ||||||
|         bool bIsStorePersistent = false;  |         bool bIsStorePersistent = false;  | ||||||
|  | 		string m_persistenceDirectory = null; | ||||||
| 		 | 		 | ||||||
| 		private MPFileWatcher mpWatcher = null; | 		private MPFileWatcher mpWatcher = null; | ||||||
|  |  | ||||||
| @@ -86,17 +89,18 @@ namespace sscs.cache | |||||||
|              |              | ||||||
|             ssMutex = new Mutex();   |             ssMutex = new Mutex();   | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 			// start a MPFileWatcher if necessary | 			// start a MPFileWatcher if necessary | ||||||
| 			if (mpWatcher == null) | 			if (mpWatcher == null) | ||||||
| 			{ | 			{ | ||||||
| 				// make sure HomeDirectory exists | 				// make sure Persistence Directory exists | ||||||
| 				String sHomeDir = GetUserHomeDirectory(); | 				String sPersistentDir = GetPersistenceDirectory(); | ||||||
| 				if (sHomeDir != null && sHomeDir.Length > 0) | 				if (sPersistentDir != null && sPersistentDir.Length > 0) | ||||||
| 				{ | 				{ | ||||||
| 					mpWatcher = new MPFileWatcher(GetUserHomeDirectory(), ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE); | 					mpWatcher = new MPFileWatcher(GetPersistenceDirectory(), ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         internal bool IsStorePersistent() |         internal bool IsStorePersistent() | ||||||
| @@ -177,17 +181,19 @@ namespace sscs.cache | |||||||
|         { |         { | ||||||
| 			CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - Called"); | 			CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - Called"); | ||||||
|  |  | ||||||
| 			// make sure we have a user home directory | 			// make sure we have a Persistence Directory			 | ||||||
| 			if (GetUserHomeDirectory() == null || GetUserHomeDirectory().Length < 1) | 			if (GetPersistenceDirectory() == null || GetPersistenceDirectory().Length < 1) | ||||||
| 			{				 | 			{				 | ||||||
| 				CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - No Home directory yet"); | 				CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - No Peristence directory yet"); | ||||||
|  | 				CSSSLogger.DbgLog("Directory: [" + GetPersistenceDirectory() + "]"); | ||||||
| 				return false; | 				return false; | ||||||
| 			} | 			} | ||||||
| 			else | 			else | ||||||
| 			{ | 			{ | ||||||
| 				if (!Directory.Exists(GetUserHomeDirectory())) | 				if (!Directory.Exists(GetPersistenceDirectory())) | ||||||
| 				{ | 				{ | ||||||
| 					CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - Home directory is not created yet"); | 					CSSSLogger.DbgLog("StartPersistenceByDesktopPasswd - Peristence directory is not created yet"); | ||||||
|  | 					CSSSLogger.DbgLog("Directory: " + GetPersistenceDirectory() + "]"); | ||||||
| 					return false; | 					return false; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| @@ -777,33 +783,82 @@ namespace sscs.cache | |||||||
|             return user.GetUserHomeDir(); |             return user.GetUserHomeDir(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | 		internal string GetPersistenceDirectory() | ||||||
|  | 		{ | ||||||
|  | 			if (m_persistenceDirectory != null) | ||||||
|  | 			{ | ||||||
|  | 				if (Directory.Exists(m_persistenceDirectory)) | ||||||
|  | 					return m_persistenceDirectory;	 | ||||||
|  | 				else | ||||||
|  | 					return null; | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				// the user might have set a different one | ||||||
|  | 				// load the policy file and check. | ||||||
|  | 				UIPol uiPolicy = (UIPol)ICASAPol.GetPolicy(CASAPolType.UI_POL, GetUserHomeDirectory()); | ||||||
|  | 				string sDir = uiPolicy.GetConfigSetting("PersistentDirectory"); | ||||||
|  | 				if ((sDir != null) && (sDir.Length > 0)) | ||||||
|  | 				{ | ||||||
|  | 					m_persistenceDirectory = sDir; | ||||||
|  | 					return m_persistenceDirectory; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			return GetUserHomeDirectory();			 | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		internal bool SetPeristenceDirectory(string sNewDirectory) | ||||||
|  | 		{			 | ||||||
|  | 			if (Directory.Exists(sNewDirectory)) | ||||||
|  | 			{								 | ||||||
|  | 				// reset the FileWatcher | ||||||
|  | 				if (mpWatcher != null) | ||||||
|  | 				{ | ||||||
|  | 					mpWatcher.pauseWatcher(); | ||||||
|  | 					mpWatcher = new MPFileWatcher(sNewDirectory, ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE); | ||||||
|  | 					mpWatcher.resumeWatcher(); | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				m_persistenceDirectory = sNewDirectory; | ||||||
|  | 				return true;								 | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
|  | 			return false; | ||||||
|  |  | ||||||
|  | 		} | ||||||
|  |  | ||||||
|         internal string GetKeyFilePath() |         internal string GetKeyFilePath() | ||||||
|         { |         { | ||||||
|             string homeDir = GetUserHomeDirectory(); |             string persistDir = GetPersistenceDirectory(); | ||||||
|             return homeDir + ConstStrings.MICASA_KEY_FILE; |             return persistDir + ConstStrings.MICASA_KEY_FILE; | ||||||
|         } |         } | ||||||
|         internal string GetPasscodeByDesktopFilePath() |         internal string GetPasscodeByDesktopFilePath() | ||||||
|         { |         { | ||||||
|             string homeDir = GetUserHomeDirectory(); |             string persistDir = GetPersistenceDirectory(); | ||||||
|             return homeDir + ConstStrings.MICASA_PASSCODE_BY_DESKTOP_FILE; |             return persistDir + ConstStrings.MICASA_PASSCODE_BY_DESKTOP_FILE; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         internal string GetPasscodeByMasterPasswdFilePath() |         internal string GetPasscodeByMasterPasswdFilePath() | ||||||
|         { |         { | ||||||
|             string homeDir = GetUserHomeDirectory(); |             string persistDir = GetPersistenceDirectory(); | ||||||
|             return homeDir + ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE; |             return persistDir + ConstStrings.MICASA_PASSCODE_BY_MASTERPASSWD_FILE; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         internal string GetPersistenceFilePath() |         internal string GetPersistenceFilePath() | ||||||
|         { |         { | ||||||
|             string homeDir = GetUserHomeDirectory(); |             string persistDir = GetPersistenceDirectory(); | ||||||
|             return homeDir + ConstStrings.MICASA_PERSISTENCE_FILE; |             return persistDir + ConstStrings.MICASA_PERSISTENCE_FILE; | ||||||
|         } |         } | ||||||
|         internal string GetValidationFilePath() |         internal string GetValidationFilePath() | ||||||
|         { |         { | ||||||
|             string homeDir = GetUserHomeDirectory(); |             string persistDir = GetPersistenceDirectory(); | ||||||
|             return homeDir + ConstStrings.MICASA_VALIDATION_FILE; |             return persistDir + ConstStrings.MICASA_VALIDATION_FILE; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 		internal byte[] GetSecrets(string sEncryptionString) | 		internal byte[] GetSecrets(string sEncryptionString) | ||||||
| 		{ | 		{ | ||||||
| 			if (lss != null) | 			if (lss != null) | ||||||
| @@ -848,5 +903,7 @@ namespace sscs.cache | |||||||
| 				lss.AddXMLSecretsToStore(doc); | 				lss.AddXMLSecretsToStore(doc); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -101,6 +101,8 @@ namespace sscs.common | |||||||
| 			try | 			try | ||||||
| 			{ | 			{ | ||||||
| 				mutex.WaitOne(); | 				mutex.WaitOne(); | ||||||
|  | 				try | ||||||
|  | 				{ | ||||||
| 					SecretStore ss = GetUserSecretStore(userId); | 					SecretStore ss = GetUserSecretStore(userId); | ||||||
| 					ss.DecrRefCount(); | 					ss.DecrRefCount(); | ||||||
| 		 | 		 | ||||||
| @@ -114,7 +116,11 @@ namespace sscs.common | |||||||
| 						ss.CommitStore(); | 						ss.CommitStore(); | ||||||
| 						sessionTable.Remove(userId); | 						sessionTable.Remove(userId); | ||||||
| 					} | 					} | ||||||
| 		 | 				} | ||||||
|  | 				catch (Exception e) | ||||||
|  | 				{ | ||||||
|  | 					CSSSLogger.DbgLog(e.ToString()); | ||||||
|  | 				}		 | ||||||
| 				mutex.ReleaseMutex(); | 				mutex.ReleaseMutex(); | ||||||
| 				return true; | 				return true; | ||||||
| 			} | 			} | ||||||
| @@ -193,7 +199,9 @@ namespace sscs.common | |||||||
| 		internal static void ListActiveUserSessions() | 		internal static void ListActiveUserSessions() | ||||||
| 		{ | 		{ | ||||||
| 			CSSSLogger.ExecutionTrace(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 			CSSSLogger.ExecutionTrace(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||||
|  | 			CSSSLogger.DbgLog("List Active Sessions"); | ||||||
| 			mutex.WaitOne(); | 			mutex.WaitOne(); | ||||||
|  | 			CSSSLogger.DbgLog("List Active Sessions2"); | ||||||
| 			IDictionaryEnumerator etor = sessionTable.GetEnumerator(); | 			IDictionaryEnumerator etor = sessionTable.GetEnumerator(); | ||||||
| 			int i = 0; | 			int i = 0; | ||||||
|          |          | ||||||
| @@ -206,7 +214,9 @@ namespace sscs.common | |||||||
| 								Console.WriteLine((((SecretStore)(etor.Value)).secretStoreName + ":" + ((SecretStore)(etor.Value)).refCount); | 								Console.WriteLine((((SecretStore)(etor.Value)).secretStoreName + ":" + ((SecretStore)(etor.Value)).refCount); | ||||||
| 				*/ | 				*/ | ||||||
| 			} | 			} | ||||||
|  | 			CSSSLogger.DbgLog("List Active Sessions3"); | ||||||
| 			mutex.ReleaseMutex(); | 			mutex.ReleaseMutex(); | ||||||
|  | 			CSSSLogger.DbgLog("List Active Sessions4"); | ||||||
| 		}  | 		}  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -98,6 +98,11 @@ | |||||||
|                     SubType = "Code" |                     SubType = "Code" | ||||||
|                     BuildAction = "Compile" |                     BuildAction = "Compile" | ||||||
|                 /> |                 /> | ||||||
|  |                 <File | ||||||
|  |                     RelPath = "common\ChangePersistentDir.cs" | ||||||
|  |                     SubType = "Code" | ||||||
|  |                     BuildAction = "Compile" | ||||||
|  |                 /> | ||||||
|                 <File |                 <File | ||||||
|                     RelPath = "common\ExportXMLSecrets.cs" |                     RelPath = "common\ExportXMLSecrets.cs" | ||||||
|                     SubType = "Code" |                     SubType = "Code" | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								CASA/micasad/lib/common/ChangePersistentDir.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								CASA/micasad/lib/common/ChangePersistentDir.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | |||||||
|  | using System; | ||||||
|  |  | ||||||
|  | namespace Novell.CASA.MiCasa.Common | ||||||
|  | { | ||||||
|  | 	/// <summary> | ||||||
|  | 	/// Summary description for ChangePersistentDir. | ||||||
|  | 	/// </summary> | ||||||
|  | 	///  | ||||||
|  | 	[Serializable] | ||||||
|  | 	public class ChangePersistentDir | ||||||
|  | 	{ | ||||||
|  | 		private string m_sOldDirectory; | ||||||
|  | 		private string m_sNewDirectory; | ||||||
|  | 		private string m_sErrorMessage = ""; | ||||||
|  |  | ||||||
|  | 		public ChangePersistentDir(string sOldDirectory, string sNewDirectory) | ||||||
|  | 		{ | ||||||
|  | 			m_sOldDirectory = sOldDirectory; | ||||||
|  | 			m_sNewDirectory = sNewDirectory; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public string GetOldDirectory() | ||||||
|  | 		{ | ||||||
|  | 			return m_sOldDirectory; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public string GetNewDirectory() | ||||||
|  | 		{ | ||||||
|  | 			return m_sNewDirectory; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public void SetErrorMessage(string sMessage) | ||||||
|  | 		{ | ||||||
|  | 			m_sErrorMessage = sMessage; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		public string GetErrorMessage() | ||||||
|  | 		{ | ||||||
|  | 			return m_sErrorMessage; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -58,6 +58,7 @@ namespace Novell.CASA.MiCasa.Communication | |||||||
| 		public const int VERB_VALIDATE_DESKTOP_PWD = 20; | 		public const int VERB_VALIDATE_DESKTOP_PWD = 20; | ||||||
| 		public const int VERB_EXPORT_SECRETS = 21; | 		public const int VERB_EXPORT_SECRETS = 21; | ||||||
| 		public const int VERB_ADD_XML_SECRETS = 22; | 		public const int VERB_ADD_XML_SECRETS = 22; | ||||||
|  | 		public const int VERB_CHANGE_PERSIST_DIR = 23; | ||||||
|  |  | ||||||
| 		public const int VERB_DUMP_LINKED_KEYS = 96; | 		public const int VERB_DUMP_LINKED_KEYS = 96; | ||||||
| 		public const int VERB_CREATE_TEST_SECRETS = 97; | 		public const int VERB_CREATE_TEST_SECRETS = 97; | ||||||
|   | |||||||
| @@ -129,6 +129,11 @@ | |||||||
|                     Project = "{57CD94A2-5B4A-40C3-8189-CB760FB78357}" |                     Project = "{57CD94A2-5B4A-40C3-8189-CB760FB78357}" | ||||||
|                     Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" |                     Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" | ||||||
|                 /> |                 /> | ||||||
|  |                 <Reference | ||||||
|  |                     Name = "Novell.CASA.CASAPolicy" | ||||||
|  |                     Project = "{636A9D7E-BFB5-4EB9-96F8-51FF85A98826}" | ||||||
|  |                     Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" | ||||||
|  |                 /> | ||||||
|             </References> |             </References> | ||||||
|         </Build> |         </Build> | ||||||
|         <Files> |         <Files> | ||||||
|   | |||||||
| @@ -227,6 +227,10 @@ namespace sscs.verbs | |||||||
| 					{ | 					{ | ||||||
| 						return DoMergeXMLSecrets(ssStore, wo); | 						return DoMergeXMLSecrets(ssStore, wo); | ||||||
| 					} | 					} | ||||||
|  | 					case MiCasaRequestReply.VERB_CHANGE_PERSIST_DIR: | ||||||
|  | 					{ | ||||||
|  | 						return DoChangePersistentDir(ssStore, wo); | ||||||
|  | 					} | ||||||
|  |  | ||||||
| 					default: | 					default: | ||||||
| 					{ | 					{ | ||||||
| @@ -239,8 +243,30 @@ namespace sscs.verbs | |||||||
| 			{ | 			{ | ||||||
| 				wo.SetError(constants.RetCodes.FAILURE, e.ToString());				 | 				wo.SetError(constants.RetCodes.FAILURE, e.ToString());				 | ||||||
| 			} | 			} | ||||||
| 			 | 			finally | ||||||
|  | 			{			 | ||||||
| 				ssStore.ResumeFileWatcher(); | 				ssStore.ResumeFileWatcher(); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			return wo; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		private WrappedObject DoChangePersistentDir(SecretStore ssStore, WrappedObject wo) | ||||||
|  | 		{ | ||||||
|  | 			ChangePersistentDir cpd = (ChangePersistentDir)wo.GetObject(); | ||||||
|  | 			string sOldDir = cpd.GetOldDirectory(); | ||||||
|  | 			string sNewDir = cpd.GetNewDirectory(); | ||||||
|  |  | ||||||
|  | 			if (ssStore.SetPeristenceDirectory(sNewDir)) | ||||||
|  | 			{ | ||||||
|  | 				cpd.SetErrorMessage("Success"); | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				cpd.SetErrorMessage("Error: Changing directory failed"); | ||||||
|  | 			} | ||||||
|  | 			 | ||||||
| 			return wo;			 | 			return wo;			 | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -287,6 +313,10 @@ namespace sscs.verbs | |||||||
| 						// do the merge now. | 						// do the merge now. | ||||||
| 						ssStore.MergeXMLSecrets(baXMLSecrets); | 						ssStore.MergeXMLSecrets(baXMLSecrets); | ||||||
| 					} | 					} | ||||||
|  |  | ||||||
|  | 					// persist em | ||||||
|  | 					ssStore.CommitStore(); | ||||||
|  |  | ||||||
| 					addSecrets.SetStatus("Success"); | 					addSecrets.SetStatus("Success"); | ||||||
| 					wo.SetError(constants.RetCodes.SUCCESS, ""); | 					wo.SetError(constants.RetCodes.SUCCESS, ""); | ||||||
| 				}		 | 				}		 | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -21,12 +21,30 @@ | |||||||
|         } |         } | ||||||
|         "Entry" |         "Entry" | ||||||
|         { |         { | ||||||
|  |         "MsmKey" = "8:_26C938668CAE46EEA3971AB786BAA45D" | ||||||
|  |         "OwnerKey" = "8:_BF2CE61978054B2DB482792974E390F0" | ||||||
|  |         "MsmSig" = "8:_UNDEFINED" | ||||||
|  |         } | ||||||
|  |         "Entry" | ||||||
|  |         { | ||||||
|         "MsmKey" = "8:_6CE0B932302E4E3783AAD1EA468ABD34" |         "MsmKey" = "8:_6CE0B932302E4E3783AAD1EA468ABD34" | ||||||
|         "OwnerKey" = "8:_UNDEFINED" |         "OwnerKey" = "8:_UNDEFINED" | ||||||
|         "MsmSig" = "8:_UNDEFINED" |         "MsmSig" = "8:_UNDEFINED" | ||||||
|         } |         } | ||||||
|         "Entry" |         "Entry" | ||||||
|         { |         { | ||||||
|  |         "MsmKey" = "8:_713FAE60EA4D44ABB1F2679555EE4BF8" | ||||||
|  |         "OwnerKey" = "8:_A6D188F9B5AF430C92D0B9606ADF4C63" | ||||||
|  |         "MsmSig" = "8:_UNDEFINED" | ||||||
|  |         } | ||||||
|  |         "Entry" | ||||||
|  |         { | ||||||
|  |         "MsmKey" = "8:_73B60A9F2922458DBF0EFCE0734B1D88" | ||||||
|  |         "OwnerKey" = "8:_98DCC664712A41B993FCD33026D06FFC" | ||||||
|  |         "MsmSig" = "8:_UNDEFINED" | ||||||
|  |         } | ||||||
|  |         "Entry" | ||||||
|  |         { | ||||||
|         "MsmKey" = "8:_93A5D480D91747B086FD13789A12978B" |         "MsmKey" = "8:_93A5D480D91747B086FD13789A12978B" | ||||||
|         "OwnerKey" = "8:_UNDEFINED" |         "OwnerKey" = "8:_UNDEFINED" | ||||||
|         "MsmSig" = "8:_UNDEFINED" |         "MsmSig" = "8:_UNDEFINED" | ||||||
| @@ -57,24 +75,6 @@ | |||||||
|         } |         } | ||||||
|         "Entry" |         "Entry" | ||||||
|         { |         { | ||||||
|         "MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A" |  | ||||||
|         "OwnerKey" = "8:_98DCC664712A41B993FCD33026D06FFC" |  | ||||||
|         "MsmSig" = "8:_UNDEFINED" |  | ||||||
|         } |  | ||||||
|         "Entry" |  | ||||||
|         { |  | ||||||
|         "MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A" |  | ||||||
|         "OwnerKey" = "8:_BF2CE61978054B2DB482792974E390F0" |  | ||||||
|         "MsmSig" = "8:_UNDEFINED" |  | ||||||
|         } |  | ||||||
|         "Entry" |  | ||||||
|         { |  | ||||||
|         "MsmKey" = "8:_EF3E9937AC8B4A898E7B80BCEA175E6A" |  | ||||||
|         "OwnerKey" = "8:_A6D188F9B5AF430C92D0B9606ADF4C63" |  | ||||||
|         "MsmSig" = "8:_UNDEFINED" |  | ||||||
|         } |  | ||||||
|         "Entry" |  | ||||||
|         { |  | ||||||
|         "MsmKey" = "8:_EF467E7BEF8E4109BAD7E2FE47508D13" |         "MsmKey" = "8:_EF467E7BEF8E4109BAD7E2FE47508D13" | ||||||
|         "OwnerKey" = "8:_UNDEFINED" |         "OwnerKey" = "8:_UNDEFINED" | ||||||
|         "MsmSig" = "8:_UNDEFINED" |         "MsmSig" = "8:_UNDEFINED" | ||||||
| @@ -307,13 +307,13 @@ | |||||||
|         { |         { | ||||||
|         "Name" = "8:Microsoft Visual Studio" |         "Name" = "8:Microsoft Visual Studio" | ||||||
|         "ProductName" = "8:CASA" |         "ProductName" = "8:CASA" | ||||||
|         "ProductCode" = "8:{970A65D5-A969-4659-B2AF-F212B518F99A}" |         "ProductCode" = "8:{01D33115-AC79-4F8F-9920-051681E05395}" | ||||||
|         "PackageCode" = "8:{1368B6D9-3ACA-446D-8E33-C207F44508D6}" |         "PackageCode" = "8:{72593D72-94A3-482B-9CDA-6AD95E4A525B}" | ||||||
|         "UpgradeCode" = "8:{DFD8B8A0-EA51-4202-831C-7CD2B90A63AE}" |         "UpgradeCode" = "8:{DFD8B8A0-EA51-4202-831C-7CD2B90A63AE}" | ||||||
|         "RestartWWWService" = "11:FALSE" |         "RestartWWWService" = "11:FALSE" | ||||||
|         "RemovePreviousVersions" = "11:TRUE" |         "RemovePreviousVersions" = "11:TRUE" | ||||||
|         "DetectNewerInstalledVersion" = "11:TRUE" |         "DetectNewerInstalledVersion" = "11:TRUE" | ||||||
|         "ProductVersion" = "8:1.7.786" |         "ProductVersion" = "8:1.7.820" | ||||||
|         "Manufacturer" = "8:Novell" |         "Manufacturer" = "8:Novell" | ||||||
|         "ARPHELPTELEPHONE" = "8:" |         "ARPHELPTELEPHONE" = "8:" | ||||||
|         "ARPHELPLINK" = "8:" |         "ARPHELPLINK" = "8:" | ||||||
| @@ -835,16 +835,35 @@ | |||||||
|         } |         } | ||||||
|         "MergeModule" |         "MergeModule" | ||||||
|         { |         { | ||||||
|             "{35A69C6E-5BA4-440D-803D-762B59A45393}:_EF3E9937AC8B4A898E7B80BCEA175E6A" |             "{35A69C6E-5BA4-440D-803D-762B59A45393}:_26C938668CAE46EEA3971AB786BAA45D" | ||||||
|             { |             { | ||||||
|             "UseDynamicProperties" = "11:TRUE" |             "UseDynamicProperties" = "11:TRUE" | ||||||
|             "IsDependency" = "11:TRUE" |             "IsDependency" = "11:TRUE" | ||||||
|             "SourcePath" = "8:dotnetfxredist_x86.msm" |             "SourcePath" = "8:dotnetfxredist_x86.msm" | ||||||
|                 "Properties" |             "LanguageId" = "3:0" | ||||||
|                 { |             "Exclude" = "11:FALSE" | ||||||
|  |             "Folder" = "8:" | ||||||
|  |             "Feature" = "8:" | ||||||
|  |             "IsolateTo" = "8:" | ||||||
|             } |             } | ||||||
|             "LanguageId" = "3:1033" |             "{35A69C6E-5BA4-440D-803D-762B59A45393}:_713FAE60EA4D44ABB1F2679555EE4BF8" | ||||||
|             "Exclude" = "11:TRUE" |             { | ||||||
|  |             "UseDynamicProperties" = "11:TRUE" | ||||||
|  |             "IsDependency" = "11:TRUE" | ||||||
|  |             "SourcePath" = "8:dotnetfxredist_x86.msm" | ||||||
|  |             "LanguageId" = "3:0" | ||||||
|  |             "Exclude" = "11:FALSE" | ||||||
|  |             "Folder" = "8:" | ||||||
|  |             "Feature" = "8:" | ||||||
|  |             "IsolateTo" = "8:" | ||||||
|  |             } | ||||||
|  |             "{35A69C6E-5BA4-440D-803D-762B59A45393}:_73B60A9F2922458DBF0EFCE0734B1D88" | ||||||
|  |             { | ||||||
|  |             "UseDynamicProperties" = "11:TRUE" | ||||||
|  |             "IsDependency" = "11:TRUE" | ||||||
|  |             "SourcePath" = "8:dotnetfxredist_x86.msm" | ||||||
|  |             "LanguageId" = "3:0" | ||||||
|  |             "Exclude" = "11:FALSE" | ||||||
|             "Folder" = "8:" |             "Folder" = "8:" | ||||||
|             "Feature" = "8:" |             "Feature" = "8:" | ||||||
|             "IsolateTo" = "8:" |             "IsolateTo" = "8:" | ||||||
|   | |||||||
| @@ -33,6 +33,16 @@ public class ICASAPol | |||||||
| { | { | ||||||
| 	static string GetPolicyFilePath() | 	static string GetPolicyFilePath() | ||||||
| 	{ | 	{ | ||||||
|  | 		return GetPolicyFilePath(null); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |     static string GetPolicyFilePath(string sUserDir) | ||||||
|  |     { | ||||||
|  | 		if (sUserDir != null) | ||||||
|  | 		{ | ||||||
|  | 			return sUserDir + XmlConsts.policyFileName; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|         try  |         try  | ||||||
|         { |         { | ||||||
|             /* There needs to be a better way to get the HOME dir, |             /* There needs to be a better way to get the HOME dir, | ||||||
| @@ -313,15 +323,21 @@ public class ICASAPol | |||||||
|         return linkKey; |         return linkKey; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | 	 | ||||||
| 	static public CASAPol GetPolicy(CASAPolType policyType) | 	static public CASAPol GetPolicy(CASAPolType policyType) | ||||||
|  | 	{ | ||||||
|  | 		return GetPolicy(policyType, null); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	static public CASAPol GetPolicy(CASAPolType policyType, string sDir) | ||||||
|     { |     { | ||||||
|         CASAPol pol = null; |         CASAPol pol = null; | ||||||
|         try |         try | ||||||
|         { |         { | ||||||
|             XmlDocument doc = new XmlDocument(); |             XmlDocument doc = new XmlDocument(); | ||||||
|             if(!File.Exists(GetPolicyFilePath())) |             if(!File.Exists(GetPolicyFilePath(sDir))) | ||||||
|                 return null; |                 return null; | ||||||
|             doc.Load(GetPolicyFilePath()); |             doc.Load(GetPolicyFilePath(sDir)); | ||||||
|             switch(policyType) |             switch(policyType) | ||||||
|             { |             { | ||||||
|                 case CASAPolType.AGGREGATION_POL: |                 case CASAPolType.AGGREGATION_POL: | ||||||
| @@ -348,7 +364,7 @@ public class ICASAPol | |||||||
|         } |         } | ||||||
|         catch(Exception e) |         catch(Exception e) | ||||||
|         { |         { | ||||||
|             //Console.WriteLine(e.ToString()); |             System.Diagnostics.Trace.WriteLine("POLICY: " + e.ToString()); | ||||||
|         } |         } | ||||||
|         return pol; |         return pol; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user