Copy feature added. Users can copy secrets from one store to another.
This commit is contained in:
parent
2589b94ba9
commit
30617fb4c2
@ -1,3 +1,10 @@
|
|||||||
|
Thu Oct 12 16:26:13 MDT 2006 - jnorman@novell.com
|
||||||
|
|
||||||
|
- Copy feature added. Users can copy secrets from one store
|
||||||
|
to another.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
Wed Oct 11 15:29:13 IST 2006 - smanojna@novell.com
|
Wed Oct 11 15:29:13 IST 2006 - smanojna@novell.com
|
||||||
|
|
||||||
- Some fixes for Distribution of Firefox Password Manager secrets.
|
- Some fixes for Distribution of Firefox Password Manager secrets.
|
||||||
|
@ -84,11 +84,13 @@ public class Common
|
|||||||
|
|
||||||
public static int MAX_STORES = 10;
|
public static int MAX_STORES = 10;
|
||||||
|
|
||||||
public static string STORENAME_MICASA = "miCASA",
|
public static string STORENAME_MICASA = "miCASA",
|
||||||
STORENAME_FIREFOX = "Firefox",
|
STORENAME_FIREFOX = "Firefox",
|
||||||
STORENAME_MOZILLA = "Mozilla",
|
STORENAME_MOZILLA = "Mozilla",
|
||||||
STORENAME_KDEWALLET = "KDE Wallet",
|
STORENAME_KDEWALLET = "KDE Wallet",
|
||||||
STORENAME_GNOMEKEYRING = "GNOME Keyring";
|
STORENAME_GNOMEKEYRING = "GNOME Keyring";
|
||||||
|
|
||||||
|
public static string[] saStoreNameList = {"miCASA", "Firefox", "Mozilla", "KDE Wallet", "GNOME Keyring"};
|
||||||
|
|
||||||
|
|
||||||
///##############################################################
|
///##############################################################
|
||||||
|
288
CASA/gui/CopySecret.cs
Normal file
288
CASA/gui/CopySecret.cs
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
using Gtk;
|
||||||
|
using Glade;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Novell.CASA.GUI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Summary description for CopySecret.
|
||||||
|
/// </summary>
|
||||||
|
public class CopySecret
|
||||||
|
{
|
||||||
|
#region Glade Widgets
|
||||||
|
|
||||||
|
[Glade.Widget]
|
||||||
|
Gtk.Dialog dialogCopySecret;
|
||||||
|
|
||||||
|
[Glade.Widget]
|
||||||
|
Gtk.CheckButton checkbuttonMiCASA,
|
||||||
|
checkbuttonFPM,
|
||||||
|
checkbuttonMPM,
|
||||||
|
checkbuttonKDE,
|
||||||
|
checkbuttonGNOME;
|
||||||
|
|
||||||
|
[Glade.Widget]
|
||||||
|
Gtk.Entry
|
||||||
|
entryMiCASA,
|
||||||
|
entryFPM,
|
||||||
|
entryMPM,
|
||||||
|
entryKDE,
|
||||||
|
entryGNOME;
|
||||||
|
|
||||||
|
[Glade.Widget]
|
||||||
|
Gtk.Label
|
||||||
|
labelMiCASA,
|
||||||
|
labelFPM,
|
||||||
|
labelMPM,
|
||||||
|
labelKDE,
|
||||||
|
labelGNOME;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private string m_sSecretID = "http://www.novell.com";
|
||||||
|
private string[] m_saKeys;
|
||||||
|
private string[] m_saValues;
|
||||||
|
|
||||||
|
public CopySecret(string sSrcSecretID, string[] saKeys, string[] saValues)
|
||||||
|
{
|
||||||
|
m_sSecretID = sSrcSecretID;
|
||||||
|
m_saKeys = saKeys;
|
||||||
|
m_saValues = saValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Show()
|
||||||
|
{
|
||||||
|
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogCopySecret", null);
|
||||||
|
gxmlTemp.Autoconnect (this);
|
||||||
|
InitDialog();
|
||||||
|
dialogCopySecret.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitDialog()
|
||||||
|
{
|
||||||
|
if (Common.IS_MICASA)
|
||||||
|
{
|
||||||
|
checkbuttonMiCASA.Visible = checkbuttonMiCASA.Sensitive = Common.IS_MICASA_AVAILABLE;
|
||||||
|
checkbuttonMiCASA.Toggled += new EventHandler(checkbuttonMiCASA_Toggled);
|
||||||
|
labelMiCASA.Visible = entryMiCASA.Visible = Common.IS_MICASA_AVAILABLE;
|
||||||
|
|
||||||
|
if (m_sSecretID.StartsWith("http:"))
|
||||||
|
entryMiCASA.Text = m_sSecretID.Substring(7);
|
||||||
|
else
|
||||||
|
entryMiCASA.Text = m_sSecretID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common.IS_FIREFOX)
|
||||||
|
{
|
||||||
|
checkbuttonFPM.Visible = checkbuttonFPM.Sensitive = Common.IS_FIREFOX_AVAILABLE;
|
||||||
|
checkbuttonFPM.Toggled += new EventHandler(checkbuttonFPM_Toggled);
|
||||||
|
labelFPM.Visible = entryFPM.Visible = Common.IS_FIREFOX_AVAILABLE;
|
||||||
|
|
||||||
|
if (!m_sSecretID.StartsWith("http:"))
|
||||||
|
entryFPM.Text = "http://"+m_sSecretID;
|
||||||
|
else
|
||||||
|
entryFPM.Text = m_sSecretID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common.IS_MOZILLA)
|
||||||
|
{
|
||||||
|
checkbuttonMPM.Visible = checkbuttonMPM.Sensitive = Common.IS_MOZILLA_AVAILABLE;
|
||||||
|
checkbuttonMPM.Toggled += new EventHandler(checkbuttonMPM_Toggled);
|
||||||
|
labelMPM.Visible = entryMPM.Visible = Common.IS_MOZILLA_AVAILABLE;
|
||||||
|
entryMPM.Text = m_sSecretID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common.IS_KDEWALLET)
|
||||||
|
{
|
||||||
|
checkbuttonKDE.Visible = checkbuttonKDE.Sensitive = Common.IS_KDEWALLET_AVAILABLE;
|
||||||
|
checkbuttonKDE.Toggled += new EventHandler(checkbuttonKDE_Toggled);
|
||||||
|
labelKDE.Visible = entryKDE.Visible = Common.IS_KDEWALLET_AVAILABLE;
|
||||||
|
entryKDE.Text = m_sSecretID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common.IS_GNOMEKEYRING)
|
||||||
|
{
|
||||||
|
checkbuttonGNOME.Visible = checkbuttonGNOME.Sensitive = Common.IS_GNOMEKEYRING_AVAILABLE;
|
||||||
|
checkbuttonGNOME.Toggled += new EventHandler(checkbuttonGNOME_Toggled);
|
||||||
|
labelGNOME.Visible = entryGNOME.Visible = Common.IS_GNOMEKEYRING_AVAILABLE;
|
||||||
|
entryGNOME.Text = m_sSecretID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void on_buttonCopyCancel_clicked(object obj, EventArgs args)
|
||||||
|
{
|
||||||
|
if (dialogCopySecret != null)
|
||||||
|
{
|
||||||
|
dialogCopySecret.Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void on_buttonCopyOK_clicked(object obj, EventArgs args)
|
||||||
|
{
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
// copy to micasa
|
||||||
|
if ((checkbuttonMiCASA.Active) && (entryMiCASA.Text.Length > 0))
|
||||||
|
{
|
||||||
|
sb.Append(DoCopy(entryMiCASA.Text, Common.STORE_MICASA));
|
||||||
|
sb.Append("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy to Firefox
|
||||||
|
if ((checkbuttonFPM.Active) && (entryFPM.Text.Length > 0))
|
||||||
|
{
|
||||||
|
sb.Append(DoCopy(entryFPM.Text, Common.STORE_FIREFOX));
|
||||||
|
sb.Append("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy to Mozilla
|
||||||
|
if ((checkbuttonMPM.Active) && (entryMPM.Text.Length > 0))
|
||||||
|
{
|
||||||
|
sb.Append(DoCopy(entryMPM.Text, Common.STORE_MOZILLA));
|
||||||
|
sb.Append("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy to kde wallet
|
||||||
|
if ((checkbuttonKDE.Active) && entryKDE.Text.Length > 0)
|
||||||
|
{
|
||||||
|
sb.Append(DoCopy(entryKDE.Text, Common.STORE_KDEWALLET));
|
||||||
|
sb.Append("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy to GNOME keyring
|
||||||
|
if ((checkbuttonGNOME.Active) && entryGNOME.Text.Length > 0)
|
||||||
|
{
|
||||||
|
sb.Append(DoCopy(entryGNOME.Text, Common.STORE_GNOMEKEYRING));
|
||||||
|
sb.Append("\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sb.Length > 0)
|
||||||
|
{
|
||||||
|
CommonGUI.DisplayMessage(Gtk.MessageType.Info, "Copy to ...\r\n" + sb.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CommonGUI.DisplayMessage(Gtk.MessageType.Info, "No stores selected");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dialogCopySecret != null)
|
||||||
|
{
|
||||||
|
dialogCopySecret.Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkbuttonMiCASA_Toggled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
entryMiCASA.Sensitive = checkbuttonMiCASA.Active;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkbuttonFPM_Toggled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
entryFPM.Sensitive = checkbuttonFPM.Active;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkbuttonMPM_Toggled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
entryMPM.Sensitive = checkbuttonMPM.Active;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkbuttonKDE_Toggled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
entryKDE.Sensitive = checkbuttonKDE.Active;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkbuttonGNOME_Toggled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
entryGNOME.Sensitive = checkbuttonGNOME.Active;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private string DoCopy(string sNewSecretName, int iTargetStore)
|
||||||
|
{
|
||||||
|
Logger.DbgLog("GUI:CopySecret.DoCopy() - BEGIN");
|
||||||
|
|
||||||
|
TreeModel model;
|
||||||
|
TreeIter iter;
|
||||||
|
|
||||||
|
TreeModel modelSecret;
|
||||||
|
TreeIter iterSecret, iterKey;
|
||||||
|
|
||||||
|
string[] NativeKeys = null,
|
||||||
|
NativeValues = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NativeKeys = new string[Common.MAX_NATIVE_ELEMENTS];
|
||||||
|
NativeValues = new string[Common.MAX_NATIVE_ELEMENTS];
|
||||||
|
NativeKeys[Common.INDEX_NATIVEINFO_FOLDERNAME] = Common.NATIVEINFO_FOLDERNAME;
|
||||||
|
NativeKeys[Common.INDEX_NATIVEINFO_TYPEID] = Common.NATIVEINFO_TYPEID;
|
||||||
|
NativeKeys[Common.INDEX_NATIVEINFO_SYNC] = Common.NATIVEINFO_SYNC;
|
||||||
|
NativeKeys[Common.INDEX_NATIVEINFO_SYNCTYPE] = Common.NATIVEINFO_SYNCTYPE;
|
||||||
|
NativeKeys[Common.INDEX_NATIVEINFO_MODIFIEDTIME] = Common.NATIVEINFO_MODIFIEDTIME;
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_FOLDERNAME] = null;
|
||||||
|
|
||||||
|
if (iTargetStore == Common.STORE_FIREFOX)
|
||||||
|
{
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_TYPEID] = "Signon";
|
||||||
|
}
|
||||||
|
else if (iTargetStore == Common.STORE_GNOMEKEYRING)
|
||||||
|
{
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_TYPEID] = "Network Password";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_TYPEID] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_SYNC] = null;
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_SYNCTYPE] = null;
|
||||||
|
NativeValues[Common.INDEX_NATIVEINFO_MODIFIEDTIME] = null;
|
||||||
|
|
||||||
|
TreeStore tsTargetSecret;
|
||||||
|
TreeView tvTargetSecret = new TreeView();
|
||||||
|
if (iTargetStore == Common.STORE_FIREFOX)
|
||||||
|
{
|
||||||
|
ArrayList arrIsPassword = new ArrayList();
|
||||||
|
for (int i=0; i<m_saKeys.Length; i++)
|
||||||
|
{
|
||||||
|
if (m_saKeys[i].ToLower().IndexOf("pass") > -1)
|
||||||
|
arrIsPassword.Add(true);
|
||||||
|
else
|
||||||
|
arrIsPassword.Add(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool[] IsPassword = (bool[])arrIsPassword.ToArray(typeof(bool));
|
||||||
|
tsTargetSecret = new TreeStore(typeof(string), typeof(string[]), typeof(string[]), typeof(string), typeof(string[]), typeof(string[]), typeof(bool[]));
|
||||||
|
iterSecret = tsTargetSecret.AppendValues(sNewSecretName, m_saKeys, m_saValues, DataEngines.AD.GetDefaultProfileName(Common.STORE_FIREFOX), NativeKeys, NativeValues, IsPassword);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsTargetSecret = new TreeStore(typeof(string), typeof(string[]), typeof(string[]), typeof(string), typeof(string[]), typeof(string[]));
|
||||||
|
iterSecret = tsTargetSecret.AppendValues(sNewSecretName, m_saKeys, m_saValues, "Default", NativeKeys, NativeValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
modelSecret = tvTargetSecret.Model = tsTargetSecret;
|
||||||
|
|
||||||
|
if( Common.STATUS_SUCCESS == StoreDataInterface.UpdateStore(iTargetStore, Common.OPERATION_ADD_SECRET, "", "", ref modelSecret, ref iterSecret) )
|
||||||
|
{
|
||||||
|
return Common.saStoreNameList[iTargetStore] + " Success";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Common.saStoreNameList[iTargetStore] + " Failed";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return (Common.saStoreNameList[iTargetStore] + " : " + e.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -222,8 +222,8 @@ public class Firefox : Store
|
|||||||
|
|
||||||
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
|
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
|
||||||
{
|
{
|
||||||
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = true;
|
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiCopy.Sensitive = true;
|
||||||
cmiLink.Sensitive = cmiCopy.Sensitive = false;
|
cmiLink.Sensitive = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1210,8 +1210,31 @@ public class Firefox : Store
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnCopyActivated(object obj, EventArgs args)
|
public void OnCopyActivated(object obj, EventArgs args)
|
||||||
{
|
{
|
||||||
|
TreeModel model;
|
||||||
|
TreeIter iter;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if( tvSecretIDFirefox.Selection.GetSelected (out model, out iter) )
|
||||||
|
{
|
||||||
|
string selected = null;
|
||||||
|
string[] saKeys, saValues;
|
||||||
|
|
||||||
|
selected = (string) model.GetValue (iter, 0);
|
||||||
|
saKeys = (string[]) model.GetValue(iter, 1);
|
||||||
|
saValues = (string[]) model.GetValue(iter, 2);
|
||||||
|
|
||||||
|
CopySecret cs = new CopySecret(selected, saKeys, saValues);
|
||||||
|
cs.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///#######################################################################
|
///#######################################################################
|
||||||
/// VALIDATE STRINGS FOR SPECIAL CHARACTERS
|
/// VALIDATE STRINGS FOR SPECIAL CHARACTERS
|
||||||
|
|
||||||
|
@ -243,7 +243,10 @@ public class GnomeKeyring : Store
|
|||||||
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
||||||
|
|
||||||
if( 0 != tvSecretIDGnomeKeyring.Selection.CountSelectedRows() )
|
if( 0 != tvSecretIDGnomeKeyring.Selection.CountSelectedRows() )
|
||||||
cmiLink.Sensitive = cmiCopy.Sensitive = false;
|
{
|
||||||
|
cmiLink.Sensitive = false;
|
||||||
|
cmiCopy.Sensitive = true;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
||||||
}
|
}
|
||||||
@ -929,6 +932,23 @@ public class GnomeKeyring : Store
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnCopyActivated(object obj, EventArgs args)
|
public void OnCopyActivated(object obj, EventArgs args)
|
||||||
{
|
{
|
||||||
|
Logger.DbgLog("GUI:GnomeKeyring.OnCopyActivated() - BEGIN");
|
||||||
|
if( 0 != tvSecretIDGnomeKeyring.Selection.CountSelectedRows() )
|
||||||
|
{
|
||||||
|
TreeModel model;
|
||||||
|
TreeIter iter;
|
||||||
|
string selected = null;
|
||||||
|
if( tvSecretIDGnomeKeyring.Selection.GetSelected (out model, out iter) )
|
||||||
|
{
|
||||||
|
selected = (string) model.GetValue (iter, 0);
|
||||||
|
string[] saKeys = (string[]) model.GetValue(iter, 1);
|
||||||
|
string[] saValues = (string[]) model.GetValue(iter, 2);
|
||||||
|
|
||||||
|
CopySecret cs = new CopySecret(selected, saKeys, saValues);
|
||||||
|
cs.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logger.DbgLog("GUI:GnomeKeyring.OnCopyActivated() - END");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,10 @@ public class KdeWallet : Store
|
|||||||
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
||||||
|
|
||||||
if( 0 != tvSecretIDKdeWallet.Selection.CountSelectedRows() )
|
if( 0 != tvSecretIDKdeWallet.Selection.CountSelectedRows() )
|
||||||
cmiLink.Sensitive = cmiCopy.Sensitive = false;
|
{
|
||||||
|
cmiLink.Sensitive = false;
|
||||||
|
cmiCopy.Sensitive = true;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
||||||
}
|
}
|
||||||
@ -926,7 +929,23 @@ public class KdeWallet : Store
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnCopyActivated(object obj, EventArgs args)
|
public void OnCopyActivated(object obj, EventArgs args)
|
||||||
{
|
{
|
||||||
|
Logger.DbgLog("GUI:KdeWallet.OnCopyActivated() - BEGIN");
|
||||||
|
if( 0 != tvSecretIDKdeWallet.Selection.CountSelectedRows() )
|
||||||
|
{
|
||||||
|
TreeModel model;
|
||||||
|
TreeIter iter;
|
||||||
|
string selected = null;
|
||||||
|
if( tvSecretIDKdeWallet.Selection.GetSelected (out model, out iter) )
|
||||||
|
{
|
||||||
|
selected = (string) model.GetValue (iter, 0);
|
||||||
|
string[] saKeys = (string[]) model.GetValue(iter, 1);
|
||||||
|
string[] saValues = (string[]) model.GetValue(iter, 2);
|
||||||
|
|
||||||
|
CopySecret cs = new CopySecret(selected, saKeys, saValues);
|
||||||
|
cs.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logger.DbgLog("GUI:KdeWallet.OnCopyActivated() - END");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@ MODULE_EXT =exe
|
|||||||
CSFILES =$(srcdir)/AssemblyInfo.cs \
|
CSFILES =$(srcdir)/AssemblyInfo.cs \
|
||||||
$(srcdir)/CasaMain.cs \
|
$(srcdir)/CasaMain.cs \
|
||||||
$(srcdir)/CasaTray.cs \
|
$(srcdir)/CasaTray.cs \
|
||||||
|
$(srcdir)/CopySecret.cs \
|
||||||
$(srcdir)/DbgFileChooser.cs \
|
$(srcdir)/DbgFileChooser.cs \
|
||||||
$(srcdir)/TrayLib.cs \
|
$(srcdir)/TrayLib.cs \
|
||||||
$(srcdir)/ExportSecrets.cs \
|
$(srcdir)/ExportSecrets.cs \
|
||||||
|
@ -240,7 +240,7 @@ public class MiCasa : Store
|
|||||||
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
|
||||||
|
|
||||||
if( 0 != tvSecretIDMiCasa.Selection.CountSelectedRows() )
|
if( 0 != tvSecretIDMiCasa.Selection.CountSelectedRows() )
|
||||||
cmiCopy.Sensitive = false;
|
cmiCopy.Sensitive = true;
|
||||||
else
|
else
|
||||||
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
cmiNewKey.Sensitive = cmiView.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiDelete.Sensitive = false;
|
||||||
}
|
}
|
||||||
@ -957,7 +957,29 @@ public class MiCasa : Store
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnCopyActivated(object obj, EventArgs args)
|
public void OnCopyActivated(object obj, EventArgs args)
|
||||||
{
|
{
|
||||||
|
Logger.DbgLog("GUI:MiCasa.OnCopyActivated() - BEGIN");
|
||||||
|
|
||||||
|
if( 0 != tvSecretIDMiCasa.Selection.CountSelectedRows() )
|
||||||
|
{
|
||||||
|
|
||||||
|
TreeModel model;
|
||||||
|
TreeIter iter;
|
||||||
|
string selected = null;
|
||||||
|
string[] saKeys, saValues;
|
||||||
|
|
||||||
|
if( tvSecretIDMiCasa.Selection.GetSelected (out model, out iter) )
|
||||||
|
{
|
||||||
|
selected = (string) model.GetValue (iter, 0);
|
||||||
|
if (selected.StartsWith("SS_CredSet"))
|
||||||
|
selected = selected.Substring(11);
|
||||||
|
|
||||||
|
saKeys = (string[]) model.GetValue(iter, 1);
|
||||||
|
saValues = (string[]) model.GetValue(iter, 2);
|
||||||
|
|
||||||
|
CopySecret cs = new CopySecret(selected, saKeys, saValues);
|
||||||
|
cs.Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void on_helpbuttonLinkKeys_clicked(object obj, EventArgs args)
|
public void on_helpbuttonLinkKeys_clicked(object obj, EventArgs args)
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user