[tomboy] Added an underline functionality as an Addin which is disabled by default.



commit 7065c5235b90c386068d5bf1edf6df5905846460
Author: Mark Wakim <markwakim gmail com>
Date:   Mon Jun 22 21:22:10 2009 -0400

    Added an underline functionality as an Addin which is disabled by default.

 Tomboy.mdp                                    |    5 ++-
 Tomboy/Addins/Makefile.am                     |    1 +
 Tomboy/Addins/Underline/Makefile.am           |   41 +++++++++++++++++++++
 Tomboy/Addins/Underline/Underline.addin.xml   |   21 +++++++++++
 Tomboy/Addins/Underline/UnderlineMenuItem.cs  |   49 +++++++++++++++++++++++++
 Tomboy/Addins/Underline/UnderlineNoteAddin.cs |   38 +++++++++++++++++++
 Tomboy/Addins/Underline/UnderlineTag.cs       |   20 ++++++++++
 configure.in                                  |    1 +
 po/POTFILES.in                                |    1 +
 9 files changed, 176 insertions(+), 1 deletions(-)
---
diff --git a/Tomboy.mdp b/Tomboy.mdp
index f294373..0bb6fab 100644
--- a/Tomboy.mdp
+++ b/Tomboy.mdp
@@ -84,6 +84,9 @@
     <File name="Tomboy/Addins/StickyNoteImport/StickyNoteImportNoteAddin.cs" subtype="Code" buildaction="Compile" />
     <File name="Tomboy/Addins/Evolution/EvolutionNoteAddin.cs" subtype="Code" buildaction="Compile" />
     <File name="Tomboy/Addins/GalagoPresence" subtype="Directory" buildaction="Compile" />
+    <File name="Tomboy/Addins/Underline/UnderlineNoteAddin.cs" subtype="Code" buildaction="Compile" />
+    <File name="Tomboy/Addins/Underline/UnderlineTag.cs" subtype="Code" buildaction="Compile" />
+    <File name="Tomboy/Addins/Underline/UnderlineMenuItem.cs" subtype="Code" buildaction="Compile" />
     <File name="Tomboy/Synchronization" subtype="Directory" buildaction="Compile" />
     <File name="Tomboy/Synchronization/FuseSyncServiceAddin.cs" subtype="Code" buildaction="Compile" />
     <File name="Tomboy/Gnome.Keyring/AccessRights.cs" subtype="Code" buildaction="Compile" />
@@ -194,4 +197,4 @@
     <AsmRefVar />
     <ProjectRefVar />
   </MonoDevelop.Autotools.MakefileInfo>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/Tomboy/Addins/Makefile.am b/Tomboy/Addins/Makefile.am
index a6c4d16..a5f32f9 100644
--- a/Tomboy/Addins/Makefile.am
+++ b/Tomboy/Addins/Makefile.am
@@ -14,6 +14,7 @@ SUBDIRS =				\
 	StickyNoteImport	\
 	Tasque			\
 	NoteDirectoryWatcher			\
+	Underline		\
 	WebDavSyncService			\
 	WebSyncService
 
diff --git a/Tomboy/Addins/Underline/Makefile.am b/Tomboy/Addins/Underline/Makefile.am
new file mode 100644
index 0000000..eb9d3a0
--- /dev/null
+++ b/Tomboy/Addins/Underline/Makefile.am
@@ -0,0 +1,41 @@
+include $(top_srcdir)/Makefile.include
+
+CSFLAGS = 		\
+	-debug 		\
+	-define:DEBUG 	\
+	-target:library
+
+ASSEMBLIES = 					\
+	$(LINK_TOMBOY_EXE)			\
+	$(GTKSHARP_LIBS) 				\
+	$(LINK_MONO_ADDINS)			\
+	-r:Mono.Posix
+
+ADDIN_NAME = Underline
+TARGET = $(ADDIN_NAME).dll
+CSFILES = \
+	$(srcdir)/UnderlineMenuItem.cs		\
+	$(srcdir)/UnderlineNoteAddin.cs		\
+	$(srcdir)/UnderlineTag.cs
+RESOURCES = \
+	-resource:$(srcdir)/$(ADDIN_NAME).addin.xml
+
+$(TARGET).mdb: $(TARGET)
+
+$(TARGET): $(CSFILES) $(top_builddir)/Tomboy/Tomboy.exe
+	$(CSC) -out:$@ $(CSFLAGS) $(ASSEMBLIES) $(CSFILES) $(RESOURCES)
+
+
+addinsdir = $(pkglibdir)/addins
+addins_DATA = 			\
+	$(TARGET)		\
+	$(TARGET).mdb
+
+EXTRA_DIST =            	\
+	$(CSFILES) \
+	$(srcdir)/$(ADDIN_NAME).addin.xml
+
+CLEANFILES =				\
+	$(TARGET).mdb \
+	$(TARGET)
+
diff --git a/Tomboy/Addins/Underline/Underline.addin.xml b/Tomboy/Addins/Underline/Underline.addin.xml
new file mode 100644
index 0000000..59b1606
--- /dev/null
+++ b/Tomboy/Addins/Underline/Underline.addin.xml
@@ -0,0 +1,21 @@
+<Addin id="UnderlineAddin"
+	namespace="Tomboy"
+	name="Underline"
+	author="Tomboy Project"
+	description="Adds ability to underline text."
+	category="Formatting"
+	defaultEnabled="false"
+	version="0.1">
+
+ 	<Runtime>
+ 		<Import assembly="Underline.dll" />
+ 	</Runtime>
+
+	<Dependencies>
+		<Addin id="Tomboy" version="0.10" />
+	</Dependencies>
+
+	<Extension path="/Tomboy/NoteAddins">
+		<NoteAddin type="Tomboy.Underline.UnderlineNoteAddin" />
+	</Extension>
+</Addin>
diff --git a/Tomboy/Addins/Underline/UnderlineMenuItem.cs b/Tomboy/Addins/Underline/UnderlineMenuItem.cs
new file mode 100644
index 0000000..066e521
--- /dev/null
+++ b/Tomboy/Addins/Underline/UnderlineMenuItem.cs
@@ -0,0 +1,49 @@
+using System;
+using Gtk;
+using Mono.Unix;
+
+namespace Tomboy.Underline
+{
+	class UnderlineMenuItem : CheckMenuItem
+	{
+		NoteAddin Addin;
+		bool event_freeze;
+
+		public UnderlineMenuItem (NoteAddin addin) : base ("<u>" + Catalog.GetString ("_Underline") + "</u>")
+		{
+			((Label) Child).UseUnderline = true;
+			((Label) Child).UseMarkup = true;
+
+			Addin = addin;
+			Addin.Window.TextMenu.Shown += MenuShown;
+			AddAccelerator ("activate", Addin.Window.AccelGroup,
+				(uint) Gdk.Key.u, Gdk.ModifierType.ControlMask,
+				Gtk.AccelFlags.Visible);
+
+			ShowAll();
+		}
+
+		protected void MenuShown (object sender, EventArgs e)
+		{
+			event_freeze = true;
+			Active = Addin.Buffer.IsActiveTag ("underline");
+			event_freeze = false;
+		}
+
+		protected override void OnActivated ()
+		{
+			if (!event_freeze)
+				Addin.Buffer.ToggleActiveTag ("underline");
+
+			base.OnActivated();
+		}
+
+		protected override void OnDestroyed ()
+		{
+			if (Addin.HasWindow)
+				Addin.Window.TextMenu.Shown -= MenuShown;
+
+			base.OnDestroyed();
+		}
+	}
+}
diff --git a/Tomboy/Addins/Underline/UnderlineNoteAddin.cs b/Tomboy/Addins/Underline/UnderlineNoteAddin.cs
new file mode 100644
index 0000000..51e01e6
--- /dev/null
+++ b/Tomboy/Addins/Underline/UnderlineNoteAddin.cs
@@ -0,0 +1,38 @@
+// Add an Underline item to the font styles menu.
+// (C) 2009 Mark Wakim <markwakim gmail com>, LGPL 2.1 or later.
+
+using Mono.Unix;
+using System;
+using Gtk;
+using Tomboy;
+
+namespace Tomboy.Underline
+{
+	public class UnderlineNoteAddin : NoteAddin
+	{
+		TextTag tag;
+
+		public override void Initialize ()
+		{
+			// Only install Underline addin if it does not currently exist
+			if (Note.TagTable.Lookup ("underline") == null) {
+				tag = new UnderlineTag ();
+				Note.TagTable.Add (tag);
+			}
+		}
+
+		public override void Shutdown ()
+		{
+			// Remove the tag only if we installed it.
+			if (tag != null)
+				Note.TagTable.Remove (tag);
+		}
+
+		public override void OnNoteOpened ()
+		{
+			// Add here instead of in Initialize to avoid creating unopened
+			// notes' windows/buffers.
+			AddTextMenuItem (new UnderlineMenuItem (this));
+		}
+	}
+}
diff --git a/Tomboy/Addins/Underline/UnderlineTag.cs b/Tomboy/Addins/Underline/UnderlineTag.cs
new file mode 100644
index 0000000..ede6455
--- /dev/null
+++ b/Tomboy/Addins/Underline/UnderlineTag.cs
@@ -0,0 +1,20 @@
+using System;
+using Tomboy;
+
+namespace Tomboy.Underline
+{
+	class UnderlineTag : NoteTag
+	{
+		public UnderlineTag () : base ("underline")
+		{
+		}
+
+		public override void Initialize (string element_name)
+		{
+			base.Initialize (element_name);
+			Underline = Pango.Underline.Single;
+			CanGrow = true;
+			CanUndo = true;
+		}
+	}
+}
diff --git a/configure.in b/configure.in
index 7b3936f..4074a8d 100644
--- a/configure.in
+++ b/configure.in
@@ -343,6 +343,7 @@ Tomboy/Addins/Sketching/Makefile
 Tomboy/Addins/SshSyncService/Makefile
 Tomboy/Addins/StickyNoteImport/Makefile
 Tomboy/Addins/Tasque/Makefile
+Tomboy/Addins/Underline/Makefile
 Tomboy/Addins/WebDavSyncService/Makefile
 Tomboy/Addins/WebSyncService/Makefile
 Tomboy/Addins/NoteDirectoryWatcher/Makefile
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2d3de22..a6d6568 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -36,6 +36,7 @@ Tomboy/Addins/SshSyncService/SshSyncService.addin.xml
 Tomboy/Addins/StickyNoteImport/StickyNoteImportNoteAddin.cs
 Tomboy/Addins/StickyNoteImport/StickyNoteImport.addin.xml
 Tomboy/Addins/Tasque/TasqueNoteAddin.cs
+Tomboy/Addins/Underline/UnderlineMenuItem.cs
 Tomboy/Addins/WebDavSyncService/WebDavSyncServiceAddin.cs
 Tomboy/Addins/WebDavSyncService/WebDavSyncService.addin.xml
 Tomboy/Addins/WebSyncService/WebSyncServiceAddin.cs



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]