openshot.code team mailing list archive
-
openshot.code team
-
Mailing list archive
-
Message #00585
[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):