Rev 1218 | Rev 2750 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1218 | Rev 2749 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | //ñâîåâðåìåííîå ðåàãèðîâàíèå íà ñîáûòèÿ ìûøè |
- | |
2 | //ìèíèìàëüíûå ðàçìåðû îêíà |
- | |
3 | //óáðàíà ïåðåðèñîâêà çàãîëîâêà îêíà òàì, ãäå îíà íå íóæíà |
- | |
4 | //óáðàíî "çàïîëçàíèå" ïàíåëè ñíèçó íà ãðàíèöû îêíà |
- | |
5 | //èñïðàâëåí áàã èç-çà êîòîðîãî ïîñëå äåéñòâèé ìûøêîé óäàëÿëàñü êíîïêà çàêðûòèÿ îêíà |
- | |
6 | - | ||
7 | //çà÷åì ñòðîêà 450? |
- | |
8 | //åñëè âûäåëèòü îáëàñòü ÿ÷ååê è ñäâèíóòü êóðñîð ââîäà ñ ïîìîùüþ êëàâèø, "ñëåäû" îñòàíóòüñÿ |
- | |
9 | //íåëüçÿ ïåðåìåùàòüñÿ ïî áóêâàì â ðåäàêòèðóåìîé ñòðîêå |
- | |
10 | - | ||
11 | #include "func.h" |
1 | #include "func.h" |
12 | #include "parser.h" |
2 | #include "parser.h" |
13 | #include "calc.h" |
3 | #include "calc.h" |
14 | #include "use_library.h" |
4 | #include "use_library.h" |
Line 15... | Line 5... | ||
15 | 5 | ||
Line 16... | Line 6... | ||
16 | #define TABLE_VERSION "0.96" |
6 | #define TABLE_VERSION "0.97" |
17 | 7 | ||
18 | // ñòðîêè, êîòîðûå âûâîäèò ïðîãðàììà |
8 | // ñòðîêè, êîòîðûå âûâîäèò ïðîãðàììà |
19 | const char *sFileSign = "KolibriTable File\n"; |
9 | const char *sFileSign = "KolibriTable File\n"; |
Line 374... | Line 364... | ||
374 | } |
364 | } |
375 | if (!sel_moved || (is_x_changed(i))) kos_WriteTextToWindow(x-x0+2+dx,dy,0,text_color,cells[i][0],strlen(cells[i][0])); |
365 | if (!sel_moved || (is_x_changed(i))) kos_WriteTextToWindow(x-x0+2+dx,dy,0,text_color,cells[i][0],strlen(cells[i][0])); |
Line 376... | Line 366... | ||
376 | 366 | ||
377 | // åñòü êíîïêà ñòîáëöà è åùå êíîïêà èçìåíåíèÿ øèðèíû |
367 | // åñòü êíîïêà ñòîáëöà è åùå êíîïêà èçìåíåíèÿ øèðèíû |
- | 368 | if (x - x0 + col_width[i] <= wi - col_width[0]) |
|
- | 369 | { |
|
378 | if (x - x0 + col_width[i] <= wi - col_width[0]) |
370 | //kos_DeleteButton(COL_HEAD_BUTTON+i); |
- | 371 | kos_DefineButton(x-x0+5,0,cur_width - 10,row_height[0]-1,0x60000000+COL_HEAD_BUTTON+i,0); |
|
379 | kos_DefineButton(x-x0+5,0,cur_width - 10,row_height[0]-1,0x60000000+COL_HEAD_BUTTON+i,0); |
372 | } |
380 | //kos_DefineButton(x-x0+col_width[i]-10,0,15,row_height[0]-1,0x60000000+COL_SIZE_BUTTON+i,0); |
373 | //kos_DefineButton(x-x0+col_width[i]-10,0,15,row_height[0]-1,0x60000000+COL_SIZE_BUTTON+i,0); |
381 | col_left[i] = x - x0; |
374 | col_left[i] = x - x0; |
382 | } |
375 | } |
383 | if (x - x0 > wi - col_width[0]) |
376 | if (x - x0 > wi - col_width[0]) |
Line 430... | Line 423... | ||
430 | } |
423 | } |
Line 431... | Line 424... | ||
431 | 424 | ||
432 | if (!sel_moved || (is_y_changed(i))) |
425 | if (!sel_moved || (is_y_changed(i))) |
Line -... | Line 426... | ||
- | 426 | kos_WriteTextToWindow(2+dx,y-y0+dy,0,text_color,cells[0][i],strlen(cells[0][i])); |
|
433 | kos_WriteTextToWindow(2+dx,y-y0+dy,0,text_color,cells[0][i],strlen(cells[0][i])); |
427 | |
434 | 428 | ||
435 | kos_DefineButton(0,y-y0+5,col_width[0]-1,row_height[i]-6,0x60000000+ROW_HEAD_BUTTON+i,0); |
429 | kos_DefineButton(0,y-y0+5,col_width[0]-1,row_height[i]-6,0x60000000+ROW_HEAD_BUTTON+i,0); |
436 | //kos_DefineButton(0,y-y0+row_height[i]-5,col_width[0]-1,10,0x60000000+ROW_SIZE_BUTTON+i,0); |
430 | //kos_DefineButton(0,y-y0+row_height[i]-5,col_width[0]-1,10,0x60000000+ROW_SIZE_BUTTON+i,0); |
437 | row_top[i] = y - y0; |
431 | row_top[i] = y - y0; |
Line 665... | Line 659... | ||
665 | kos_DrawLine(x0, y1, x1, y1, DCOLOR, DINVERT); |
659 | kos_DrawLine(x0, y1, x1, y1, DCOLOR, DINVERT); |
666 | } |
660 | } |
Line 667... | Line 661... | ||
667 | 661 | ||
668 | void draw_window() |
662 | void draw_window() |
669 | { |
- | |
670 | int i; |
663 | { |
671 | double xx0=0.0, yy0=0.0; |
664 | double xx0=0.0, yy0=0.0; |
672 | sProcessInfo info; |
665 | sProcessInfo info; |
Line 673... | Line 666... | ||
673 | void *p; |
666 | void *p; |
674 | 667 | ||
Line 675... | Line 668... | ||
675 | if (sel_end_move) |
668 | if (sel_end_move) |
Line 676... | Line 669... | ||
676 | sel_moved = 0; |
669 | sel_moved = 0; |
677 | - | ||
678 | memset((Byte*)&info, 0, 1024); |
670 | |
679 | 671 | memset((Byte*)&info, 0, 1024); |
|
680 | kos_ProcessInfo(&info, 0xFFFFFFFF); |
672 | |
681 | 673 | kos_ProcessInfo(&info, 0xFFFFFFFF); |
|
682 | p = info.rawData + 42; // magic |
674 | p = info.rawData + 42; // magic |
Line 693... | Line 685... | ||
693 | he = WND_H; |
685 | he = WND_H; |
Line 694... | Line 686... | ||
694 | 686 | ||
695 | he -= kos_GetSkinHeight() + MENU_PANEL_HEIGHT; // äîñòóïíàÿ âûñîòà îêíà |
687 | he -= kos_GetSkinHeight() + MENU_PANEL_HEIGHT; // äîñòóïíàÿ âûñîòà îêíà |
Line 696... | Line -... | ||
696 | wi -= 10; |
- | |
697 | - | ||
698 | //Leency{ |
688 | wi -= 10; |
699 | // start redraw |
689 | |
700 | if (window_drawall==true){ |
690 | if (window_drawall==true){ |
701 | kos_WindowRedrawStatus(1); |
- | |
702 | kos_DefineAndDrawWindow(10,40,WND_W,WND_H,0x33,0x40FFFFFF,0,0,(Dword)"Table v" TABLE_VERSION); |
- | |
703 | - | ||
704 | if (he + MENU_PANEL_HEIGHT <= 8) //åñëè îêíî ñâ¸ðíóòî â çàãîëîâîê |
691 | kos_WindowRedrawStatus(1); |
705 | { |
- | |
706 | kos_WindowRedrawStatus(2); |
692 | kos_DefineAndDrawWindow(10,40,WND_W,WND_H,0x33,0x40FFFFFF,0,0,(Dword)"Table v" TABLE_VERSION); |
- | 693 | kos_WindowRedrawStatus(2); |
|
Line 707... | Line 694... | ||
707 | return; |
694 | |
708 | } |
695 | if (info.rawData[70]&0x04) return; //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê |
Line 709... | Line 696... | ||
709 | 696 | ||
Line 710... | Line 697... | ||
710 | if (he < 100) kos_ChangeWindow( -1, -1, -1, 180 ); |
697 | if (he < 100) kos_ChangeWindow( -1, -1, -1, 180 ); |
711 | if (wi < 340) kos_ChangeWindow( -1, -1, 350, -1 ); |
698 | if (wi < 340) kos_ChangeWindow( -1, -1, 350, -1 ); |
Line 712... | Line 699... | ||
712 | 699 | ||
Line 746... | Line 733... | ||
746 | kos_DefineButton(90 + 160 + 70, y - 5, 60, 20, NEW_BUTTON, 0xd0d0d0); |
733 | kos_DefineButton(90 + 160 + 70, y - 5, 60, 20, NEW_BUTTON, 0xd0d0d0); |
747 | kos_WriteTextToWindow(92 + 160 + 10 + 70, y + 2, 0, 0x000000, (char*)sNew, strlen(sNew)); |
734 | kos_WriteTextToWindow(92 + 160 + 10 + 70, y + 2, 0, 0x000000, (char*)sNew, strlen(sNew)); |
748 | */ |
735 | */ |
749 | panel_y = y; |
736 | panel_y = y; |
Line 750... | Line -... | ||
750 | - | ||
751 | //kos_DefineButton(0,0,WND_W,WND_H,0x60000002,0); |
- | |
752 | //if (is_edit) KEdit(); |
- | |
753 | 737 | ||
754 | if ((void*)edit_box_draw != NULL) |
738 | if ((void*)edit_box_draw != NULL) |
755 | { |
739 | { |
756 | if (is_edit) |
740 | if (is_edit) |
757 | edit_box_draw((DWORD)&cell_box); |
741 | edit_box_draw((DWORD)&cell_box); |
758 | edit_box_draw((DWORD)&file_box); |
742 | edit_box_draw((DWORD)&file_box); |
Line 759... | Line 743... | ||
759 | } |
743 | } |
760 | - | ||
761 | draw_grid(); |
- | |
762 | // end redraw |
744 | |
763 | kos_WindowRedrawStatus(2); |
745 | draw_grid(); |
764 | window_drawall=false; |
746 | window_drawall=false; |
Line 765... | Line 747... | ||
765 | sel_moved = 0; |
747 | sel_moved = 0; |
766 | } |
748 | } |
767 | 749 | ||
768 | 750 | ||
769 | void process_mouse() |
751 | void process_mouse() |
Line 770... | Line 752... | ||
770 | { |
752 | { |
771 | Dword mouse_btn, ckeys, shift, ctrl; |
753 | Dword mouse_btn, ckeys, shift, ctrl; |
772 | int mouse_x, mouse_y, i, p, dx = 0, dy = 0; |
754 | int mouse_x, mouse_y, i, dx = 0, dy = 0; |
Line 783... | Line 765... | ||
783 | kos_GetScrollInfo(vert, hor); |
765 | kos_GetScrollInfo(vert, hor); |
Line 784... | Line 766... | ||
784 | 766 | ||
785 | //sprintf(debuf, "scroll %U %U", vert, hor); |
767 | //sprintf(debuf, "scroll %U %U", vert, hor); |
Line -... | Line 768... | ||
- | 768 | //rtlDebugOutString(debuf); |
|
786 | //rtlDebugOutString(debuf); |
769 | |
787 | 770 | ||
- | 771 | if (vert != 0) //òðóú ïåðåðèñîâêà! |
|
788 | if (vert != 0) //òðóú ïåðåðèñîâêà! |
772 | { |
789 | { |
- | |
790 | move_sel(sel_x, sel_y + vert); |
773 | if (!((sel_end_y + vert) >= (row_count-1))) //çàãëóøêà |
791 | //move_sel(sel_x + hor, sel_y); |
774 | move_sel(sel_x, sel_y + vert); |
Line 792... | Line 775... | ||
792 | return; |
775 | return; |
793 | } |
776 | } |
Line 799... | Line 782... | ||
799 | mouse_btn &= 0x0001; |
782 | mouse_btn &= 0x0001; |
Line 800... | Line 783... | ||
800 | 783 | ||
801 | ckeys = kos_GetSpecialKeyState(); |
784 | ckeys = kos_GetSpecialKeyState(); |
Line -... | Line 785... | ||
- | 785 | shift = ckeys & 0x3; |
|
802 | shift = ckeys & 0x3; |
786 | |
803 | 787 | ||
804 | if (mouse_y < 0 && mouse_btn) // ò.ê. ìûøêà íà çàãîëîâêå îêíà |
788 | if (mouse_y < 0 && mouse_btn) // ò.ê. ìûøêà íà çàãîëîâêå îêíà |
805 | { |
789 | { |
806 | window_is_dragged = 1; |
790 | window_is_dragged = 1; |
Line 973... | Line 957... | ||
973 | } |
957 | } |
Line 974... | Line 958... | ||
974 | 958 | ||
975 | void process_key() |
959 | void process_key() |
976 | { |
960 | { |
977 | Dword mouse_btn, ckeys, shift, ctrl; |
961 | Dword mouse_btn, ckeys, shift, ctrl; |
Line 978... | Line 962... | ||
978 | int mouse_x, mouse_y, i, p, dx = 0, dy = 0; |
962 | int mouse_x, mouse_y, dx = 0, dy = 0; |
979 | 963 | ||
980 | // key pressed, read it |
964 | // key pressed, read it |
981 | Byte keyCode; |
965 | Byte keyCode; |
Line 1072... | Line 1056... | ||
1072 | { |
1056 | { |
1073 | stop_edit(); |
1057 | stop_edit(); |
1074 | draw_window(); |
1058 | draw_window(); |
1075 | } |
1059 | } |
1076 | break; |
1060 | break; |
1077 | //case 0x08: // backspace |
- | |
1078 | /*if (is_edit || fn_edit) |
- | |
1079 | { |
- | |
1080 | if (strlen(edit_text) != 0) |
- | |
1081 | edit_text[strlen(edit_text) - 1] = '\0'; |
- | |
1082 | KEdit(); |
- | |
1083 | } |
- | |
1084 | else if (cells[sel_x][sel_y]) |
- | |
1085 | { |
- | |
1086 | start_edit(sel_x, sel_y); |
- | |
1087 | } |
- | |
1088 | */ |
- | |
1089 | // break; |
- | |
1090 | case 22: // contol-v |
1061 | case 22: // contol-v |
1091 | { |
1062 | { |
1092 | if (ctrl) |
1063 | if (ctrl) |
1093 | { |
1064 | { |
1094 | //rtlDebugOutString("control-v!"); |
1065 | //rtlDebugOutString("control-v!"); |
Line 1196... | Line 1167... | ||
1196 | edit_box_key((dword)&cell_box); |
1167 | edit_box_key((dword)&cell_box); |
1197 | } |
1168 | } |
1198 | } |
1169 | } |
1199 | if (is_edit) |
1170 | if (is_edit) |
1200 | edit_box_draw((dword)&cell_box); |
1171 | edit_box_draw((dword)&cell_box); |
1201 | /* |
- | |
1202 | if (strlen(edit_text)<256) |
- | |
1203 | { |
- | |
1204 | edit_text[strlen(edit_text)]=keyCode; |
- | |
1205 | edit_text[strlen(edit_text) + 1]='\0'; |
- | |
1206 | KEdit(); |
- | |
1207 | } |
- | |
1208 | */ |
- | |
1209 | break; |
1172 | break; |
1210 | } |
1173 | } |
1211 | if (dx != 0) |
1174 | if (dx != 0) |
1212 | { |
1175 | { |
1213 | if (shift) |
1176 | if (shift) |
Line 1255... | Line 1218... | ||
1255 | */ |
1218 | */ |
1256 | if ((dx || dy)) |
1219 | if ((dx || dy)) |
1257 | { |
1220 | { |
1258 | if (!shift) |
1221 | if (!shift) |
1259 | { |
1222 | { |
- | 1223 | if ((sel_end_x + dx) >= (col_count-1)) {dx=0;} //çàãëóøêà |
|
- | 1224 | else if ((sel_end_y + dy) >= (row_count-1)) {dy=0;} |
|
- | 1225 | else { |
|
1260 | move_sel(sel_x + dx, sel_y + dy); |
1226 | move_sel(sel_x + dx, sel_y + dy); |
1261 | } |
1227 | } |
- | 1228 | } |
|
1262 | else |
1229 | else |
1263 | { |
1230 | { |
1264 | sel_moved = 0; |
1231 | sel_moved = 0; |
1265 | stop_edit(); |
1232 | stop_edit(); |
1266 | draw_grid(); |
1233 | draw_grid(); |
Line 1454... | Line 1421... | ||
1454 | load_edit_box(); |
1421 | load_edit_box(); |
1455 | init(); |
1422 | init(); |
Line 1456... | Line 1423... | ||
1456 | 1423 | ||
1457 | for (;;) |
1424 | for (;;) |
1458 | { |
1425 | { |
1459 | switch (kos_CheckForEvent()) |
1426 | switch (kos_WaitForEvent(10)) |
1460 | { |
1427 | { |
1461 | case 0: |
1428 | case 0: |
1462 | process_mouse(); |
1429 | process_mouse(); |
1463 | break; |
1430 | break; |