← Back to team overview

openshot.code team mailing list archive

[Branch ~openshot.code/openshot/main] Rev 693: Improved keypress support, to better identify CTRL, SHIFT, and ALT keys, and modified the followi...

 

------------------------------------------------------------
revno: 693
committer: Jonathan Thomas <Jonathan.Oomph@xxxxxxxxx>
branch nick: openshot
timestamp: Fri 2012-09-07 01:17:26 -0500
message:
  Improved keypress support, to better identify CTRL, SHIFT, and ALT keys, and modified the following keyboard shortcuts:
  
  1) Middle mouse click launches Clip Properties
  2) CTRL + Drag = snap X to original X position
modified:
  openshot/classes/clip.py
  openshot/windows/MainGTK.py


--
lp:openshot
https://code.launchpad.net/~openshot.code/openshot/main

Your team OpenShot Code is subscribed to branch lp:openshot.
To unsubscribe from this branch go to https://code.launchpad.net/~openshot.code/openshot/main/+edit-subscription
=== modified file 'openshot/classes/clip.py'
--- openshot/classes/clip.py	2012-09-07 03:12:12 +0000
+++ openshot/classes/clip.py	2012-09-07 06:17:26 +0000
@@ -1574,7 +1574,7 @@
 			if (event.state & gtk.gdk.BUTTON1_MASK):
 
 				# don't allow the clip to slide past the beginning of the canvas
-				total_x_diff = new_x - self.drag_x 
+				total_x_diff = new_x - self.drag_x
 				total_y_diff = new_y - self.drag_y
 				if (item.get_bounds().x1 + total_x_diff < 0):
 					total_x_diff = 0.0 - float(item.get_bounds().x1)
@@ -1584,8 +1584,24 @@
 					# mark project as modified
 					self.parent.parent.project.set_project_modified(is_modified=True, refresh_xml=True)
 
-					# move clip
-					item.translate (total_x_diff, total_y_diff)
+					# Determine CTRL snapping amount (if CTRL key is pressed)
+					if not self.parent.parent.project.form._CTRL:
+						
+						# move clip normally
+						item.translate (total_x_diff, total_y_diff)
+					
+					else:
+						# CTRL is pressed
+						if abs(self.stored_x - (total_x_diff + item.get_bounds().x1)) > 15:
+
+							# move clip
+							item.translate (total_x_diff, total_y_diff)
+							
+						else:
+
+							# move clip
+							item.translate (0, total_y_diff)
+				
 
 		# RESIZE MODE
 		if isResize:
@@ -1740,8 +1756,12 @@
 		item.raise_(None)
 
 		# set the x and y where the cursor started dragging from
+		self.start_drag_x = float(event.x)
 		self.drag_x = float(event.x)
 		self.drag_y = float(event.y)
+		
+		# Do not show clip properties by default
+		self.request_show_properties = False
 
 		# only respond to the first mouse button
 		if event.button == 1:
@@ -1775,7 +1795,7 @@
 					self.show_preview = False
 
 
-				if event.state & gtk.gdk.SHIFT_MASK:
+				if self.parent.parent.project.form._SHIFT:
 					# remove clip from goocanvas
 					parent = item.get_parent()
 					child_num = parent.find_child (item)
@@ -1795,8 +1815,8 @@
 					self.stored_y = item.get_bounds().y1
 					canvas.pointer_grab (item, gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.BUTTON_RELEASE_MASK, fleur, event.time)
 					
-					if self.parent.parent.project.form._ALT == True:
-						
+					if self.parent.parent.project.form._CTRL:
+
 						# show the clip x position indicator when dragging clips
 						theme = self.parent.parent.project.theme
 	
@@ -1811,12 +1831,6 @@
 						# the + 2 is to compensate for the initial -2 position to hide the line
 						self.parent.parent.snap_line.props.x = self.stored_x + 2 
 						self.parent.parent.snap_line.props.height = Size_Of_Line + theme_settings["timeline"]["ruler"]["playhead_line"]["length_offset"]
-						
-
-				if (event.state == gtk.gdk.CONTROL_MASK) or (event.state == gtk.gdk.CONTROL_MASK | gtk.gdk.MOD2_MASK):
-					self.request_show_properties = True
-				else:
-					self.request_show_properties = False
 
 
 			# RAZOR MODE
@@ -1859,6 +1873,11 @@
 			elif isSnap:
 				pass
 
+		elif event.button == 2:
+
+			# show clip properties (middle mouse button)
+			self.request_show_properties = True
+
 		elif event.button == 3:
 			# show the track popup menu
 			self.parent.parent.project.form.mnuClip1.showmnu(event, self, item)
@@ -2049,13 +2068,8 @@
 			distance_from_clip = distance_from_right_clip
 		elif distance_from_playhead != 0:
 			distance_from_clip = distance_from_playhead
-		
+
 		# return the # of pixels to snap the clip
-		if clip_object.parent.parent.project.form._ALT == True:
-			# snap to snap_line
-			if abs(self.stored_x - canvas_item.get_bounds().x1) <= 15:
-				distance_from_clip = (self.stored_x) - canvas_item.get_bounds().x1
-			
 		return distance_from_clip
 
 
@@ -2134,12 +2148,9 @@
 					# Mark clip as modified
 					self.parent.parent.project.set_project_modified(is_modified=True, refresh_xml=True, type = type_of_event)
 				
+				# Hide CTLR snap line
 				self.parent.parent.snap_line.props.visibility = goocanvas.ITEM_INVISIBLE
-				#self.parent.parent.project.form.lblStatus.set_label('')
-					
 
-				if self.request_show_properties:
-					self.show_properties(item, 0)
 
 		elif isResize:
 
@@ -2166,6 +2177,10 @@
 				self.set_view_mode()
 				self.parent.parent.project.set_project_modified(is_modified=True, refresh_xml=True, type = _("Resized clip"))
 
+		# Do we show the clip properties?
+		if self.request_show_properties:
+			self.show_properties(item, 0)
+
 		# raise the play-head line, so it's not covered up
 		self.parent.parent.raise_transitions()
 		self.parent.parent.play_head.raise_(None)

=== modified file 'openshot/windows/MainGTK.py'
--- openshot/windows/MainGTK.py	2012-09-06 21:06:48 +0000
+++ openshot/windows/MainGTK.py	2012-09-07 06:17:26 +0000
@@ -67,6 +67,7 @@
 		self.import_image_seq_dialog = None
 		self._SHIFT = False
 		self._ALT = False
+		self._CTRL = False
 		
 		# variable for file filtering
 		self.filter_category = "Show All"
@@ -2188,7 +2189,23 @@
 		# Get the key name that was pressed
 		keyname = str.lower(gtk.gdk.keyval_name(event.keyval))
 
+
 		if self.is_edit_mode == False:
+			# Detect SHIFT, ALT, and CTRL keys
+			if event.keyval == gtk.keysyms.Shift_L or event.keyval == gtk.keysyms.Shift_R:
+				# Toggle SHIFT mode
+				self._SHIFT = True
+
+			elif keyname == 'alt_l' or keyname == 'alt_r' or keyname == 'iso_level3_shift':
+				# Toggle ALT mode
+				self._ALT = True
+
+			elif (keyname == 'control_l' or keyname == 'control_r') or (event.state == gtk.gdk.CONTROL_MASK) or (event.state == gtk.gdk.CONTROL_MASK | gtk.gdk.MOD2_MASK):
+				# Toggle CTRL mode
+				self._CTRL = True
+			
+			
+			# Detect other keys
 			if keyname == "c":
 				# Cut all tracks at this point (whereever the playhead is)
 				self.cut_at_playhead()
@@ -2234,40 +2251,24 @@
 				self.toggle_mode()
 				return True
 			
-			elif keyname == "d":
-				if (event.state == gtk.gdk.CONTROL_MASK) or (event.state == gtk.gdk.CONTROL_MASK | gtk.gdk.MOD2_MASK):
-					#snapshot
-					self.get_frame_snapshot()
-					return True
+			elif keyname == "d" and self._CTRL:
+				#snapshot
+				self.get_frame_snapshot()
+				return True
 				
 			elif keyname == "m":
-					#add a marker when the key is pressed
-					self.on_tlbAddMarker_clicked(widget)
-					return True
-				
-			elif event.keyval == gtk.keysyms.Shift_L or event.keyval == gtk.keysyms.Shift_R:
-				#set the shift mode to true
-				self._SHIFT = True
+				#add a marker when the key is pressed
+				self.on_tlbAddMarker_clicked(widget)
 				return True
 			
-			# gtk.keysyms.Alt_R doesn't seem to be working, so use the actual keyname
-			elif keyname == 'iso_level3_shift':
-				self._ALT = True
-				return True
 				
 	def on_frmMain_key_release_event(self, widget, event):
 		keyname = str.lower(gtk.gdk.keyval_name(event.keyval))
-		
-		if self.is_edit_mode == False:
-			
-			if event.keyval == gtk.keysyms.Shift_L or event.keyval == gtk.keysyms.Shift_R:
-				# Release shift mode
-				self._SHIFT = False
-				return True
-			
-			elif keyname == 'iso_level3_shift':
-				self._ALT = False
-				return True
+
+		# Toggle special keys
+		self._SHIFT = False
+		self._ALT = False
+		self._CTRL = False
 		
 					
 	def toggle_mode(self):