Subversion Repositories Kolibri OS

Rev

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;