VFile.py: fix bogus getrandomframe().
Vedit.py, VeditForm.fd: added scroll bar, Trunc, layout rearrangement.
Viewer.py: added random access, qinfo() function.
diff --git a/Demo/sgi/video/Vedit.py b/Demo/sgi/video/Vedit.py
index 4d763b0..d5ef365 100755
--- a/Demo/sgi/video/Vedit.py
+++ b/Demo/sgi/video/Vedit.py
@@ -19,6 +19,11 @@
 import Viewer
 import getopt
 import string
+import watchcursor
+
+ARROW = 0
+WATCH = 1
+watchcursor.defwatch(WATCH)
 
 
 def main():
@@ -57,6 +62,14 @@
 			if self.vout:
 				self.vout.redraw(val)
 
+	def busy(self):
+		gl.winset(self.form.window)
+		gl.setcursor(WATCH, 0, 0)
+
+	def ready(self):
+		gl.winset(self.form.window)
+		gl.setcursor(ARROW, 0, 0)
+
 
 	def iocheck(self):
 		self.msg('')
@@ -98,7 +111,18 @@
 
 	def cb_in_back(self, *args):
 		if not self.icheck(): return
-		if not self.vin.backup(): self.err('Input buffer exhausted')
+		if not self.vin.backup(): self.err('Begin of input file')
+		self.ishow()
+
+	def cb_in_slider(self, *args):
+		if not self.icheck(): return
+		left, pos, right = self.vin.qinfo()
+		i = int(self.in_slider.get_slider_value())
+		i = max(i, left)
+		i = min(i, right)
+		if i == pos: return
+		if not self.vin.seek(i):
+			self.err('Input seek failed')
 		self.ishow()
 
 	def cb_in_rewind(self, *args):
@@ -128,7 +152,7 @@
 			return
 		self.oshow()
 		if not self.vin.backup():
-			self.err('Input buffer exhausted')
+			self.err('Begin of input file')
 			return
 		self.ishow()
 
@@ -154,6 +178,23 @@
 		if not self.vout.backup(): self.err('Output buffer exhausted')
 		self.oshow()
 
+	def cb_out_slider(self, *args):
+		if not self.ocheck(): return
+		i = int(self.out_slider.get_slider_value())
+		left, pos, right = self.vout.qinfo()
+		i = int(self.out_slider.get_slider_value())
+		i = max(i, left)
+		i = min(i, right)
+		if i == pos: return
+		if not self.vout.seek(i):
+			self.err('Output seek failed')
+		self.oshow()
+
+	def cb_out_trunc(self, *arcs):
+		if not self.ocheck(): return
+		self.vout.trunc()
+		self.oshow()
+
 	def cb_out_rewind(self, *args):
 		if not self.ocheck(): return
 		self.vout.rewind()
@@ -171,8 +212,7 @@
 		basename = os.path.split(filename)[1]
 		title = 'in: ' + basename
 		try:
-			vin = Viewer.InputViewer().init(filename, \
-				title, self.qsize)
+			vin = Viewer.InputViewer().init(filename, title)
 		except:
 			self.err('Can\'t open input file', filename)
 			return
@@ -183,8 +223,10 @@
 
 	def close_input(self):
 		if self.vin:
+			self.busy()
 			self.msg('Closing input file...')
 			self.vin.close()
+			self.ready()
 		self.msg('')
 		self.vin = None
 		self.in_file.label = '(none)'
@@ -213,8 +255,10 @@
 
 	def close_output(self):
 		if self.vout:
+			self.busy()
 			self.msg('Closing output file...')
 			self.vout.close()
+			self.ready()
 		self.msg('')
 		self.vout = None
 		self.out_file.label = '(none)'
@@ -238,13 +282,15 @@
 		if v == None:
 			left = right = pos = 0
 		else:
-			left, right = v.qsizes()
-			pos = v.tell()
-			left = pos - left
-			right = pos + right
+			left, pos, right = v.qinfo()
 		getattr(self, io + '_info1').label = `left`
 		getattr(self, io + '_info2').label = `pos`
 		getattr(self, io + '_info3').label = `right`
+		sl = getattr(self, io + '_slider')
+		sl.freeze_object()
+		sl.set_slider_bounds(left, right)
+		sl.set_slider_value(pos)
+		sl.unfreeze_object()
 
 
 try: