From 4fedea3f60a93cbe10f49bb31aaca7d4b6da2c13 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Thu, 7 Oct 2010 00:54:42 +0100 Subject: [PATCH] [log][repo][statusicon] add notices and icons when there are unpushed changes --- SparkleLib/SparkleRepo.cs | 22 +++++++++++++++++- SparkleShare/SparkleLog.cs | 36 ++++++++++++++++++++++++++++-- SparkleShare/SparkleStatusIcon.cs | 11 ++++----- data/icons/Makefile.am | 3 ++- data/icons/dialog-warning-16.png | Bin 0 -> 683 bytes data/icons/dialog-warning-24.png | Bin 0 -> 1212 bytes data/icons/dialog-warning.png | Bin 683 -> 1040 bytes 7 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 data/icons/dialog-warning-16.png create mode 100644 data/icons/dialog-warning-24.png diff --git a/SparkleLib/SparkleRepo.cs b/SparkleLib/SparkleRepo.cs index 304ab8f8..fed2dd4b 100644 --- a/SparkleLib/SparkleRepo.cs +++ b/SparkleLib/SparkleRepo.cs @@ -265,13 +265,21 @@ namespace SparkleLib { _UserName = GetUserName (); _UserEmail = GetUserEmail (); _CurrentHash = GetCurrentHash (); - _HasUnsyncedChanges = false; _IsSyncing = false; _IsBuffering = false; _IsPolling = true; _IsFetching = false; _IsPushing = false; + string unsynced_file_path = SparkleHelpers.CombineMore (LocalPath , + ".git", "has_unsynced_changes"); + + if (File.Exists (unsynced_file_path)) + _HasUnsyncedChanges = true; + else + _HasUnsyncedChanges = false; + + if (_CurrentHash == null) CreateInitialCommit (); @@ -770,6 +778,12 @@ namespace SparkleLib { SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Pushing failed."); + string unsynced_file_path = SparkleHelpers.CombineMore (LocalPath , + ".git", "has_unsynced_changes"); + + if (!File.Exists (unsynced_file_path)) + File.Create (unsynced_file_path); + _HasUnsyncedChanges = true; args = new SparkleEventArgs ("PushingFailed"); @@ -783,6 +797,12 @@ namespace SparkleLib { args = new SparkleEventArgs ("PushingFinished"); + string unsynced_file_path = SparkleHelpers.CombineMore (LocalPath , + ".git", "has_unsynced_changes"); + + if (File.Exists (unsynced_file_path)) + File.Delete (unsynced_file_path); + _HasUnsyncedChanges = false; if (PushingFinished != null) diff --git a/SparkleShare/SparkleLog.cs b/SparkleShare/SparkleLog.cs index fe455cf5..f5e99913 100644 --- a/SparkleShare/SparkleLog.cs +++ b/SparkleShare/SparkleLog.cs @@ -97,7 +97,9 @@ namespace SparkleShare { MenuBar.ModifyBg (StateType.Normal, Style.Background (StateType.Normal)); LayoutVertical = new VBox (false, 0); - + + + LayoutVertical.PackStart (CreateEventLog (), true, true, 0); HButtonBox dialog_buttons = new HButtonBox { @@ -143,7 +145,6 @@ namespace SparkleShare { foreach (SparkleRepo repo in SparkleUI.Repositories) { - // Get commits from the repository if (repo.LocalPath.Equals (LocalPath)) { // Remove the eventhooks @@ -231,6 +232,37 @@ namespace SparkleShare { VBox layout_vertical = new VBox (false, 0); + + if ((SparkleUI.Repositories.Find (delegate (SparkleRepo r) + { return r.LocalPath.Equals (LocalPath); }) as SparkleRepo).HasUnsyncedChanges == true) { + + Window window = new Window (WindowType.Popup) { + Name = "gtk-tooltip" + }; + + window.EnsureStyle (); + + EventBox warning_box = new EventBox () { + Style = window.Style + }; + + Label label = new Label () { + Markup = "" + _("This folder has unsynced changes") + "\n" + + _("We will sync these once connected again") + }; + + HBox warning_hbox = new HBox (false, 12) { + BorderWidth = 12 + }; + warning_hbox.PackStart (new Image (SparkleUIHelpers.GetIcon ("dialog-warning", 24)), false, false, 0); + + warning_hbox.PackStart (label, false, false, 0); + warning_box.Add (warning_hbox); + + layout_vertical.PackStart (warning_box, false, false, 0); + + } + TreeView tree_view = new TreeView (); Gdk.Color background_color = tree_view.Style.Base (StateType.Normal); diff --git a/SparkleShare/SparkleStatusIcon.cs b/SparkleShare/SparkleStatusIcon.cs index d12f02b6..37cd8921 100644 --- a/SparkleShare/SparkleStatusIcon.cs +++ b/SparkleShare/SparkleStatusIcon.cs @@ -227,10 +227,8 @@ namespace SparkleShare { // Creates the menu that is popped up when the // user clicks the statusicon public void CreateMenu () - {int i = 0; -foreach (SparkleLog logi in SparkleUI.OpenLogs){i++; -Console.WriteLine (i + ": " + logi.LocalPath); -} + { + Menu = new Menu (); // The menu item showing the status and size of the SparkleShare folder @@ -269,10 +267,9 @@ Console.WriteLine (i + ": " + logi.LocalPath); IsImportant = true }; - if (repo.HasUnsyncedChanges){ + if (repo.HasUnsyncedChanges) folder_action.IconName = "dialog-warning"; - Console.WriteLine ("FFFFFFFFFFFFFFFFFFFF"); -} + folder_action.Activated += OpenLogDelegate (repo.LocalPath); MenuItem menu_item = (MenuItem) folder_action.CreateMenuItem (); diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index 88e72484..0b9edd10 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -29,7 +29,8 @@ app_theme_icons = \ status,document-edited-16.png \ status,document-moved-16.png \ status,document-removed-16.png \ - status,dialog-warning-16.png + status,dialog-warning-16.png \ + status,dialog-warning-24.png install_icon_exec = $(top_srcdir)/build/icon-theme-installer \ -t "$(theme)" \ diff --git a/data/icons/dialog-warning-16.png b/data/icons/dialog-warning-16.png new file mode 100644 index 0000000000000000000000000000000000000000..219432c44d6d57179930a1f307e3c48e89afc4ab GIT binary patch literal 683 zcmV;c0#yBpP)9ZU- zJm)h#N36B9OZl!8l{jy(t%?rAOVLMmqg_w6eGMq>y)vcgVLftjGBlAF9eeFAD|h6A zE}R^fL{3yPr&Mn2T8*$-E~ff=U-q*n`~fdev1JxTbp*C|xhmOVUs`ok zzR29t3Uf;<=zIxfo7nVFZtFWUZGo+8;x%;gK_u#V;(Dmm5wgBRt}BAd^db=#H}1!q z5?flkA?`mwMYt95bB+$G=>9QmP@|A`C}bRLYaiV|foat+iSC#*xqblnbVV{P9i2tL!53jp$NhCXHZJksZSZf_Ci#QEQYK%adAKLHL=TMO?5xw}p?AtWG(o^r zGKvGxc)xmJ7U^GS{qOYvaThoE#u-y@^77*b3)bSc>2-_<`yxD(PT%>k`3YlFonmk< R;ST@+002ovPDHLkV1l9fDaHT* literal 0 HcmV?d00001 diff --git a/data/icons/dialog-warning-24.png b/data/icons/dialog-warning-24.png new file mode 100644 index 0000000000000000000000000000000000000000..05149670e5c3e72dd091b9e133baaa6b54e4d2db GIT binary patch literal 1212 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE)4%b@U_I1CZGssfk$L9 zP{%b8W}J{;IR_+IR^XTpq`~?bDtwkMV_;xD;OXKR;&FWIRNsu4P>Htr#pmW)Pqv=y zIVWY3kDBiZm20<-xV(-(7`CQ#VTi!gjs-^+XoPWUIn{@lTylmfx+;czA{hpKm@#CTYIvZ~tJ9_=i z_BGe${&v+-{qtC!-&$*b=$D1-PwH=~&NxxG!}fhIpTzrq$H~9fEZ?wYx_bEMuyxB$ zZdZOERc@0#`;10a&V&PJ`){{s-7~Mf@tRHN%|o`;Pv^CV)=a)|S$RgQiNc0$CE+?L zm5Fy5guCSU?%a~SAYSK`Ai&6O`%gCPw=$!)kiEfG_b00uKmXow*X!=?-h!AHUj#N~ zF|XRlY;4ZwJ^6&Lf9o5a-|M6vbiEMV{Z}!%UzYi?;^VU&pQ2n;+Ul3hcgWhk^l)dm zcy;G`NrRtU-&aoCeS2e*({ld>Sy3MT`Udm%HF)M6)A39A_lI})=Zyz8JvuOpfvsir zss1UscLc92X6DeGaMf4l-xuj`@_(4_mkCVe{Bv>fjgx#!7xUV_6wiz@P1rNt{q3{0 zyq9*oI63*m6Ey=@Et$?%e~(=eyty;(@T5IrnfUGZ+C2~UhBEqypPK%#dE%8^McXP7 zNgk!-uM+z1r7l9c!V>!Y+j@J<7arfIDsp>4ipkE`S3Ylv7c>YudATtq-REigMdRfG zyyi{wnf2XmR&`i4%xBG)oa&MI?D)s}|Fbe4KUWiLZK#o3xOv4dkzaTCEiS%p(OA9f^Yio_*{%n4_B^?=ZOX}~ zpJ(he45{T-vuEDv88L5(ZsLu-t2dfVeBY#}G}}sGTB{$wV16$5&NhBM?jIj5wR!^b zLsW%QpS}6s;UOYecHnH%9ve6D%7pjfZz_Iz8x?y?#2(2IS9CNjPcm9w*c7y);Loqe zcWo*-51jr~Rq1Oa5Hat7i1@}J^Tsm$X&+<7HZT43H|gaa{ktnuw3S{gQ1=hIe}rrX8K7LJT{8@Cv`HD5fD zqW$k>;-QHa2R}ueecg|TP2Y9weA=reQ>u79t6s9) za+eO4nD(4MbsK!__g=@;sU@y9UB0u#n z>y?h$e|_P{oq-u!wZt`|BqgyV)hf9t6-Y4{85mgV8XD>v8HX5}TA7+#8Cq%^7+M(^ zd@^0%hN2-iKP5A*61Rrt3~?)<21$?&!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2 RNC6cwc)I$ztaD0e0syYA8My!e literal 0 HcmV?d00001 diff --git a/data/icons/dialog-warning.png b/data/icons/dialog-warning.png index 219432c44d6d57179930a1f307e3c48e89afc4ab..930505509744ac603cc1fea8a860b5f774ce7932 100644 GIT binary patch literal 1040 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkEb;jlQ?`-C2u6h##mSvXx z{BTX~{JUFwt6fscjHYjXa?4a>`pYjix!I{teZ}qm@;24_CLCyGepw>0uUh=?kHQc; z|5Muv4?Wy)VE691(_?q}%ZmQoY+#r;W2w-&J2ErWq?h{_>rZ`jdv*Bxc=mF!cmJ1j z#$=6mMTMt*F<}-x&P;Ub~lVgiWQ<55t)}b^248 zju$qSSjqm`xJBg8lgfjKI)x9iZ+Pk)ep`4COZ<0!KCR@^sUL1`UXdYkdt0Fl`_+q% z6z8Epzp_ zURqUE_2S*Tyf?YmA3r}IytlCV;>AE?=6EyaFUv{|Q)XTK7r~=E^N55@%^k;Bpz>$W zpGUWBH=cBU^S!IB&v*UFi8S0FRGBWeFRQYddxP1mv%B^_H9Gjoh~@m34YJB6HfOTZ z)$i-;-TTSHx7AM}sUy|Vrtev0hsWc8slRXU`F5Bv&oJ za#Y@gan+KQl=TrXe>!B{Qv(fQAb9ZU- zJm)h#N36B9OZl!8l{jy(t%?rAOVLMmqg_w6eGMq>y)vcgVLftjGBlAF9eeFAD|h6A zE}R^fL{3yPr&Mn2T8*$-E~ff=U-q*n`~fdev1JxTbp*C|xhmOVUs`ok zzR29t3Uf;<=zIxfo7nVFZtFWUZGo+8;x%;gK_u#V;(Dmm5wgBRt}BAd^db=#H}1!q z5?flkA?`mwMYt95bB+$G=>9QmP@|A`C}bRLYaiV|foat+iSC#*xqblnbVV{P9i2tL!53jp$NhCXHZJksZSZf_Ci#QEQYK%adAKLHL=TMO?5xw}p?AtWG(o^r zGKvGxc)xmJ7U^GS{qOYvaThoE#u-y@^77*b3)bSc>2-_<`yxD(PT%>k`3YlFonmk< R;ST@+002ovPDHLkV1l9fDaHT*