From fa5816457466d4f5fc4c901c1a431a945b8de248 Mon Sep 17 00:00:00 2001 From: smanojna Date: Thu, 20 Oct 2005 16:10:43 +0000 Subject: [PATCH] - Added message dialog for short Master Password. - Fixed dialog placement property in the casa-1.5.glade file. - Update the all store tab icons to 32x32 pixles. --- c_gui/CasaMain.cs | 75 ++++++----- c_gui/images/casa-1.5.glade | 230 ++++++++++++++++++++++++++++++++-- c_gui/images/firefox-logo.png | Bin 1520 -> 2922 bytes c_gui/images/keyring-logo.png | Bin 875 -> 2145 bytes c_gui/images/kwallet-logo.png | Bin 1574 -> 2640 bytes c_gui/images/mozilla-logo.png | Bin 1277 -> 2355 bytes 6 files changed, 265 insertions(+), 40 deletions(-) diff --git a/c_gui/CasaMain.cs b/c_gui/CasaMain.cs index c5dc3116..5966d2e3 100644 --- a/c_gui/CasaMain.cs +++ b/c_gui/CasaMain.cs @@ -51,7 +51,8 @@ public class CasaMain dialogLoginContinue, dialogConfirmRefresh, dialogSingleInstance, - dialogLoginReprompt; + dialogLoginReprompt, + dialogShortPassword; [Glade.Widget] Gtk.Entry entryMasterPassword1, @@ -298,50 +299,56 @@ public class CasaMain if( true == entryMasterPassword4.Visible ) { - if(entryMasterPassword3.Text != "" && (entryMasterPassword3.Text == entryMasterPassword4.Text) && entryMasterPassword3.Text.Length >= 8) + if( entryMasterPassword3.Text.Length < 8 ) + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogShortPassword", null); + gxmlTemp.Autoconnect (this); + + } + else if(entryMasterPassword3.Text != "" && (entryMasterPassword3.Text == entryMasterPassword4.Text) && entryMasterPassword3.Text.Length >= 8) { miCASA.SetMasterPassword(0, entryMasterPassword3.Text); MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); dialogLogin.Destroy(); InitializeGUI(); - } - else - { - entryMasterPassword3.Text=""; - entryMasterPassword4.Text=""; - entryMasterPassword3.HasFocus=true; - } } else { - if( 0 == miCASA.SetMasterPassword(0, entryMasterPassword3.Text) ) - { - MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); + entryMasterPassword3.Text=""; + entryMasterPassword4.Text=""; + entryMasterPassword3.HasFocus=true; + } + } + else + { + if( 0 == miCASA.SetMasterPassword(0, entryMasterPassword3.Text) ) + { + MiCasaRequestReply.Send(MiCasaRequestReply.VERB_UNLOCK_STORE, entryMasterPassword3.Text); dialogLogin.Destroy(); InitializeGUI(); + } + else + { + Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - MasterPassword verification failed."); + //dialogLogin.Destroy(); + //LoginContinue("Master Password verfication failed", "The store will not be persistent"); + loginPromptCount--; + dialogLogin.Hide(); + + if( loginPromptCount > 0 ) + { + dialogLogin.Show(); + entryMasterPassword3.Text=""; } else - { - Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - MasterPassword verification failed."); - //dialogLogin.Destroy(); - //LoginContinue("Master Password verfication failed", "The store will not be persistent"); - loginPromptCount--; - dialogLogin.Hide(); - - if( loginPromptCount > 0 ) - { - dialogLogin.Show(); - entryMasterPassword3.Text=""; - } - else - { - Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLoginReprompt", null); + { + Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogLoginReprompt", null); gxmlTemp.Autoconnect (this); - } - } + } } + } - Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - END"); + Logger.DbgLog("GUI:CasaMain.okbuttonLogin_clicked() - END"); } internal void on_buttonRetryRepropmt_clicked(object obj, EventArgs args) @@ -352,6 +359,14 @@ public class CasaMain loginPromptCount = 3; } + internal void on_buttonRetryShortPassword_clicked(object obj, EventArgs args) + { + dialogShortPassword.Destroy(); + entryMasterPassword3.Text = ""; + entryMasterPassword4.Text = ""; + entryMasterPassword3.HasFocus = true; + } + internal void on_buttonCloseReprompt_clicked(object obj, EventArgs args) { dialogLoginReprompt.Destroy(); diff --git a/c_gui/images/casa-1.5.glade b/c_gui/images/casa-1.5.glade index 228321ba..42dedff1 100644 --- a/c_gui/images/casa-1.5.glade +++ b/c_gui/images/casa-1.5.glade @@ -740,9 +740,9 @@ True - miCASA + <b>miCASA</b> False - False + True GTK_JUSTIFY_LEFT False False @@ -877,7 +877,7 @@ True - Firefox + <b>Firefox</b> False True GTK_JUSTIFY_LEFT @@ -1015,7 +1015,7 @@ True - Mozilla + <b>Mozilla</b> False True GTK_JUSTIFY_LEFT @@ -1153,7 +1153,7 @@ True - KDE Wallet + <b>KDE Wallet</b> False True GTK_JUSTIFY_LEFT @@ -1291,9 +1291,9 @@ True - GNOME Keyring + <b>GNOME Keyring</b> False - False + True GTK_JUSTIFY_LEFT False False @@ -4774,7 +4774,7 @@ CSL Manojna</b> True CASA Master Password Authentication GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ON_PARENT + GTK_WIN_POS_CENTER_ALWAYS True False True @@ -5919,8 +5919,8 @@ instance is already running.</b> True WARNING GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ALWAYS - False + GTK_WIN_POS_CENTER_ON_PARENT + True False True CASAicons.ico @@ -6141,4 +6141,214 @@ by cilcking the Close button. + + True + WARNING + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER_ON_PARENT + True + False + True + CASAicons.ico + True + False + False + GDK_WINDOW_TYPE_HINT_DIALOG + GDK_GRAVITY_NORTH_WEST + True + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + True + True + GTK_RELIEF_NORMAL + True + -5 + + + + + True + 0.5 + 0.5 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-redo + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + _Retry + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + + + + 0 + False + True + GTK_PACK_END + + + + + + True + False + 0 + + + + True + False + 0 + + + + True + gtk-dialog-warning + 6 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + True + + + + + 4 + True + True + + + + + + True + False + 0 + + + + True + <b>Master Password is too short.</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 5 + False + False + + + + + + True + The Master Password should be atleast eight characters in length. + False + False + GTK_JUSTIFY_LEFT + True + False + 0 + 0.5 + 0 + 0 + + + 4 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + diff --git a/c_gui/images/firefox-logo.png b/c_gui/images/firefox-logo.png index 909ac2f92fbb8aa7cae07c3dec365cf04a4e7787..fbc09507ab46b1a9e7909d6f0bdf6606eccb2f19 100644 GIT binary patch literal 2922 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 UTPwi9c>n+a07*qoM6N<$f}OBaegFUf literal 1520 zcmVleq%1?5^M{8XmwJ1Le&wOLY6(OUXxc%+Km$tLA z^gM6Y_K^4W4c4C?;PtYLL~lL8^3+UrXZv&hPuknvb=wZz9KPxE06b7z{OPqn1TbrU zjO6r8CSGd~W6aw{>xWUKWoHms(?MiiCyOdB;8)ndyrNUANLfkaAA^u;{IS;s(N!3C zy{G+b*68S{^F8=tj_JD|qn`ftA$L~QyP{o$|BA3BHUjuR-~EoVwzHLkgb@yggi zU8XPgt**4xnjM|H(eUY8{i}3X-%vjQcQ5zjdSwppWTs%qEkW3P6qoqTOp3{6ynifH zvPzI=?`L{a4t)iI*pCNbJ>%to2X`km4y1ZNfcBaM`cu3}PmD&9Q_7SrRXp*|LB{*X zGR_c*Oc#zzY%XrepD=ZCGE%)BEK9guKiL6a`{1>%z9bFzkD_&nK+R&2eepr8N=`(+ zwiLJZ2XI?|0GEV3#{0a;1kVtDGcBCQ=Emb0m4#III9ywfROI4-Eg7L#`j&gpYj(h= z!UW#e2&~oVaC`OlxF+pHo>qiBy$Jd0VkXCJ;t_2KkBD=bpbW&-Yc53@&mt8%BMo_B zFVZ^Trnvb7)@5pX6CH5HEP*m_k%nNAsK{8Hm*(MY{D>#b8+au(3wP6I9yPqc1VsRk zDyH#7P&`uA0_-I&*n3>CfBv)sKAD<$xyStT7@8LeoPEk2%R(hRCV?-O&Y(IjknRLE z-=!O9*%N`2+<=qZhlvUwbhBfyw?!e9OhT%5Wg2dPhkl&{6!@)G|z82j%Tx3#5K z%+%2leP1h#0$tH6F21T_jX_PYyB4{75RXlr;XvhDL@|KcrQWn|P#~RfM*7RkNW;%l z@@~9c2FPqSn_G$5{6o_MHSG}sz2;xmuFEK}W1%;*edggbHJrzl^LS;tmZsN4tO)|c z>lEBB@XGC!Sgp?0;NPj+tawApO(hhC7u z!NGvt8#h`D{QM{tR2;f5m1==6bOH@?1kQ!2_%=bq#~QNo11gT#>SlPH~s|* WLu}wH_jpwR0000gA@5JeFd+HHj;LLu#k!pbhJ zU$zvMg3vBxv8C3PZWp?)77G=$rs^tg*HvO-jT%SII59CZF_STg$#E{3%b9mS?3rvT znrdkuc$hh7hWGiu&-MQZ78a$nw6v(Ktn8V)ckli+old&|48tH02>iw{jEle}APS`T zfnotFfR(^Yz%PI{V0CF}seAM0&HH!n-Yuu6r)4x6mC{+S)3ss;YW&b8|NU z1%UQLj0>P;_4CcIKle=Ii^)XT6^n!xrBh)XHp}F2Q2E#Ie*ec`ty;ATUDt`lVn`{` zG>v#XE{`5PYJBp^C+GV6``-b2O-~q)13+zguK7=|zOreP)9I*)M#D~vl2k0Jp;SLv zko9!^lKMqO)mUv=q*5uQlw?9+u~)BnVIy8@$oz7fDeHzp!txi_@_U+pl z7#KhZK{OiW_U+qDPEMk#Dh`K3dGEdVwC&rsZv~D4XMl4H=oz3Bcp9*3=~M(GIs$OU zVzDf3YirwCP*7mY&(CKxsB_6P#^~s%?C9ta9*>7eBtl6^30YZLSglsV;V=~y6|}dv zXT9~-TXjN+xlny4*~I@m9}0!ow{Ks0XJ_YiU|5@tCnxmqY@w?-r^@QcZ+zp8H|z%v z8~|YE-YossgVJKL+{??$%MwDUnZq&%3L(%m4Iu;*6B9%t5u}vF<8c5|sT7K$;BYtq z=<4b+Iy*Zr1A~A?yK+7Fp{6R^mR1(NGw6?LR;v|V*O{1@;MwP1KMp{7c{!m_i1q8&bN1|6KKkgReqbMP z8%Sut-!FP@yWLeq8#UFM7YqhbRh47MjF*~ z9*;9JGD25Z7rL%<@#4kN-rn9jgM))h4<0<&4al`?*S2`Q-oVh%(6Zj%USBvI-V0m> z?f_9?W~3YVwaew&wqwVRtdl2CVz=8_v0?=s9Ua7CF$}|Cc6JuSFtA#!sH#dR6yoEL zKjyQ~KD!Z#MEZams;c@8!*~+t0g^xi5H>#t&G*B=BoNcgvbhF)AcWYuWXY1O!oort z8ynfPXAhe;Z34h%v(3fZFbsxYt4I4IKx7&$CBKUkh4jw#6S63H_ zL?WnZnkSV?4Fh99#55%5H6;~L%#r^^uRTSmy&6_u`dpsWM>gp;hD=W#)&Zf4uHh*AX zpdl0r^_XR5JgO(Y!-9Zp;J0mUZK)eKZpg!j4@;NJ6$Z8d&A?Mah&my}p9>2MrQ7Y6 zUw!qJ?C$QCpMU;&IyX1>Tl0Up54hxl9>|130_D1{|1uhlDz&w>96EF;5e|p<0k_O- zpHUR$dMp3S9MNxj<+S-bgQqUlFOGb)7RH0`uqEZuItwl ziNr(s;=`D%1d0~mgD~fUyxBz5JDOD+@kxHdz%xU<*?x-ygf>w*gqRh_D&at2G zkz_iZo&q9LN{e}hH0MD4VT+5lKoz{cbLUQ_sHlkX@$p9iAkA`1-A}#emG%P-JNG>41m6&p&_@F(rvTZIC0`cG7^d0Uj;vz2$RJ$mz9-$ z-PF{Sw%hHxxi`AZeey>$w2*hQf#v4Xin(~)GCP~`Qv=8(sT0Tt>}Cs|Hc5y4F#!A* XucoISgbeQm00000NkvXXu0mjf`aBK$ literal 875 zcmV-x1C;!UP)pI9Z5t%RCt`N)LlqqWgN%x?|H^KHMsNA_D)GPyOQL^GIX)#%#u`_ zC~gS_qT+?SH||tx%p~Is9+Y-tx(LQb#JLF}G#R_C8B_v;B`?AohjB=mNu)tEsH-hq zSO49d24B{kz>6OoIM4ZTcz)0SK}0y~oHJt9wO$sh)%sw1dRms2mSlZ>UGn+7 zWHK33*IxVSGN>Ztmq|<2`9Ua|sxm;1eUP2#p*}lE>%Co-@3=HgsLLqtk>RaOR zc<$wLImu?TQY;pwP$1AdcAiI z!;nZMB7s0aT3TA9v9VEt!JrHd4(>S|jxS6^JGFfiRX}}RUEQ)_7}C_#Bp#1vr>3T+ z5DW%)lgXqc5{Yf6(`f*Xli*_$WlqtJ@$vBou~3R^hyqUnc1_cotE;Pjo|~K7A08h5+h((U1lY<&U-bEW*~!UC z0X_pwh_j{`*eTG`q!O8Bj`1DW$$q zN_hdj9Q0CGSJ%CVq2?b~0#BQ_m;GpAC!wwJc>KP(r-#rZczNxcAK08u=bg5;wte6> z;4J4JJq^{&bNG&V)g5d2f1?Lr-OP#8^PlKh=O1U`I!iyBQ@;QJ002ovPDHLkV1gNg Bs%`)P diff --git a/c_gui/images/kwallet-logo.png b/c_gui/images/kwallet-logo.png index 8ebc39df2338e07ca6b939b870555b12503bb048..168661f9f4e5832a8e76d775b6d8e57e419cbe6b 100644 GIT binary patch literal 2640 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

Sf9ee>-jk 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 Z`yV#IzNC0iDy;wj002ovPDHLkV1lGGYG?oe literal 1277 zcmVpJuSrBfRCt`7m48f>bsWdv&;7vTxI+%`IF9?_oxnZL76)eI>IkQ< ziB1Y@2CILp%{FA(8WC${t0mb8X`?OFuvwnyl1n>& z+`aqb3&U_ttJeS9XEN@%5Q#)mRxDqBw%hajExSZxB2 zAcL7*#0QYBuhpgaW9{5QP_-q<@ z$^njez`Ar$C4p<#u00tJhs|?>#bPm4RaMo862J^y5}WKgE=>X}jNsRH0jNp^)79X2 zi@~@IZZ&}b=<#@d?&<0A-W5zylr=t|ud7H0K9atGE{B8fxKp{?ETmhh2hT1BTPdkEaMY6s zp$z_&2W~WiOSIq_CwL=2as6YfcuyJp#tF7$37B55zhN*KBEevAWkP0tzyDNmve13{ zM#pTRRU>}ZO5iFz_(yKyH``6%7dG)cE(@6f&|om!Y-nhBsj{;2;K0CuWeVoB6;`59>}EG%SRULG|n6-)Ktfo$+GBlz32%rCmZ&vS&`k4}M* z>z0m=jO)Sq$W}{iydw;foj7`*Y#3LN~z6A{BicT_lfEv?O zy>2!)H$PumT6#Jh4lhc8MWaz&Q&Usz`t|F-l9RxXtfD1lX{30nF(snaXvQ+t;F=WB zt_2@A3OQ%Gwla09UjLSrm7TbD?V4$5XvjG0rH;qrQXp{nsp{(Ly=`r6Tdwq7b_UjM zLMRk+R#sLXk|Zha(tV3AJ1d_Lc|gM)+Vb85shV|aMjm}xXz|I#KbKV8Ou^1*{vaK!|$ zprGKwxpU{_dBXzhHld`XM6qgwdH&2xlrkoRuVjeppi-$~e!o8$39SP11JI1>2#6W+S)fmq0pjv!S?Oj_e_ckJZclQ8=IxYeUJ_6RYFdO z!|`i#bMw}D!D?!1TI?Foqy|se!GYY{VU)q3L%>WX(_mFq)q&pLUfY~t(P&gEDJkg$ z#O!*@41St3J8Z-QJ}Bl}+~smz+O=!f3z0~~IH%04R_jmo8DOSb4AIF+F+Kw}E`#kk n;L{61Ns?%@*?y_7uYc`7>;b-*+S-m{00000NkvXXu0mjfYnOEf