Bug 148945. Handle the case were micasad is restarted, before
a user sets their master password
This commit is contained in:
parent
d9984f8958
commit
f7b5adfb56
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 21 12:05:17 MST 2006 - jnorman@novell.com
|
||||
|
||||
- Bug 148945. Handle the case were micasad is restarted, before
|
||||
a user sets their master password
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 20 10:40:17 IST 2006 - smanojna@novell.com
|
||||
|
||||
|
@ -67,6 +67,7 @@ namespace Novell.CASA.GUI
|
||||
dialogAbout,
|
||||
dialogLogin,
|
||||
dialogLoginContinue,
|
||||
dialogDesktopPassword,
|
||||
dialogConfirmRefresh,
|
||||
dialogSingleInstance,
|
||||
dialogLoginReprompt,
|
||||
@ -79,6 +80,8 @@ namespace Novell.CASA.GUI
|
||||
entryMasterPassword2,
|
||||
entryMasterPassword3,
|
||||
entryMasterPassword4,
|
||||
entryDesktopPassword1,
|
||||
entryDesktopPassword2,
|
||||
entryOldMP,
|
||||
entryNewMP1,
|
||||
entryNewMP2;
|
||||
@ -93,7 +96,8 @@ namespace Novell.CASA.GUI
|
||||
[Glade.Widget]
|
||||
Gtk.Label label88,
|
||||
labelLoginContinue1,
|
||||
labelLoginContinue2;
|
||||
labelLoginContinue2,
|
||||
labelDesktopPasswordMessage;
|
||||
|
||||
[Glade.Widget]
|
||||
Gtk.Button okbuttonPersistentStorage;
|
||||
@ -344,17 +348,94 @@ namespace Novell.CASA.GUI
|
||||
else
|
||||
{
|
||||
Logger.DbgLog("GUI:CasaMain.Login() - IsMasterPasswordSet returned false");
|
||||
|
||||
Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLogin", null);
|
||||
gxmlTemp.Autoconnect(this);
|
||||
entryMasterPassword3.Text="";
|
||||
entryMasterPassword4.Text="";
|
||||
|
||||
// did the daemon get restarted before the user created a master password?
|
||||
// if so, let's ask the user for there desktop password and set it if there's a cache file
|
||||
if (true == DoPersistentFilesExist())
|
||||
{
|
||||
Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogDesktopPassword", null);
|
||||
gxmlTemp.Autoconnect(this);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Glade.XML gxmlTemp = new Glade.XML(Common.GladeFile, "dialogLogin", null);
|
||||
gxmlTemp.Autoconnect(this);
|
||||
entryMasterPassword3.Text = "";
|
||||
entryMasterPassword4.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
Logger.DbgLog("GUI:CasaMain.Login() - END");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void on_entryDesktopPassword1_activate(object obj, EventArgs args)
|
||||
{
|
||||
on_buttonPasswordOk_clicked(obj, args);
|
||||
}
|
||||
|
||||
public void on_entryDesktopPassword2_activate(object obj, EventArgs args)
|
||||
{
|
||||
on_buttonPasswordOk_clicked(obj, args);
|
||||
}
|
||||
|
||||
public void on_buttonPasswordOk_clicked(object obj, EventArgs args)
|
||||
{
|
||||
object o = obj;
|
||||
if (entryDesktopPassword1 != null && entryDesktopPassword2.Text != null)
|
||||
{
|
||||
|
||||
if (entryDesktopPassword1.Text.Length < 1)
|
||||
{
|
||||
labelDesktopPasswordMessage.Text = "Please enter your desktop password";
|
||||
return;
|
||||
}
|
||||
|
||||
if (entryDesktopPassword1.Text.Equals(entryDesktopPassword2.Text))
|
||||
{
|
||||
// set the desktop password in micasa
|
||||
try
|
||||
{
|
||||
Novell.CASA.miCASA.SetCredential(0,
|
||||
"Desktop",
|
||||
null,
|
||||
Novell.CASA.miCASA.USERNAME_TYPE_CN_F,
|
||||
GetLocalUsername(),
|
||||
entryDesktopPassword1.Text);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.DbgLog(e.ToString());
|
||||
}
|
||||
|
||||
if (dialogDesktopPassword != null)
|
||||
dialogDesktopPassword.Destroy();
|
||||
|
||||
MasterPasswordAuthentication();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
labelDesktopPasswordMessage.Text = "Passwords do not match";
|
||||
entryDesktopPassword1.Text = "";
|
||||
entryDesktopPassword2.Text = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void on_helpbuttonDesktopPassword_clicked(object obj, EventArgs args)
|
||||
{
|
||||
Common.ShowHelpUrl("CASADesktopPassword.htm");
|
||||
}
|
||||
|
||||
|
||||
public void on_buttonPasswordClose_clicked(object obj, EventArgs args)
|
||||
{
|
||||
if (dialogDesktopPassword != null)
|
||||
dialogDesktopPassword.Destroy();
|
||||
|
||||
closebuttonLogin_clicked(obj, args);
|
||||
}
|
||||
|
||||
public void okbuttonLogin_clicked(object abj, EventArgs args)
|
||||
{
|
||||
@ -444,7 +525,9 @@ namespace Novell.CASA.GUI
|
||||
|
||||
public void closebuttonLogin_clicked(object abj, EventArgs args)
|
||||
{
|
||||
dialogLogin.Destroy();
|
||||
if (dialogLogin != null)
|
||||
dialogLogin.Destroy();
|
||||
|
||||
// close tray too
|
||||
if (mCasaTray != null)
|
||||
{
|
||||
@ -494,7 +577,39 @@ namespace Novell.CASA.GUI
|
||||
|
||||
Logger.DbgLog("GUI:CasaMain.IsMasterPasswordSet() - END");
|
||||
return (File.Exists(fileName));
|
||||
}
|
||||
}
|
||||
|
||||
public bool DoPersistentFilesExist()
|
||||
{
|
||||
Logger.DbgLog("GUI:CasaMain.DoesPersistentFilesExist() - BEGIN");
|
||||
|
||||
// is the desktop password set already?
|
||||
try
|
||||
{
|
||||
BasicCredential bc = Novell.CASA.miCASA.GetCredential(0,
|
||||
"Desktop",
|
||||
null,
|
||||
Novell.CASA.miCASA.USERNAME_TYPE_CN_F);
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// check for existence of persistent files
|
||||
string MICASA_PASSCODE_BY_DESKTOP_FILE = "/.miCASAPCByDesktop";
|
||||
string MICASA_KEY_FILE = "/.miCASAKey";
|
||||
string MICASA_PERSISTENCE_FILE = "/.miCASA";
|
||||
string MICASA_VALIDATION_FILE = "/.miCASAValidate";
|
||||
|
||||
string sHomeDir = GetUserHomeDir();
|
||||
|
||||
Logger.DbgLog("GUI:CasaMain.DoesPersistentFilesExist() - END");
|
||||
return (File.Exists(sHomeDir + MICASA_PERSISTENCE_FILE)
|
||||
&& File.Exists(sHomeDir + MICASA_KEY_FILE)
|
||||
&& File.Exists(sHomeDir + MICASA_PASSCODE_BY_DESKTOP_FILE)
|
||||
&& File.Exists(sHomeDir + MICASA_VALIDATION_FILE));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private string GetUserHomeDir()
|
||||
{
|
||||
@ -503,7 +618,13 @@ namespace Novell.CASA.GUI
|
||||
else
|
||||
return Environment.GetEnvironmentVariable("USERPROFILE");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private string GetLocalUsername()
|
||||
{
|
||||
return Environment.GetEnvironmentVariable("USERNAME");
|
||||
}
|
||||
|
||||
|
||||
///#######################################################################
|
||||
/// LOGIN WARNING DIALOG
|
||||
|
45
c_gui/help/en/CASADesktopPassword.htm
Normal file
45
c_gui/help/en/CASADesktopPassword.htm
Normal file
@ -0,0 +1,45 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
|
||||
<!-- #BeginEditable "doctitle" -->
|
||||
<title>Novell® CASA Manager</title>
|
||||
<!-- #EndEditable -->
|
||||
<link href="hf_style.css" rel="styleSheet" type="text/css">
|
||||
<style type="text/css" media="screen">
|
||||
<!--
|
||||
body { font-family: "Trebuchet MS", Arial, Helvetica, Geneva; background: white url(help_zcc_bg.gif) repeat-x 0% 0% }
|
||||
#headgraphic { position: absolute; z-index: 0; top: 0px; left: 0px; width: 380px; visibility: visible }
|
||||
#helpcontent { position: absolute; top: 37px; left: 10px; width: 93%; visibility: visible }
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body bgcolor="white" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
|
||||
<div id="headgraphic">
|
||||
<img src="h1_help_zcc.gif" width="221" height="26" border="0"></div>
|
||||
<div id="helpcontent">
|
||||
|
||||
<!--Begin Content -->
|
||||
|
||||
<div class="head3b">Entering your workstation password</div>
|
||||
|
||||
<!--Remove this section if you do not need introductory text for this topic -->
|
||||
<p class="margintop2">You are prompted for your workstation password if the CASA
|
||||
service is restarted and before you have set your master password.</p>
|
||||
|
||||
<p>Your desktop password and master password are used to encypt your secrets
|
||||
and store them on your computer. When you login to the computer, CASA will decrypt
|
||||
the saved secrets using your desktop password and make them available for
|
||||
applications integrated with CASA.
|
||||
If your desktop password changes, you must run CASA Manager and enter your master
|
||||
password before CASA can decrypt your saved secrets.</p>
|
||||
|
||||
|
||||
<p><b>Important:</b> To prevent unauthorized access to your credential stores,
|
||||
always create confidential passwords that are not easily discovered.</p>
|
||||
|
||||
<!--End Content -->
|
||||
<br>
|
||||
<div class="ruleabove"></div></div>
|
||||
</body>
|
||||
</html>
|
@ -8244,4 +8244,353 @@ prompted for the Master Password at startup.</property>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget class="GtkDialog" id="dialogDesktopPassword">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">Enter Workstation Password</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="resizable">False</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="has_separator">True</property>
|
||||
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="vbox105">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="hbuttonbox13">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="helpbuttonDesktopPassword">
|
||||
<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>
|
||||
<signal name="clicked" handler="on_helpbuttonDesktopPassword_clicked" last_modification_time="Tue, 21 Feb 2006 16:51:04 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="buttonPasswordClose">
|
||||
<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>
|
||||
<signal name="clicked" handler="on_buttonPasswordClose_clicked" last_modification_time="Fri, 17 Feb 2006 23:00:27 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="buttonPasswordOk">
|
||||
<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>
|
||||
<signal name="clicked" handler="on_buttonPasswordOk_clicked" last_modification_time="Tue, 21 Feb 2006 18:15:24 GMT"/>
|
||||
</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="vbox106">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox71">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox107">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image2776">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-dialog-question</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">6</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="vbox108">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label174">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes"><b>Enter Workstation Password</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>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">5</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label175">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">CASA encypts your credentials
|
||||
and writes them in your home directory.
|
||||
To retrieve them, please enter your
|
||||
workstation password.
|
||||
</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>
|
||||
</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="GtkLabel" id="labelDesktopPasswordMessage">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes"></property>
|
||||
<property name="use_underline">True</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>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkFrame" id="frame20">
|
||||
<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="alignment33">
|
||||
<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="table17">
|
||||
<property name="border_width">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">6</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label176">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Workstation Password :</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">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">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="label177">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Re-enter Password :</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">1</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">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="GtkEntry" id="entryDesktopPassword1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">False</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>
|
||||
<signal name="activate" handler="on_entryDesktopPassword1_activate" last_modification_time="Tue, 21 Feb 2006 18:30:33 GMT"/>
|
||||
</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="entryDesktopPassword2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">False</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>
|
||||
<signal name="activate" handler="on_entryDesktopPassword2_activate" last_modification_time="Tue, 21 Feb 2006 18:31:48 GMT"/>
|
||||
</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>
|
||||
</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>
|
||||
|
Loading…
Reference in New Issue
Block a user