[glabels/vala] Hookup object size and position properties to object editor.



commit c1d5e24b9612f02a6b9ae15f85afa5fa4da21ea8
Author: Jim Evins <evins snaught com>
Date:   Wed Mar 21 23:02:05 2012 -0400

    Hookup object size and position properties to object editor.

 glabels/label_object.vala  |   28 ++++++++++++++++++++++++++++
 glabels/object_editor.vala |   43 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 69 insertions(+), 2 deletions(-)
---
diff --git a/glabels/label_object.vala b/glabels/label_object.vala
index 7b78618..79fd089 100644
--- a/glabels/label_object.vala
+++ b/glabels/label_object.vala
@@ -593,6 +593,34 @@ namespace glabels
 		}
 
 
+		public void set_w_honor_aspect( double w )
+		{
+			double h = w * aspect_ratio;
+
+			if ( ( _w != w ) || ( _h != h ) )
+			{
+				_w = w;
+				_h = h;
+
+				changed();
+			}
+		}
+
+
+		public void set_h_honor_aspect( double h )
+		{
+			double w = h / aspect_ratio;
+
+			if ( ( _w != w ) || ( _h != h ) )
+			{
+				_w = w;
+				_h = h;
+
+				changed();
+			}
+		}
+
+
 		public LabelRegion get_extent()
 		{
 			double xa1 =   - line_width/2;
diff --git a/glabels/object_editor.vala b/glabels/object_editor.vala
index 967d3aa..c273578 100644
--- a/glabels/object_editor.vala
+++ b/glabels/object_editor.vala
@@ -267,6 +267,12 @@ namespace glabels
 
 		private void on_selection_changed()
 		{
+			if ( object != null )
+			{
+				object.moved.disconnect( on_object_moved );
+				object.changed.disconnect( on_object_changed );
+			}
+
 			if ( label.is_selection_atomic() )
 			{
 				object = label.get_1st_selected_object();
@@ -305,6 +311,9 @@ namespace glabels
 				title_label.set_sensitive( true );
 					
 				notebook.show();
+
+				object.moved.connect( on_object_moved );
+				object.changed.connect( on_object_changed );
 			}
 			else
 			{
@@ -355,6 +364,20 @@ namespace glabels
 		}
 
 
+		private void on_object_moved()
+		{
+			load_pos_x_spin();
+			load_pos_y_spin();
+		}
+
+
+		private void on_object_changed()
+		{
+			load_size_w_spin();
+			load_size_h_spin();
+		}
+
+
 		private void on_line_width_spin_changed()
 		{
 			if ( object != null )
@@ -469,7 +492,15 @@ namespace glabels
 			if ( object != null )
 			{
 				w = size_w_spin.get_value() * units.points_per_unit;
-				object.w = w;
+
+				if ( size_aspect_check.get_active() )
+				{
+					object.set_w_honor_aspect( w );
+				}
+				else
+				{
+					object.w = w;
+				}
 			}
 		}
 
@@ -490,7 +521,15 @@ namespace glabels
 			if ( object != null )
 			{
 				h = size_h_spin.get_value() * units.points_per_unit;
-				object.h = h;
+
+				if ( size_aspect_check.get_active() )
+				{
+					object.set_h_honor_aspect( h );
+				}
+				else
+				{
+					object.h = h;
+				}
 			}
 		}
 



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