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;