[mistelix] Support for alpha colors and menu item button background color



commit 176a4f6214ab396883f2026c86addff323828078
Author: Jordi Mas <jmas softcatala org>
Date:   Mon May 18 21:47:33 2009 +0200

    Support for alpha colors and menu item button background color
---
 src/core/Button.cs                     |   12 +++++++++---
 src/core/SlideShow.cs                  |    2 +-
 src/datamodel/ProjectDetails.cs        |    8 ++++----
 src/dialogs/BuildProjectDialog.cs      |    3 +++
 src/dialogs/ProjectPropertiesDialog.cs |   25 ++++++++++++++++++-------
 src/widgets/GtkUtils.cs                |    5 +++++
 6 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/src/core/Button.cs b/src/core/Button.cs
index 487424d..0f2fc11 100644
--- a/src/core/Button.cs
+++ b/src/core/Button.cs
@@ -117,11 +117,17 @@ namespace Mistelix.Core
 				layout.SetMarkup (Text);
 				layout.Ellipsize = Pango.EllipsizeMode.End;
 				layout.Alignment = Pango.Alignment.Center;
-				layout.GetPixelSize (out box_width, out box_height);
-				cr.MoveTo (x, y);
 				layout.SingleParagraphMode = true;
 				layout.Width = -1;
-				
+				layout.GetPixelSize (out box_width, out box_height);
+
+				// Background
+				cr.Color = project.Details.ButtonsBackColor;
+				cr.Rectangle (x, y, box_width, box_height);
+				cr.Fill ();
+				cr.Stroke ();
+
+				cr.MoveTo (x, y);				
 				cr.Color = project.Details.ButtonsForeColor;
 	     			Pango.CairoHelper.ShowLayout (cr, layout);
 			}
diff --git a/src/core/SlideShow.cs b/src/core/SlideShow.cs
index 95e2d59..ae25f2d 100644
--- a/src/core/SlideShow.cs
+++ b/src/core/SlideShow.cs
@@ -115,7 +115,7 @@ namespace Mistelix.Core
 				progress (this, args);
 			}
 
-			// This a blocking call. It does not return until the pipeline sends and EOS
+			// This a blocking call. It does not return until the pipeline sends an EOS
 			lib.SlideShowClose ();
 			Logger.Debug ("SlideShow.GenerateMPEG->Finished generation");
 			return project.FileToFullPath (outfile);
diff --git a/src/datamodel/ProjectDetails.cs b/src/datamodel/ProjectDetails.cs
index 1cd0158..b15371f 100644
--- a/src/datamodel/ProjectDetails.cs
+++ b/src/datamodel/ProjectDetails.cs
@@ -64,12 +64,12 @@ namespace Mistelix.DataModel
 
 		public ProjectDetails () 
 		{
-			buttons_back_color = new Cairo.Color (0.6, 0.6, 0.6);
-			buttons_fore_color = new Cairo.Color (1, 0, 0);
+			buttons_back_color = new Cairo.Color (44d / 255d, 56d / 255d, 119d / 255d, 0.5);
+			buttons_fore_color = new Cairo.Color (1, 1, 1, 255);
 			buttons_fontname = "sans 12";
 
-			slideshows_back_color = new Cairo.Color (0.6, 0.6, 0.6);
-			slideshows_fore_color = new Cairo.Color (1, 1, 1);
+			slideshows_back_color = new Cairo.Color (44d / 255d, 56d / 255d, 119d / 255d, 0.5);
+			slideshows_fore_color = new Cairo.Color (1, 1, 1, 255);
 			slideshows_fontname = "sans 12";
 		}
 
diff --git a/src/dialogs/BuildProjectDialog.cs b/src/dialogs/BuildProjectDialog.cs
index cfa8fbf..bd4bd7b 100644
--- a/src/dialogs/BuildProjectDialog.cs
+++ b/src/dialogs/BuildProjectDialog.cs
@@ -92,6 +92,9 @@ namespace Mistelix.Dialogs
 		// This is a particular case since the Cancel button is not part of the standard dlg button bar
 		void OnCancel (object sender, EventArgs args)	
 		{
+			if (thread != null)
+				thread.Abort ();
+
 			Dialog.Respond (ResponseType.Cancel);
 		}
 	
diff --git a/src/dialogs/ProjectPropertiesDialog.cs b/src/dialogs/ProjectPropertiesDialog.cs
index ed2ceb5..8e1044b 100644
--- a/src/dialogs/ProjectPropertiesDialog.cs
+++ b/src/dialogs/ProjectPropertiesDialog.cs
@@ -90,14 +90,24 @@ namespace Mistelix.Dialogs
 			output_dir.Text = project.Details.OutputDir;
 
 			fontslides_button.FontName = project.Details.SlideshowsFontName;
+
+			backslides_button.UseAlpha = foreslides_button.UseAlpha = true;
+			foreslides_button.Alpha = (ushort) (project.Details.SlideshowsForeColor.A * 65535);
+			backslides_button.Alpha = (ushort) (project.Details.SlideshowsBackColor.A * 65535);
+
 			foreslides_button.Color = GtkUtils.CairoToGdkColor (project.Details.SlideshowsForeColor);
 			backslides_button.Color = GtkUtils.CairoToGdkColor (project.Details.SlideshowsBackColor);
-
+	
 			if (dvd_project == true) // DVD tab
 			{
 				notebook.RemovePage (PAGE_THEORA);
 
 				fontbuttons_button.FontName = project.Details.ButtonsFontName;
+
+				forebuttons_button.UseAlpha = backbuttons_button.UseAlpha = true;
+				forebuttons_button.Alpha = (ushort) (project.Details.ButtonsForeColor.A * 65535);
+				backbuttons_button.Alpha = (ushort) (project.Details.ButtonsBackColor.A * 65535);
+
 				forebuttons_button.Color = GtkUtils.CairoToGdkColor (project.Details.ButtonsForeColor);
 				backbuttons_button.Color = GtkUtils.CairoToGdkColor (project.Details.ButtonsBackColor);
 
@@ -202,13 +212,13 @@ namespace Mistelix.Dialogs
 					needs_repaint = true;
 				}
 
-				if (project.Details.ButtonsForeColor.Equals (GtkUtils.GdkToCairoColor (forebuttons_button.Color)) == false) {
-					project.Details.ButtonsForeColor = GtkUtils.GdkToCairoColor (forebuttons_button.Color);
+				if (project.Details.ButtonsForeColor.Equals (GtkUtils.GdkToCairoColor (forebuttons_button.Color, forebuttons_button.Alpha)) == false) {
+					project.Details.ButtonsForeColor = GtkUtils.GdkToCairoColor (forebuttons_button.Color, forebuttons_button.Alpha);
 					needs_repaint = true;
 				}
 	
-				if (project.Details.ButtonsBackColor.Equals (GtkUtils.GdkToCairoColor (backbuttons_button.Color)) == false) {
-					project.Details.ButtonsBackColor = GtkUtils.GdkToCairoColor (backbuttons_button.Color);
+				if (project.Details.ButtonsBackColor.Equals (GtkUtils.GdkToCairoColor (backbuttons_button.Color, backbuttons_button.Alpha)) == false) {
+					project.Details.ButtonsBackColor = GtkUtils.GdkToCairoColor (backbuttons_button.Color, backbuttons_button.Alpha);
 					needs_repaint = true;
 				}
 
@@ -246,8 +256,9 @@ namespace Mistelix.Dialogs
 			}
 
 			project.Details.SlideshowsFontName = fontslides_button.FontName;
-			project.Details.SlideshowsForeColor = GtkUtils.GdkToCairoColor (foreslides_button.Color);
-			project.Details.SlideshowsBackColor = GtkUtils.GdkToCairoColor (backslides_button.Color);
+			project.Details.SlideshowsForeColor = GtkUtils.GdkToCairoColor (foreslides_button.Color, foreslides_button.Alpha);
+			project.Details.SlideshowsBackColor = GtkUtils.GdkToCairoColor (backslides_button.Color, backslides_button.Alpha);
+
 		}
 
 		void OnBrowse (object o, EventArgs args)
diff --git a/src/widgets/GtkUtils.cs b/src/widgets/GtkUtils.cs
index 83eb04b..4af1202 100644
--- a/src/widgets/GtkUtils.cs
+++ b/src/widgets/GtkUtils.cs
@@ -45,6 +45,11 @@ namespace Mistelix.Widgets
 			cr.Restore ();
 		}
 
+		public static Cairo.Color GdkToCairoColor (Gdk.Color color, int alpha)
+		{
+			return new Cairo.Color (color.Red / 65535.0, color.Green / 65535.0, color.Blue / 65535.0, alpha / 65535.0);
+		}
+
 		public static Cairo.Color GdkToCairoColor (Gdk.Color color)
 		{
 			return new Cairo.Color (color.Red / 65535.0, color.Green / 65535.0, color.Blue / 65535.0);



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