reference/ocr-simple/tcl_interface.cc
author viric@llimona
Thu, 18 May 2006 23:12:51 +0200
changeset 0 6b8091ca909a
permissions -rw-r--r--
Init from working directory of svn repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#include <tcl.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include <tk.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
#include <string.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
#include "link.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
#include "tcl_interface.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
#include "stdio.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
#include "Page.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
extern Page* global_page;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
extern Tcl_Interp* TCL_ip;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
extern Tk_Window main_window;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
extern double SCALE_FACTOR;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
extern int DISPLAY_SPELLING_MISTAKES;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
static int page_currently_open = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
void scale(int& coordinate)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
  coordinate = (int)(coordinate * SCALE_FACTOR);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
int error(char* s)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
/* would like to make this take var num args */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
  printf("Error: %s", s);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
int quit_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
  printf("Thank you for using OCRchie.\n");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
  exit(0);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
int get_skew_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
  get_skew(global_page->rmap());
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
int deskew_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
  if(DESKEW_METHOD != -1)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
    {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
      if(global_page->deskew(DESKEW_METHOD))
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
	global_page->rmap()->display_intervals("black");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
      return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
    }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
  else
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
    return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
int display_intervals_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    54
  global_page->rmap()->display_intervals("black");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    55
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
int page_open_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
  if(ac != 2)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
    return TCL_ERROR;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
  printf("Opening %s\n", argv[1]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
  if(page_currently_open == 1)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
    {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    65
      /* should print some message about closing the current one first */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    66
      return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
    }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    68
  global_page = new Page;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    69
  if(global_page->readMap(argv[1]) != VALID)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
    interp->result = "0";
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    71
  else
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    72
    interp->result = "1";
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    73
  page_currently_open = 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    74
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    75
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    76
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    77
int get_page_height_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    79
  sprintf(interp->result, "%d", global_page->get_height());
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    80
  /*  printf("Interpereter height = %s\n", interp->result); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    81
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    82
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    83
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    84
int get_page_width_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    85
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    86
  sprintf(interp->result, "%d",  global_page->get_width());
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    87
  /* printf("Interpereter width = %s\n", interp->result); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    88
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    89
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    90
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    91
int zoom_in_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    92
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    93
  SCALE_FACTOR = SCALE_FACTOR * 2;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    94
  global_page->rmap()->display_intervals("black");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    95
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    96
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    97
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    98
int zoom_out_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    99
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   100
  SCALE_FACTOR = SCALE_FACTOR * 0.5;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   101
  global_page->rmap()->display_intervals("black");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   102
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   103
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   104
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   105
int deallocate_page_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   106
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   107
  if(page_currently_open == 0)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   108
    return TCL_OK;  /* don't do anything if their isn't anything open */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   109
  delete global_page;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   110
  page_currently_open = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   111
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   112
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   113
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   114
int learn_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   115
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   116
  printf("Learning from %s and %s\n", argv[1], argv[2]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   117
  learn(argv[1], argv[2]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   118
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   119
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   120
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   121
int learn_data_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   122
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   123
  printf("Learning data from %s\n", argv[1]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   124
  readLearnedGroups(argv[1]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   125
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   126
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   127
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   128
int write_word_pos_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   129
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   130
  global_page->writeWordPos(argv[1]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   131
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   132
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   133
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   134
int write_learned_chars_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   135
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   136
  writeLearnedGroups(argv[1]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   137
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   138
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   139
  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   140
int recognize_cmd(ClientData clientData, Tcl_Interp *interp, int ac, char** argv)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   141
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   142
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   143
  /* just in case someone has left something sitting around */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   144
  docommand(".main_window.edit_window.text_part delete 1.0 end");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   145
  docommand("set COLORED_WORDS {}");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   146
  /* printf("Calling deskew\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   147
  deskew_cmd(clientData, interp, ac, argv);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   148
  /*  printf("Calling setlines\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   149
  global_page->setLines();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   150
  /* printf("Calling extractComponents\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   151
  global_page->extractComponents();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   152
  /* printf("Calling recognize\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   153
  global_page->recognize();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   154
  /* printf("Calling extractwords\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   155
  global_page->extractWords();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   156
  if(SPELLCHECK)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   157
    {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   158
      /* printf("Spellchecking\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   159
      global_page->spellcheck();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   160
    }	     
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   161
  /* printf("Calling sendwordstotcl\n"); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   162
  global_page->send_words_to_tcl();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   163
  return TCL_OK;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   164
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   165
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   166
static int
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   167
vdocommand1(char* s)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   168
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   169
/* final function called to do a tcl docommand */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   170
  int code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   171
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   172
  code = Tcl_Eval(TCL_ip, s);      
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   173
  if (code == TCL_ERROR)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   174
    error(TCL_ip->result);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   175
  return code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   176
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   177
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   178
void update()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   179
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   180
  Tcl_DoOneEvent(TCL_DONT_WAIT);   
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   181
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   182
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   183
static int
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   184
vdocommand(int record, char* fmt, va_list args)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   185
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   186
/* helper for docommand */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   187
  char buf[4097];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   188
  int code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   189
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   190
  vsprintf(buf, fmt, args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   191
  if (strchr(buf, '\?'))
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   192
    error("Huh?");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   193
  code = vdocommand1(buf);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   194
  return code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   195
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   196
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   197
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   198
int
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   199
docommand(char* fmt, ...)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   200
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   201
/* do a tcl command, var number of args */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   202
  va_list args;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   203
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   204
  va_start(args, fmt);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   205
  vdocommand(0, fmt, args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   206
  va_end(args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   207
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   208
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   209
static int
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   210
vset_status1(char* s)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   211
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   212
/* final function called to do a tcl docommand */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   213
  int code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   214
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   215
	code = Tcl_Eval(TCL_ip, s);      
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   216
	if (code == TCL_ERROR)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   217
	  error(TCL_ip->result);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   218
	return code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   219
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   220
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   221
static int
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   222
vset_status(int record, char* fmt, va_list args)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   223
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   224
/* helper for docommand */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   225
  char buf[4097];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   226
  char newbuf[4097];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   227
  int code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   228
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   229
  vsprintf(buf, fmt, args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   230
  sprintf(newbuf, ".main_window.button_bar.msg configure -text \"%s\"", buf); 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   231
  if (strchr(buf, '\?'))
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   232
    error("Huh?");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   233
  code = vset_status1(newbuf);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   234
  return code;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   235
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   236
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   237
int set_status(char* fmt, ...)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   238
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   239
  va_list args;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   240
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   241
  va_start(args, fmt);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   242
  vset_status(0, fmt, args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   243
  va_end(args);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   244
  docommand("update");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   245
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   246
     
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   247
int mispelled(char* word)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   248
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   249
  int result = docommand("spellcheck %s", word);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   250
  /*  printf("call to spellcheck %s returned %s\n", word, TCL_ip->result); */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   251
  if(!(strcmp("MISPELLED", TCL_ip->result)))    
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   252
    return 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   253
  else 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   254
    return 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   255
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   256
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   257
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   258
int initialize_interpreter()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   259
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   260
  TCL_ip = Tcl_CreateInterp();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   261
  Tcl_Init(TCL_ip);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   262
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   263
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   264
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   265
int load_user_interface()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   266
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   267
  // main_window = Tk_CreateMainWindow(TCL_ip, NULL, "OCRchie", "OCRchie");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   268
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   269
 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   270
  Tk_Init(TCL_ip);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   271
  main_window = Tk_CreateWindow(TCL_ip, NULL, "OCRchie", "OCRchie");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   272
  //  Tk_MapWindow(main_window);   /6/21/00
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   273
  docommand("source new_ui.tcl");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   274
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   275
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   276
int initialize_command_procs()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   277
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   278
  Tcl_CreateCommand(TCL_ip, "page_open", page_open_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   279
  Tcl_CreateCommand(TCL_ip, "get_page_height", get_page_height_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   280
  Tcl_CreateCommand(TCL_ip, "get_page_width", get_page_width_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   281
  Tcl_CreateCommand(TCL_ip, "LEARN", learn_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   282
  Tcl_CreateCommand(TCL_ip, "LEARN_DATA", learn_data_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   283
  Tcl_CreateCommand(TCL_ip, "WRITE_WORD_POS", write_word_pos_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   284
  Tcl_CreateCommand(TCL_ip, "WRITE_LEARNED_CHARS", write_learned_chars_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   285
  Tcl_CreateCommand(TCL_ip, "FIND_LINES_AND_RECOGNIZE", recognize_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   286
  Tcl_CreateCommand(TCL_ip, "GET_SKEW", get_skew_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   287
  Tcl_CreateCommand(TCL_ip, "DESKEW", deskew_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   288
  Tcl_CreateCommand(TCL_ip, "DISPLAY_INTERVALS", display_intervals_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   289
  Tcl_CreateCommand(TCL_ip, "QUIT", quit_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   290
  Tcl_CreateCommand(TCL_ip, "ZOOM_IN", zoom_in_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   291
  Tcl_CreateCommand(TCL_ip, "ZOOM_OUT", zoom_out_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   292
  Tcl_CreateCommand(TCL_ip, "DEALLOCATE_PAGE", deallocate_page_cmd, (ClientData) NULL, (Tcl_CmdDeleteProc*) NULL);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   293
  printf("Done initializing new tcl commands\n");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   294
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   295
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   296
int initialize_link_vars()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   297
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   298
  init_link_vars();  /* what a nice name */
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   299
  docommand("source link_vars.tcl");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   300
  printf("Done initializing link variables\n");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   301
}