3a4
> # Original name: tesseractTrainer.py
18a20,23
> # Modified version for work with djvused
> # Modified by Mihail Radu Solcan
> # Last modification: 2008-12-28
>
36a42,44
>
>
>
55a64,65
> DIR_RUp = 4
> DIR_LDown = 5
61a72
> rightup = 0
62a74
> leftdown = 0
150a163,166
> # initial values for y coords as in tesseract
> s.rightup = height - s.top
> s.leftdown = height - s.bottom
> # end initial values
327a344
> self.spinRUp.set_value(s.rightup)
328a346
> self.spinLDown.set_value(s.leftdown)
366a385
> s.rightup -= 1
368a388
> s.rightup += 1
369a390
> self.spinRUp.set_value(s.rightup)
386a408
> s.leftdown += 1
388a411
> s.leftdown -= 1
389a413
> self.spinLDown.set_value(s.leftdown)
404c428
< prevValue = (s.left, s.right, s.top, s.bottom)[dir]
---
> prevValue = (s.left, s.right, s.top, s.bottom, s.rightup, s.leftdown)[dir]
413a438,441
> elif dir == DIR_RUp:
> s.rightup = value
> elif dir == DIR_LDown:
> s.leftdown = value
455a484,529
> def cmdl_loadImageAndBoxes(self, imageName):
> (name, extension) = imageName.rsplit('.', 1)
> # modified box name because tesseract inserts automatically the txt extension
> # boxName = name + '_box.txt'
> # Sometimes one needs however the *.box format:
> boxName = name + '.box'
>
> # Make sure that the image exists
> try:
> f = open(imageName, 'r')
> f.close()
> except IOError:
> self.errorDialog('File not found', self.window)
> return False
> #endtry
>
> height = findImageHeight(imageName)
> try:
> self.boxes = loadBoxData(boxName, height)
> self.loadedBoxFile = boxName
> except IOError:
> self.errorDialog('No corresponding box file', self.window)
> return False
> #endtry
>
> self.pixbuf = gtk.gdk.pixbuf_new_from_file(imageName)
> self.drawingArea.set_size_request(self.pixbuf.get_width(), height)
> self.populateTextVBox()
>
> # Set adjustments on all spin buttons
> self.spinLeft.set_adjustment(
> gtk.Adjustment(0, 0, self.pixbuf.get_width(), 1, 1))
> self.spinRight.set_adjustment(
> gtk.Adjustment(0, 0, self.pixbuf.get_width(), 1, 1))
> self.spinTop.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
> self.spinRUp.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
> self.spinBottom.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
> self.spinLDown.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
>
> self.setImageControlSensitivity(True)
> self.selectedRow = 0
> self.selectedColumn = 0
> self.boxes[0][0].entry.grab_focus()
> return True
> #enddef
>
457a532,534
> # modified box name because tesseract inserts automatically the txt extension
> # boxName = name + '_box.txt'
> # Sometimes one needs however the *.box format:
488a566
> self.spinRUp.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
489a568
> self.spinLDown.set_adjustment(gtk.Adjustment(0, 0, height, 1, 1))
546a626,627
> baseFileName = os.path.basename(fileName)
> self.titleMessage(baseFileName)
604c685
< dialog.set_size_request(450, 200)
---
> dialog.set_size_request(450, 250)
610c691,693
< 'modify it under the terms of the GNU General Public License')
---
> 'modify it under the terms of the GNU General Public License\n'
> '\n'
> 'Modifed in 2008 - for use with djvused and image maps - by Mihail Radu Solcan')
622c705
< dialog.set_size_request(450, 200)
---
> dialog.set_size_request(450, 250)
632a716,718
> 'Ctrl-C: copy coordinates (djvu txt style)\n'
> 'Ctrl-A: copy coordinates (djvu ant style)\n'
> 'Ctrl-M: copy coordinates (html image map style)\n'
665a752,775
> def doCommandsCopy(self, action):
> this = self.boxes[self.selectedRow][self.selectedColumn]
> coords = '%s %s %s %s' % (this.left, this.leftdown, this.right, this.rightup)
> clipboard = gtk.clipboard_get("CLIPBOARD")
> clipboard.set_text(coords, len=-1)
> #enddef
>
> def doCommandsdjvMap(self, action):
> this = self.boxes[self.selectedRow][self.selectedColumn]
> area_width = this.right - this.left
> area_height = this.rightup - this.leftdown
> coords = '%s %s %s %s' % \
> (this.left, this.leftdown, area_width, area_height)
> clipboard = gtk.clipboard_get("CLIPBOARD")
> clipboard.set_text(coords, len=-1)
> #enddef
>
> def doCommandshtmMap(self, action):
> this = self.boxes[self.selectedRow][self.selectedColumn]
> coords = '%s,%s,%s,%s' % (this.left, this.top, this.right, this.bottom)
> clipboard = gtk.clipboard_get("CLIPBOARD")
> clipboard.set_text(coords, len=-1)
> #enddef
>
701a812
> self.spinRUp.set_value(this.rightup)
702a814
> self.spinLDown.set_value(this.leftdown)
734a847
> self.spinRUp.set_value(this.rightup)
735a849
> self.spinLDown.set_value(this.leftdown)
806a921,926
> ('Copy', None, '_Copy coords', 'C', None,
> self.doCommandsCopy),
> ('djvMap', None, '_djvMap coords', 'A', None,
> self.doCommandsdjvMap),
> ('htmMap', None, '_htmMap coords', 'M', None,
> self.doCommandshtmMap),
822a943,947
> def titleMessage(self, title):
> """ Invoked when we open files """
> self.window.set_title(title)
> #enddef
>
825c950
< self.window.set_title("Tesseract Box Editor")
---
> self.titleMessage("Tesseract Box Editor")
827c952
< self.window.set_size_request(800, 600)
---
> self.window.set_size_request(900, 600)
884a1010
>
889c1015
< l = gtk.Label(" Bottom:");
---
> l = gtk.Label(" Bot:");
897c1023,1031
< l = gtk.Label(" Top:");
---
> l = gtk.Label(" Top:");
> self.buttonBox.pack_end(l, False, False, 0)
> l.show()
>
> self.spinRUp = gtk.SpinButton()
> self.spinRUp.connect("changed", self.onSpinButtonChanged, DIR_RUp)
> self.buttonBox.pack_end(self.spinRUp, False, False, 0)
> self.spinRUp.show()
> l = gtk.Label(" r-up:");
905c1039,1047
< l = gtk.Label(" Right:");
---
> l = gtk.Label(" Right:");
> self.buttonBox.pack_end(l, False, False, 0)
> l.show()
>
> self.spinLDown = gtk.SpinButton()
> self.spinLDown.connect("changed", self.onSpinButtonChanged, DIR_LDown)
> self.buttonBox.pack_end(self.spinLDown, False, False, 0)
> self.spinLDown.show()
> l = gtk.Label(" l-down:");
919a1062,1072
>
> if len(sys.argv)>=2 and sys.argv[1] != "":
> argfileName=sys.argv[1]
> argcurrentdir = os.path.dirname(sys.argv[1])
> self.cmdl_loadImageAndBoxes(argfileName)
> argbaseFileName = os.path.basename(argfileName)
> self.titleMessage(argbaseFileName)
> else:
> argfileName=None
> argcurrentdir = os.path.dirname(sys.argv[0])
> self.isPaused = False;