/*******************************************************************/ // "Меркурий"-"Правда" - open source переводчик // распространяется в соответсвии с лицензией GNU v 2.0 // // Ввод новых слов и выражений (список новых слов) // Анисимов Д.В. сегодня /*******************************************************************/ # include # include # include # include # include # include # include # include # include # include # include extern t_AddWord AddWord ; /*******************************************************************/ // сравнение слов /*******************************************************************/ int wordcmp1( const void *a, const void *b ) { t_sortWord *A=(t_sortWord *)a ; t_sortWord *B=(t_sortWord *)b ; int f=strcmp( A->str,B->str ) ; if( f!=0 ) return f ; else return A->index-B->index ; } /*******************************************************************/ // сравнение структур /*******************************************************************/ int structcmp( const void *a, const void *b ) { t_sortStruct *A=(t_sortStruct *)a ; t_sortStruct *B=(t_sortStruct *)b ; int f =A->counter -B->counter ; int f1=A->counter1-B->counter1 ; if( f1!=0 ) return -f1 ; else { if( f!=0 ) return -f ; else return A->i_tree-B->i_tree ; } } /*******************************************************************/ // /*******************************************************************/ t_NewWord1 :: t_NewWord1() { Word.init() ; WordTree.init() ; sortWord =NULL ; sy_word =NULL ; sortStruct=NULL ; Mass =NULL ; n_sortWord=0 ; i_word =0 ; i_begin =0 ; } /*******************************************************************/ // /*******************************************************************/ t_NewWord1 :: ~t_NewWord1() { Word.del(); WordTree.del(); Free(sortWord); Free(sy_word); Free(sortStruct); Free(Mass); } /*******************************************************************/ // построить массив новых слов и выражений /*******************************************************************/ void t_NewWord1 :: make_list_words( t_Text &Text ) { long i,i1,j,L ; Word.del(); WordTree.del(); Free(sortWord); Free(sy_word); Free(sortStruct); // ----------- построить массив Word --------------------- pText=&Text ; L=Text.length(); Mass=(char *)Calloc( L,sizeof(char) ); long j_Word=0 ; for( i=j=0 ; iup,T->down,T->n_down,T->i_s_word,T->counter,T->counter1 ); } Fclose( fw ); } /************************************************************************/ void t_NewWord1 :: set_pos( short _x1, short _y1, short _x2, short _y2 ) { t_Win :: set_pos( _x1, _y1, _x2, _y2 ); wFrasa.x1=wWordList.x1=wNewWord.x1=x1 ; wFrasa.x2=wWordList.x2=wNewWord.x2=x2 ; wFrasa.y1=y1 ; wFrasa.y2=y1+3 ; wWordList.y1=wFrasa.y2+2 ; // wWordList.y2=y1+(y2-y1)/2 ; wWordList.y2=y2 ; wNewWord.y1=wWordList.y2+2 ; wNewWord.y2=y2 ; } /************************************************************************/ /************************************************************************/ void t_NewWord1 :: paint( ) { s_rame2_F( y1-1, x1-1, y2+1, x2+1, 0x0f ); s_rame1_f( wWordList.y1-1, wWordList.x1-1, wWordList.y2+1, wWordList.x2+1, 0x0f ); s_rame2_f( y1-1, x1-1, y2+1, x2+1, 0x0f ); s_text_yxf( y1-1,x1+3,0x0b,Name ); if( 0<=i_word && i_wordget_frasa(i) ) ; // безобразие !!! рискую нарваться на переполнение paint_frasa( Str ); } paint_wordlist( ); paint_hotkey( n_Line-1, 0, hk_Word1 ); } /************************************************************************/ // нарисовать фразу, в которой встретилось слово /************************************************************************/ void t_NewWord1 :: paint_frasa( char *Str ) { long i,i1,j,z,i_str,L ; L=strlen( Str ); // --------- rasstavit perevody strok --------------- for( i=0 ; i