From 791d0aed0622015151f0d95b564984ab3942dbbf Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Fri, 17 Dec 2010 18:06:57 +0100 Subject: [PATCH] [osx] Implement a proper SparkleLog class --- SparkleShare/Mac/SparkleShare/Main.cs | 94 ++--- SparkleShare/Mac/SparkleShare/SparkleLog.cs | 123 ++++++ .../Mac/SparkleShare/SparkleShare.csproj | 8 + SparkleShare/Mac/SparkleShare/idle-active.png | Bin 0 -> 732 bytes SparkleShare/Mac/SparkleShare/idle.png | Bin 0 -> 797 bytes SparkleShare/Mac/SparkleShare/idle0.png | Bin 0 -> 803 bytes SparkleShare/Mac/SparkleShare/idle1.png | Bin 0 -> 822 bytes SparkleShare/Mac/SparkleShare/idle2.png | Bin 0 -> 818 bytes SparkleShare/Mac/SparkleShare/idle3.png | Bin 0 -> 831 bytes SparkleShare/Mac/SparkleShare/idle4.png | Bin 0 -> 826 bytes data/sparkleshare-gnome.svg | 360 ++++++++++++++++-- 11 files changed, 491 insertions(+), 94 deletions(-) create mode 100644 SparkleShare/Mac/SparkleShare/SparkleLog.cs create mode 100644 SparkleShare/Mac/SparkleShare/idle-active.png create mode 100644 SparkleShare/Mac/SparkleShare/idle.png create mode 100644 SparkleShare/Mac/SparkleShare/idle0.png create mode 100644 SparkleShare/Mac/SparkleShare/idle1.png create mode 100644 SparkleShare/Mac/SparkleShare/idle2.png create mode 100644 SparkleShare/Mac/SparkleShare/idle3.png create mode 100644 SparkleShare/Mac/SparkleShare/idle4.png diff --git a/SparkleShare/Mac/SparkleShare/Main.cs b/SparkleShare/Mac/SparkleShare/Main.cs index c97dd14c..2a7fb72f 100644 --- a/SparkleShare/Mac/SparkleShare/Main.cs +++ b/SparkleShare/Mac/SparkleShare/Main.cs @@ -35,6 +35,8 @@ namespace SparkleShare NSMenuItem NotificationsMenuItem; NSMenuItem AboutMenuItem; NSMenuItem QuitMenuItem; + + SparkleLog Log; NSWindow window; @@ -77,10 +79,10 @@ tile.Display (); StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (28); StatusItem.Enabled = true; - StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png"); - StatusItem.AlternateImage = NSImage.ImageNamed ("sparkleshare-idle-focus.png"); - StatusItem.Image.Size = new SizeF (13, 13); - StatusItem.AlternateImage.Size = new SizeF (13, 13); + StatusItem.Image = NSImage.ImageNamed ("idle.png"); + StatusItem.AlternateImage = NSImage.ImageNamed ("idle-active.png"); + StatusItem.Image.Size = new SizeF (16 , 16); + StatusItem.AlternateImage.Size = new SizeF (16, 16); StatusItem.HighlightMode = true; Menu = new NSMenu (); @@ -91,7 +93,7 @@ tile.Display (); Timer timer = new Timer () { - Interval = 500 + Interval = 60 }; @@ -104,13 +106,19 @@ tile.Display (); timer.Elapsed += delegate { FolderMenuItem.InvokeOnMainThread (delegate { + + StatusItem.Image = NSImage.ImageNamed ("idle" + i + ".png"); + StatusItem.Image.Size = new SizeF (16 , 16); - if (i == 0){ - StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle-focus.png"); - i = 1; + StatusItem.AlternateImage = NSImage.ImageNamed ("idle" + i + ".png"); + StatusItem.AlternateImage.Size = new SizeF (16 , 16); + + if (i < 4){ + i++; }else{ - StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png"); - i = 0; + + // StatusItem.Image = NSImage.ImageNamed ("sparkleshare-idle.png"); + i = 0; } /*FolderMenuItem.Title+="Z";Menu.Update ();*/}); @@ -121,7 +129,7 @@ tile.Display (); Console.WriteLine ("DDDD"); }; - FolderMenuItem.Image = NSImage.ImageNamed ("NSFolder"); + FolderMenuItem.Image = NSImage.ImageNamed ("sparkleshare.icns"); FolderMenuItem.Image.Size = new SizeF (16, 16); Menu.AddItem (FolderMenuItem); @@ -133,73 +141,15 @@ tile.Display (); foreach (NSMenuItem item in FolderMenuItems) { - item.Activated += delegate { - - - - - button = new NSButton (new RectangleF (16, 12, 120, 31)) { - Title = "Open Folder", - BezelStyle = NSBezelStyle.Rounded - - }; - - button2 = new NSButton (new RectangleF (480 - 120 - 16, 12, 120, 31)) { - Title = "Close", - BezelStyle = NSBezelStyle.Rounded - - }; - - - bool minimizeBox = true; - bool maximizeBox = false; -NSWindowStyle style = (NSWindowStyle)(1 | (1 << 1) | (minimizeBox ? 4 : 1) | (maximizeBox ? 8 : 1)); - - -window = new NSWindow (new RectangleF (0, 0, 480, 640), - style, 0, false); - - - - - web_view = new WebView (new RectangleF (0, 12 + 31 + 16, 480, 640 - (12 + 31 + 16)), "", ""); - web_view.MainFrameUrl = "http://www.google.nl/"; - - - window.ContentView.AddSubview (button); - window.ContentView.AddSubview (button2); - window.ContentView.AddSubview (web_view); - - window.MaxSize = new SizeF (480, 640); - window.MinSize = new SizeF (480, 640); - - window.Title = "Recent Events in 'gnome-design'"; - - window.HasShadow = true; - //window.DefaultButtonCell = button2.Cell; - window.BackingType = NSBackingStore.Buffered; - - - NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); - - window.MakeKeyAndOrderFront (this); - window.Center (); - - - - - - }; + item.Image = NSImage.ImageNamed ("NSFolder"); + item.Image.Size = new SizeF (16, 16); Menu.AddItem (item); }; - - - - + Log = new SparkleLog ("bla"); Menu.AddItem (NSMenuItem.SeparatorItem); diff --git a/SparkleShare/Mac/SparkleShare/SparkleLog.cs b/SparkleShare/Mac/SparkleShare/SparkleLog.cs new file mode 100644 index 00000000..30ae9fde --- /dev/null +++ b/SparkleShare/Mac/SparkleShare/SparkleLog.cs @@ -0,0 +1,123 @@ +// SparkleShare, an instant update workflow to Git. +// Copyright (C) 2010 Hylke Bons +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + + +using System; +using System.Drawing; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using MonoMac.Foundation; +using MonoMac.AppKit; +using MonoMac.ObjCRuntime; +using MonoMac.WebKit; + +namespace SparkleShare { + + public class SparkleLog : NSWindow { + + public readonly string LocalPath; + + private WebView WebView; + private NSButton CloseButton; + private NSButton OpenFolderButton; + + + public SparkleLog (string path) : base () + { + + LocalPath = path; + + + bool minimizeBox = true; + bool maximizeBox = false; + + + SetFrame (new RectangleF (0, 0, 480, 640), true); + + StyleMask = (NSWindowStyle)(1 | (1 << 1) | (minimizeBox ? 4 : 1) | (maximizeBox ? 8 : 1)); + MaxSize = new SizeF (480, 640); + MinSize = new SizeF (480, 640); + HasShadow = true; + BackingType = NSBackingStore.Buffered; + + Center (); + + ContentView.AddSubview (CreateEventLog ()); + + OpenFolderButton = new NSButton (new RectangleF (16, 12, 120, 31)) { + Title = "Open Folder", + BezelStyle = NSBezelStyle.Rounded + }; + + OpenFolderButton.Activated += delegate { + // SparkleShare.Controller.OpenSparkleShareFolder (LocalPath); + }; + + ContentView.AddSubview (OpenFolderButton); + + + CloseButton = new NSButton (new RectangleF (480 - 120 - 16, 12, 120, 31)) { + Title = "Close", + BezelStyle = NSBezelStyle.Rounded + }; + + CloseButton.Activated += delegate { + Close (); + }; + + ContentView.AddSubview (CloseButton); + + + string name = System.IO.Path.GetFileName (LocalPath); + Title = String.Format ("Recent Events in ‘{0}’", name); + + NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); + MakeKeyAndOrderFront (this); + + } + + + new public void Close () + { + + InvokeOnMainThread (delegate { + base.Close (); + }); + + } + + + public void UpdateEventLog () + { + + } + + + private WebView CreateEventLog () + { + + RectangleF frame = new RectangleF (0, 12 + 31 + 16, 480, 640 - (12 + 31 + 16)); + + WebView = new WebView (frame, "", ""); + WebView.MainFrameUrl = "http://www.google.nl/"; + + return WebView; + + } + + } + +} diff --git a/SparkleShare/Mac/SparkleShare/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare/SparkleShare.csproj index 71fcd61c..f577a283 100644 --- a/SparkleShare/Mac/SparkleShare/SparkleShare.csproj +++ b/SparkleShare/Mac/SparkleShare/SparkleShare.csproj @@ -51,6 +51,7 @@ MainMenu.xib + @@ -64,6 +65,13 @@ + + + + + + + diff --git a/SparkleShare/Mac/SparkleShare/idle-active.png b/SparkleShare/Mac/SparkleShare/idle-active.png new file mode 100644 index 0000000000000000000000000000000000000000..ca826a08abe07c13e2ebddada751e408728e4de4 GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$vDnka zF~p*G>Ew<2&VeGw>etVk=EC0Dq2MvkfMa&cQTYUenMd!mMyi-?Q{z$l?>yZrVy%gy zm{QP^iwoXfn6&MErCsy#xLe-^_C0x`cHj2ena`}C_Da+w2Gw9Hce z6~2Drk;CUS0*yUb%UCwd=4Y0fx8J~0A~i|j+gn|q{XMgr4&Qku`}CD`ANOwWy;o#5 zZkVf_CUwMGNoFmt;ibpY-Ak_f-_PUTwo5qNOKwWY%3Zwnr$fU}HctWy?9#naw>tjg zpS%Z3@z<|Zg+;$iYQF6yZn|~eRo8v@K85+rvXOh=ZIoQ9)OmTg)g|{sJy%aw#BWJu zoA`{0VWm&&o5_c3jE)1**TueC!HN%VOQ?O|DfxNx=t~Q8*7nD}i44=ee~Q?vdzW$E u#4Y!2+T#yR-O{h(ed(q=*BsAH_ZWY;w6yDoC>a1Fm%-E3&t;ucLK6Uz$s>CJ literal 0 HcmV?d00001 diff --git a/SparkleShare/Mac/SparkleShare/idle.png b/SparkleShare/Mac/SparkleShare/idle.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb7f00b39736a15ceebe9eb9f7cdbff76959694 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$af_#m zV~9oX(n-GFA%!CC^FMztQ!QO{#=yL`hUiOzd**RIE1xO%fQHPR-grX}~bP3>Ct}S~0u6AGb zy-arRhF{t%wPe$+BVwyh9($&C^_4$ET<-p~v|n7`yIiH@&P(*pIk7rK2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$ahIoy zV~9oX(n)8%LlQ-f)xZBLHk~u-jEhko59{qE+gs1&-DRy?Qt?t-!tZ@au7u=YLvVDVdEt*LG8bi-pmdOZ)v z{BxDG2n!cgoas@ZCFJ;eevSy2NOyb<>zgQP--{Z?=jRtGi5%LNtM=YckgvUR(&-?* z=|A`F_fN~2Gk0!&J5yKliq*4ak1JaL?f7}rW@!*-!_QXNHn!lNluI+b=8A57qL9h3 zt=rWt|L(I_30+sFHr@|5zjS@amD}D`C3EiX-D|J2;+EIL!|vCvT^AHQw{7dft;Zw| z@181Zm!DTyEYu_kqi5#yS_+>#D1_as!y>lmBP&7J$- TFhLiXMi@L@{an^LB{Ts5_fST? literal 0 HcmV?d00001 diff --git a/SparkleShare/Mac/SparkleShare/idle1.png b/SparkleShare/Mac/SparkleShare/idle1.png new file mode 100644 index 0000000000000000000000000000000000000000..863cc299952fbf7e762b7583e6a8a8618942f6dc GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$@vNtd zV~9oX(n;Rg!igen^Yf)tJcRbBNJy`2+%ol&S>UXcX?=QLi=<;a%$fc%9rRXQ!Qmx( zWWGX}i{`6Cu`iuO*5(zhT#yicwO3kv=8}Vb4^EsZRMb5AWYfpkd8a?`eg806>CpcZ z>=RC<=_|dm+pu=+_t+^C^G`p`Z)T8USoF;HG{a%9E3dY!Th7inrDMXW7xhtjHbMtp zZjSyPqWSji)+-+!Xv=y>XZ9R zw}-3?+gKMFz0I|yH*K)o=1D{ve^)Ji3v$wXJonPFd z?2(G;QsS!B^471sG~Hdqu3kCg p;}qhga~H$$fH%sQPh8<=buJYD@<);T3K0RRwySiArL literal 0 HcmV?d00001 diff --git a/SparkleShare/Mac/SparkleShare/idle2.png b/SparkleShare/Mac/SparkleShare/idle2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b8cdcfc30b2ca8f35d66e8c825731a8884ff240 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$@ua7V zV~9oX(#ifFlM5w|+n;}ZIw{%YM&iUq*|hE3%*G$dsWM9~=Cc@%6tE{u>U8#W8 z8d;XTCA_Lj>|IKvE(dX$HofJ&bm)@FTIUCgynVl1S5*6a_ch-y+kf+(|E`?(p4mRo zYoq*21~;2JS=Gz~p@GqXi-fMdc{4qVftNv*+058suSTV~(b){$292c#NzdFWrDuz5 z*xCI({o&g)iRzd87>UXRnPKp^`A|xf?S5?{{{PxKjygb#_*nxfAN8*kBai;D^EWPdLLR6 zs~*2$4r5YvWW4^T%EF1ugxUDr+|&&+(Xm)gmF6@FSX6=qAP zS5__++MxO{qvm*ehWFfKZ_6Hk{%LXhqT|6$KelW*aAWatKl2~T4>SIlKiC@X(y~06 zpOb~@%a{1ahwtnWe&Bw0;V2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$@tUWL zV~9oX(#iX?gA+yC=Iifto79nPGS%mL-mH+K`YB2##}rs&dzM{tJ*aRi>ax;5&O9p( zrLaOlNA``O0@==&S&l9gZFigA6|+!qw}pjA{*`BSe6uFqyL07W`R^a+e$V+XW8vg= z^1lb8hlCrW<~oMPY5Ql17=^}0Y%pW~!7$;`rqetZRF_ojzHYMhEQ6Dmr;~ZT>E#_N zjc)AkuOBu49H@V}jZO9d!|jEZP3=twAK2e$5!$6`%jn!}88_WqMoxl3LF%sOyNGE8 z7H{;XdI5FsN_JBcj1%eZ5qGnk@XG!Aq?|yJoZHWCetyZzF#o#5>8(=Py=*@>KaW@w zCb_$Ub9Y?&x}Z$&2g17R*ETYUyR}Km+xmaKTRkm%{?7jo6lXSPdObB-y}HcW;onUY zhPHKvB}o&cx2vt#Q?oVhYsD+hm;XfCjb@rPbY!<3j`y$-dF1oYU?RbBVrFJ8ZW`o0jU2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4sBf%ipdZ&9wTFR$@uH`T zV~9oX(#fZ@g##sy)|d0>9rJV-U!=<-y4tr@?ZTOq3CAWa^60+Zq|xzU@eZwNzoJCA zZq4n_5`8OO@-Qf5MSYWrr|WC4+$?duxvosU;uFt3U!>x*+&89T+jr~z)%%Kfdb#|N zZ)JFNGR1z;J7(+J^!+ZLzp~AKZ={pM2X8kZ&?J#iWB6*H#JVczv|Z`-m=m*~DvZ-4hEWQJ-kz2^GlYv119-^N~< qu?O~L=?T{D*8BhCm8Jj5t^3QKO#h~sASwn-It-q!elF{r5}E*;Ax}*J literal 0 HcmV?d00001 diff --git a/data/sparkleshare-gnome.svg b/data/sparkleshare-gnome.svg index 820af8c3..a7d050e3 100644 --- a/data/sparkleshare-gnome.svg +++ b/data/sparkleshare-gnome.svg @@ -16,7 +16,7 @@ inkscape:export-xdpi="90.000000" inkscape:export-ydpi="90.000000" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:version="0.47 r22583" + inkscape:version="0.48.0 r9654" sodipodi:docname="sparkleshare-gnome.svg" sodipodi:version="0.32" style="display:inline;enable-background:new" @@ -30,9 +30,9 @@ guidetolerance="10000" height="300px" id="base" - inkscape:current-layer="layer18" - inkscape:cx="452.99246" - inkscape:cy="152.00765" + inkscape:current-layer="layer20" + inkscape:cx="363.28616" + inkscape:cy="119.67008" inkscape:document-units="px" inkscape:grid-bbox="true" inkscape:pageopacity="0.0" @@ -40,9 +40,9 @@ inkscape:showpageshadow="false" inkscape:snap-bbox="true" inkscape:snap-nodes="false" - inkscape:window-height="805" - inkscape:window-width="1332" - inkscape:window-x="412" + inkscape:window-height="778" + inkscape:window-width="1280" + inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="1" objecttolerance="10000" @@ -2561,6 +2561,46 @@ inkscape:label="small sizes" id="layer20" inkscape:groupmode="layer"> + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +