Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3434 → Rev 3435

/programs/system/desktop/trunk/desktop.asm
5,7 → 5,12
;
; < russian edition by Ivan Poddubny >
; < skin selection by Mike Semenyako >
;
;******************************************************************************
; last update: 01/04/2013
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: select colors with ColorDialog
; some redesign of the look of the program
;******************************************************************************
; last update: 10/09/2010
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: select path with OpenDialog
15,8 → 20,8
db 'MENUET01' ; identifier
dd 1 ; header version
dd START ; start address
dd I_END ; file size
dd i_end ; memory
dd IM_END ; file size
dd I_END ; memory
dd stacktop ; stack pointer
dd skin_info ; parameters
dd cur_dir_path ; path to file
29,8 → 34,7
include '../../../develop/libraries/box_lib/load_lib.mac'
@use_library
;******************************************************************************
 
 
;--------------------------------------
struct SKIN_HEADER
ident dd ?
version dd ?
38,7 → 42,7
buttons dd ?
bitmaps dd ?
ends
 
;--------------------------------------
struct SKIN_PARAMS
skin_height dd ?
margin.right dw ?
54,7 → 58,7
dtp.size dd ?
dtp.data db 40 dup (?)
ends
 
;--------------------------------------
struct SKIN_BUTTONS
type dd ?
pos:
64,13 → 68,24
width dw ?
height dw ?
ends
 
;--------------------------------------
struct SKIN_BITMAPS
kind dw ?
type dw ?
_data dd ?
ends
 
;--------------------------------------
frame_1:
.x = 5
.y = 220
.width = 420
.height = 50
;--------------------------------------
frame_2:
.x = 5
.y = 280
.width = 420
.height = 50
;---------------------------------------------------------------------
START: ; start of execution
;---------------------------------------------------------------------
127,7 → 142,11
 
push dword OpenDialog_data2
call [OpenDialog_Init]
;--------------------------------------------------------------------
;init_ColorDialog ColorDialog_data
push dword ColorDialog_data
call [ColorDialog_Init]
;--------------------------------------------------------------------
; prepare for PathShow
push dword PathShow_data_1
call [PathShow_prepare]
142,17 → 161,17
call draw_window ; at first, draw the window
;---------------------------------------------------------------------
still:
mcall 23,5 ; wait here for event
mcall 10 ; wait here for event
 
dec eax ; redraw request ?
jz red
 
dec eax ; key in buffer ?
jz key
 
dec eax ; button in buffer ?
jz button
 
call draw_cursor
 
jmp still
;---------------------------------------------------------------------
key: ; key
227,10 → 246,23
cmp ah,41
jg no_new_colour
;---------------------------------------------------------------------
.start_ColorDialog:
push dword ColorDialog_data
call [ColorDialog_Start]
; 2 - use another method/not found program
cmp [ColorDialog_data.status],2
je still
; 1 - OK, color selected
cmp [ColorDialog_data.status],1
jne still
;---------------------------------------------------------------------
shr eax,8
sub eax,31
shl eax,2
mov ebx,[color]
mov ebx,[ColorDialog_data.color]
and ebx,0xffffff ; temporary for ColorDialog!!!!!!!!!!
mov [eax+color_table],ebx
cmp dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
jne @f
254,55 → 286,6
noid1:
jmp still
;---------------------------------------------------------------------
draw_cursor:
pusha
mcall 37,2
cmp eax,0
jne dc1
popa
ret
;--------------------------------------
dc1:
mcall 37,1
mov ebx,eax
shr ebx,16
mov ecx,eax
and ecx,0xffff
cmp ecx,29
jbe no_color
 
cmp ebx,32
jbe no_color
 
cmp ebx,266 ; CHANGE COLOR
jb no_color
 
cmp ebx,266+20*3
jg no_color
 
cmp ecx,30+128
jge no_color
 
cmp ecx,29
jb no_color
 
sub ebx,266
mov eax,ebx
cdq
mov ebx,20
div ebx
mov ebx,2
sub ebx,eax
add ecx,-30
not ecx
shl ecx,1
 
mov byte [ebx+color],cl
call draw_color
no_color:
popa
ret
;---------------------------------------------------------------------
load_file:
;---------------------------------------------------------------------
; invoke OpenDialog
412,24 → 395,47
mcall 70
ret
;---------------------------------------------------------------------
draw_color:
pusha
mcall 13,<266,60>,<170,30>,[color]
mcall ,,<200,10>,[w_work]
mcall 47,<8,0+1*256>,[color],<272,201>,[w_work_text]
popa
draw_button_row:
mov edx,0x60000000 + 31 ; BUTTON ROW
mov ebx,220*65536+14
mov ecx,10*65536+14
mov eax,8
;-----------------------------------
.newb:
mcall
add ecx,20*65536
inc edx
cmp edx,0x60000000 + 40
jbe .newb
ret
;----------------------------------------------------------------------
;---------------------------------------------------------------------
draw_button_row_of_texts:
mov ebx,240*65536+13 ; ROW OF TEXTS
mov ecx,[w_work_text]
mov edx,text
mov esi,32
mov eax,4
;-----------------------------------
.newline:
mcall
add ebx,20
add edx,32
cmp [edx],byte 'x'
jne .newline
ret
;---------------------------------------------------------------------
draw_colours:
pusha
mov esi,color_table
mov ebx,225*65536+32
mov ecx,32*65536+12
mov ebx,220*65536+14
mov ecx,10*65536+14
mov eax,13
;--------------------------------------
newcol:
mov edx,[esi]
mcall 13
add ecx,18*65536
mcall
call draw_rectangle
add ecx,20*65536
add esi,4
cmp esi,color_table+4*9
jbe newcol
437,350 → 443,10
popa
ret
;----------------------------------------------------------------------
draw_framerect: ; ebx,ecx
push ebx ecx
add bx,[esp+6]
mov cx,[esp+2]
dec ebx
mcall 38
add cx,[esp]
rol ecx,16
add cx,[esp]
sub ecx,0x00010001
mcall
mov ebx,[esp+4]
mov ecx,[esp]
mov bx,[esp+6]
add cx,[esp+2]
dec ecx
mcall
add bx,[esp+4]
rol ebx,16
add bx,[esp+4]
sub ebx,0x00010001
mcall
add esp,8
ret
;----------------------------------------------------------------------
find_bitmap:
mov edi,[ebp+SKIN_HEADER.bitmaps]
add edi,ebp
xor ebx,ebx
;--------------------------------------
.lp1:
cmp dword[edi],0
je .lp2
 
cmp dword[edi+0],eax
jne @f
;--------------------------------------
mov ebx,[edi+SKIN_BITMAPS._data]
add ebx,ebp
mov ecx,[ebx-2]
mov cx,[ebx+4]
add ebx,8
;--------------------------------------
.lp2:
ret
;--------------------------------------
@@:
add edi,8
jmp .lp1
;----------------------------------------------------------------------
dec_edx:
sub dl,4
jnc @f
 
xor dl,dl
;--------------------------------------
@@:
sub dh,4
jnc @f
 
xor dh,dh
;--------------------------------------
@@:
rol edx,16
sub dl,4
jnc @f
 
xor dl,dl
;--------------------------------------
@@:
rol edx,16
ret
;----------------------------------------------------------------------
area:
.x = 345
.y = 20
.width = 206
.height = 191
;--------------------------------------
wnd1:
.x = area.x+49
.y = area.y+5
.width = 150
.height = 90
;--------------------------------------
wnd2:
.x = area.x+35
.y = area.y+35
.width = 150
.height = 90
;--------------------------------------
wnd3:
.x = area.x+21
.y = area.y+65
.width = 150
.height = 90
;--------------------------------------
wnd4:
.x = area.x+7
.y = area.y+95
.width = 150
.height = 90
;--------------------------------------
virtual at edi+SKIN_PARAMS.dtp.data
dtp system_colors
end virtual
;----------------------------------------------------------------------
draw_skin:
mcall 13,<area.x,area.width>,<area.y+2,area.height-2>,0x00FFFFFF
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd1.x,wnd1.width
mpack ecx,wnd1.y,wnd1.height
mov edx,[dtp.frame]
call draw_framerect
mcall 13,<wnd1.x+1,wnd1.width-2>,<wnd1.y+1,wnd1.height-2>,dword[dtp.work]
mov eax,38
mpack ebx,wnd1.x+1,wnd1.x+wnd1.width-2
mpack ecx,wnd1.y+1,wnd1.y+1
mov edx,[dtp.grab]
mov esi,20
;--------------------------------------
@@:
mcall
call dec_edx
add ecx,0x00010001
dec esi
jnz @b
 
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mcall 4,<wnd1.x+6,wnd1.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
mcall 8,<wnd1.x+wnd1.width-18,12>,<wnd1.y+4,12>,0,[dtp.grab_button]
mcall 4,<wnd1.x+wnd1.width-18+4,wnd1.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd2.x,wnd2.width
mpack ecx,wnd2.y,wnd2.height
mov edx,[dtp.frame]
shr edx,1
and edx,0x007F7F7F
call draw_framerect
mpack ebx,wnd2.x+4,wnd2.width-8
mpack ecx,wnd2.y+4,wnd2.height-8
call draw_framerect
mcall 13,<wnd2.x+1,wnd2.width-2>,<wnd2.y+1,3>,[dtp.frame]
add ecx,(wnd2.height-5)*65536
mcall
mcall ,<wnd2.x+1,3>,<wnd2.y+1,wnd2.height-2>
add ebx,(wnd2.width-5)*65536
mcall
mcall ,<wnd2.x+5,wnd2.width-10>,<wnd2.y+5,wnd2.height-10>,dword[dtp.work]
 
mov eax,38
mpack ebx,wnd2.x+4,wnd2.x+wnd2.width-5
mpack ecx,wnd2.y+4,wnd2.y+4
mov edx,[dtp.grab]
mov esi,16
;--------------------------------------
@@:
mcall
call dec_edx
add ecx,0x00010001
dec esi
jnz @b
 
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mcall 4,<wnd2.x+8,wnd2.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
mcall 8,<wnd2.x+wnd2.width-20,12>,<wnd2.y+4,12>,0,[dtp.grab_button]
mcall 4,<wnd2.x+wnd2.width-20+4,wnd2.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd3.x,wnd3.width
mpack ecx,wnd3.y,wnd3.height
mov edx,[edi+SKIN_PARAMS.colors_1.outer]
call draw_framerect
mpack ebx,wnd3.x+4,wnd3.width-8
mpack ecx,wnd3.y+4,wnd3.height-8
mov edx,[edi+SKIN_PARAMS.colors_1.inner]
call draw_framerect
mcall 13,<wnd3.x+1,wnd3.width-2>,<wnd3.y+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
add ecx,(wnd3.height-5)*65536
mcall
mcall ,<wnd3.x+1,3>,<wnd3.y+1,wnd3.height-2>
add ebx,(wnd3.width-5)*65536
mcall
mcall ,<wnd3.x+5,wnd3.width-10>,<wnd3.y+5,wnd3.height-10>,dword[dtp.work]
 
mov eax,0x00000001 ; left, inactive
call find_bitmap
mcall 7,,,<wnd3.x,wnd3.y>
 
pushd [ebx-8]
mov eax,0x00000003 ; base, inactive
call find_bitmap
pop edx
mov esi,wnd3.x+wnd3.width-1
sub esi,edx
shl edx,16
add edx,wnd3.x*65536+wnd3.y
mcall 7
;--------------------------------------
@@:
rol edx,16
add dx,[ebx-8]
cmp dx,si
ja @f
 
rol edx,16
mcall 7
jmp @b
;--------------------------------------
@@:
mov eax,0x00000002 ; oper, inactive
call find_bitmap
mov edx,ecx
shr edx,16
neg edx
shl edx,16
add edx,(wnd3.x+wnd3.width)*65536+wnd3.y
mcall 7
 
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mov eax,dword[edi+SKIN_PARAMS.margin.left-2]
mov ax,word[edi+SKIN_PARAMS.skin_height]
sub ax,[edi+SKIN_PARAMS.margin.bottom]
shr ax,1
add ax,[edi+SKIN_PARAMS.margin.top]
add ax,-4
push eax
lea ebx,[eax+wnd3.x*65536+wnd3.y]
mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size
;---------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd4.x,wnd4.width
mpack ecx,wnd4.y,wnd4.height
mov edx,[edi+SKIN_PARAMS.colors.outer]
call draw_framerect
mpack ebx,wnd4.x+4,wnd4.width-8
mpack ecx,wnd4.y+4,wnd4.height-8
mov edx,[edi+SKIN_PARAMS.colors.inner]
call draw_framerect
mcall 13,<wnd4.x+1,wnd4.width-2>,<wnd4.y+1,3>,[edi+SKIN_PARAMS.colors.frame]
add ecx,(wnd4.height-5)*65536
mcall
mcall ,<wnd4.x+1,3>,<wnd4.y+1,wnd4.height-2>
add ebx,(wnd4.width-5)*65536
mcall
mcall ,<wnd4.x+5,wnd4.width-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
 
mov eax,0x00010001 ; left, inactive
call find_bitmap
mcall 7,,,<wnd4.x,wnd4.y>
 
pushd [ebx-8]
mov eax,0x00010003 ; base, inactive
call find_bitmap
pop edx
mov esi,wnd4.x+wnd4.width-1
sub esi,edx
shl edx,16
add edx,wnd4.x*65536+wnd4.y
mcall 7
;--------------------------------------
@@:
rol edx,16
add dx,[ebx-8]
cmp dx,si
ja @f
 
rol edx,16
mcall 7
jmp @b
;--------------------------------------
@@:
mov eax,0x00010002 ; oper, inactive
call find_bitmap
mov edx,ecx
shr edx,16
neg edx
shl edx,16
add edx,(wnd4.x+wnd4.width)*65536+wnd4.y
mcall 7
 
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
pop eax
lea ebx,[eax+wnd4.x*65536+wnd4.y]
mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.buttons]
add edi,ebp
;--------------------------------------
.lp1:
cmp dword[edi],0
je .lp2
 
mov ebx,dword[edi+SKIN_BUTTONS.left-2]
mov bx,[edi+SKIN_BUTTONS.width]
mov ecx,dword[edi+SKIN_BUTTONS.top-2]
mov cx,[edi+SKIN_BUTTONS.height]
add ebx,(wnd4.x+wnd4.width)*65536
add ecx,wnd4.y*65536
dec ebx
dec ecx
mcall 8,,,0x40000000
add edi,12
jmp .lp1
;--------------------------------------
.lp2:
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd4.x+10,wnd4.y+10
add bx,word[edi+SKIN_PARAMS.skin_height]
mcall 4,,[dtp.work_text],window_text,window_text.size
 
mov ecx,[edi+SKIN_PARAMS.skin_height]
shl ecx,16
add ecx,(wnd4.y+8)*65536+10
mcall 13,<wnd4.x+window_text.size*6+20,wnd4.x+wnd4.width-10-\
(wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
 
add ecx,25*65536+8
mcall 8,<wnd4.x+wnd4.width/2-button_text.size*3-6,\
button_text.size*6+11>,,0,[dtp.work_button]
 
shr ecx,16
mov bx,cx
add ebx,0x00060006
mcall 4,,[dtp.work_button_text],button_text,button_text.size
ret
;---------------------------------------------------------------------
draw_PathShow:
pusha
mcall 13,<10,534>,<214,15>,0xffffff
mcall 13,<10,534>,<232,15>,0xffffff
mcall 13,<frame_1.x+5,frame_1.width-15>,<frame_1.y+7,15>,0xffffff
mcall 13,<frame_2.x+5,frame_2.width-15>,<frame_2.y+7,15>,0xffffff
; draw for PathShow
push dword PathShow_data_1
call [PathShow_draw]
797,12 → 463,16
mcall 12,1
mcall 48,3,app_colours,10*4
mcall 14
mcall 48,4
mov [current_skin_high],eax
; DRAW WINDOW
xor eax,eax ; function 0 : define and draw window
xor esi,esi
mov edx,[w_work] ; color of work area RRGGBB,8->color
or edx,0x14000000
mcall ,<110,555>,<50,275>,,,title
or edx,0x34000000
mov ecx,50 shl 16 + 346
add ecx,[current_skin_high]
mcall ,<110,440>,,,,title
 
mcall 9,procinfo,-1
810,106 → 480,75
test eax,100b
jne .end
 
if lang eq ru
;if lang eq ru
load_w = (5*2+6*9)
save_w = (5*2+6*9)
flat_w = (5*2+6*7)
apply_w = (5*2+6*9)
else
load_w = (5*2+6*6)
save_w = (5*2+6*8)
flat_w = (5*2+6*4)
apply_w = (5*2+6*7)
end if
 
; LOAD BUTTON
mcall 8,<15,load_w>,<35+18*12,14>,12,[w_work_button]
;else
; load_w = (5*2+6*6)
; save_w = (5*2+6*8)
; flat_w = (5*2+6*4)
; apply_w = (5*2+6*7)
;end if
;-----------------------------------
; select color DTP frame
; LOAD BUTTON ; button 12
mcall 8,<frame_1.x+10,load_w>,<frame_1.y+25,15>,12,[w_work_button]
; SAVE BUTTON
add ebx,(load_w+2)*65536-load_w+save_w
inc edx
mcall
mcall ; button 13
; APPLY BUTTON
mov ebx,(frame_1.x + frame_1.width - apply_w - 15)*65536+apply_w
mcall 8,,,16 ; button 17
; select color DTP button text
mcall 4,<frame_1.x+16,frame_1.y+29>,[w_work_button_text],t1,t1.size
;-----------------------------------
; select skin frame
; LOAD SKIN BUTTON ; button 17
mcall 8,<frame_2.x+10,load_w>,<frame_2.y+25,15>,17,[w_work_button]
; 3D
mov ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
inc edx
mcall
mov ebx,(frame_2.x+155)*65536+34
mcall ,,,14 ; button 14
; FLAT
add ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
add ebx,36*65536-34+flat_w
inc edx
mcall
; APPLY BUTTON
add ebx,(flat_w+6+2)*65536-flat_w+apply_w
inc edx
mcall
; LOAD SKIN BUTTON
mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
inc edx
mcall
mcall ; button 15
; APPLY SKIN BUTTON
add ebx,(load_w+6+2)*65536-load_w+apply_w
inc edx
mcall
mov ebx,(339-t1.size*6-12)*65536+(35+18*12+4)
mcall 4,,[w_work_button_text],t1,t1.size
mov ebx,(336+(555-335)/2-t2.size*6/2)*65536+(35+18*12+4)
mcall ,,,t2,t2.size
mov ebx,(15+(load_w+save_w+2-t3.size*6)/2)*65536+(35+18*12+4)
mcall ,,,t3,t3.size
mov eax,38 ; R G B COLOR GLIDES
mov ebx,266*65536+285
mov ecx,30*65536+30
mov edx,0xff0000
mov ebx,(frame_2.x + frame_2.width - apply_w -15)*65536+apply_w
mcall ,,,18 ; button 18
; select skin button text
mcall 4,<frame_2.x+16,frame_2.y+29>,[w_work_button_text],t2,t2.size
;-----------------------------------
.newl:
mcall
pusha
add ebx,20*65536+20
shr edx,8
mcall
add ebx,20*65536+20
shr edx,8
mcall
popa
sub edx,0x020000
add ecx,0x00010001
cmp ecx,158*65536+158
jnz .newl
call draw_button_row
call draw_button_row_of_texts
call draw_colours
;-----------------------------------
call draw_color
mov ebx,frame_1.x shl 16+frame_1.width
mov ecx,frame_1.y shl 16+frame_1.height
call draw_rectangle
mov edx,31 ; BUTTON ROW
mov ebx,15*65536+200
mov ecx,30*65536+14
mov esi,[w_work_button]
 
mov eax,8
; select color DTP text
mov ecx,[w_work_text]
and ecx,0xffffff
add ecx,0x40000000
mcall 4,<frame_1.x+10,frame_1.y-4>,,select_dtp_text,\
select_dtp_text.size,[w_work]
;-----------------------------------
.newb:
mcall
add ecx,18*65536
inc edx
cmp edx,40
jbe .newb
;-----------------------------------
mov ebx,15*65536+34 ; ROW OF TEXTS
mov ecx,[w_work_button_text]
mov edx,text
mov esi,32
mov ebx,frame_2.x shl 16+frame_2.width
mov ecx,frame_2.y shl 16+frame_2.height
call draw_rectangle
 
mov eax,4
; select skin text
mov ecx,[w_work_text]
and ecx,0xffffff
add ecx,0x40000000
mcall 4,<frame_2.x+10,frame_2.y-4>,,select_skin_text,\
select_skin_text.size,[w_work]
;-----------------------------------
.newline:
mcall
add ebx,18
add edx,32
cmp [edx],byte 'x'
jne .newline
call draw_PathShow
;-----------------------------------
call draw_colours
call draw_PathShow
cmp dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
jne @f
call draw_skin
917,401 → 556,18
.end:
mcall 12,2
ret
;---------------------------------------------------------------------
;-----------------------------------------------------------------------------
include 'drawrect.inc'
;-----------------------------------------------------------------------------
include 'drawskin.inc'
;-----------------------------------------------------------------------------
; DATA AREA
;---------------------------------------------------------------------
lsz text,\
ru, ' €ŒŠ€ ŽŠ€ ',\
ru, ' Ž‹Ž‘€ ‡€ƒŽ‹Ž‚Š€ ',\
ru, ' ŠŽŠ€ € Ž‹Ž‘… ‡€ƒŽ‹Ž‚Š€ ',\
ru, ' ’…Š‘’ € ŠŽŠ… € ‡€ƒŽ‹Ž‚Š… ',\
ru, ' ’…Š‘’ ‡€ƒŽ‹Ž‚ŽŠ€ ',\
ru, ' €Ž—€Ÿ Ž‹€‘’œ ',\
ru, ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, ' ’…Š‘’ € ŠŽŠ… ',\
ru, ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, 'x',\
en, ' WINDOW FRAME ',\
en, ' WINDOW GRAB BAR ',\
en, ' WINDOW GRAB BUTTON ',\
en, ' WINDOW GRAB BUTTON TEXT ',\
en, ' WINDOW GRAB TITLE ',\
en, ' WINDOW WORK AREA ',\
en, ' WINDOW WORK AREA BUTTON ',\
en, ' WINDOW WORK AREA BUTTON TEXT ',\
en, ' WINDOW WORK AREA TEXT ',\
en, ' WINDOW WORK AREA GRAPH ',\
en, 'x',\
et, ' AKNA RAAM ',\
et, ' AKNA HAARAMISE RIBA ',\
et, ' AKNA HAARAMISE NUPP ',\
et, ' AKNA HAARAMISE NUPU TEKST ',\
et, ' AKNA HAARAMISE PEALKIRI ',\
et, ' AKNA TÖÖPIIRKOND ',\
et, ' AKNA TÖÖPIIRKONNA NUPP ',\
et, ' AKNA TÖÖPIIRKONNA NUPPU TEKST ',\
et, ' AKNA TÖÖPIIRKONNA TEKST ',\
et, ' AKNA TÖÖPIIRKONNA GRAAFIKA ',\
et, 'x'
 
lsz t1,\
ru, ' 3D ‹Ž‘Šˆ… ˆŒ…ˆ’œ ',\
en, ' 3D FLAT APPLY ',\
et, ' 3D LAME KINNITA '
 
lsz t2,\
ru, ' ‡€ƒ“‡ˆ’œ ˆŒ…ˆ’œ ',\
en, ' LOAD APPLY ',\
et, ' LAADI KINNITA '
 
lsz t3,\
ru, ' ‡€ƒ“‡ˆ’œ ‘Ž•€ˆ’œ ',\
en, ' LOAD SAVE ',\
et, ' LAADI SALVESTA',\
 
lsz caption_text,\
ru, '‡ £®«®¢®ª',\
en, 'Caption',\
et, 'Pealkiri'
 
sz close_text,'x'
 
lsz window_text,\
ru, '’¥ªáâ ¢ ®ª­¥',\
en, 'Window text',\
et, 'Akna tekst'
 
lsz button_text,\
ru, '’¥ªáâ ­  ª­®¯ª¥',\
en, 'Button text',\
et, 'Nupu tekst'
 
;sz default_skn, '/sys/DEFAULT.SKN',0
 
if lang eq ru
title db '€‘’Ž‰Š€ ŽŠŽ',0
else if lang eq et
title db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0
else
title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
end if
 
 
color dd 0
 
;---------------------------------------------------------------------
l_libs_start:
 
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
 
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
 
end_l_libs:
;---------------------------------------------------------------------
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
 
head_f_i:
head_f_l db 'System error',0
 
err_message_found_lib1 db 'box_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
 
err_message_import1 db 'box_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
 
;---------------------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
;OpenDialog__Version dd aOpenDialog_Version
dd 0
dd 0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
;aOpenDialog_Version db 'Version_OpenDialog',0
;---------------------------------------------------------------------
align 4
Box_lib_import:
;init_lib dd a_init
;version_lib dd a_version
 
 
;edit_box_draw dd aEdit_box_draw
;edit_box_key dd aEdit_box_key
;edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
 
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
 
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
 
;scrollbar_ver_draw dd aScrollbar_ver_draw
;scrollbar_ver_mouse dd aScrollbar_ver_mouse
;scrollbar_hor_draw dd aScrollbar_hor_draw
;scrollbar_hor_mouse dd aScrollbar_hor_mouse
;version_scrollbar dd aVersion_scrollbar
 
;dinamic_button_draw dd aDbutton_draw
;dinamic_button_mouse dd aDbutton_mouse
;version_dbutton dd aVersion_dbutton
 
;menu_bar_draw dd aMenu_bar_draw
;menu_bar_mouse dd aMenu_bar_mouse
;menu_bar_activate dd aMenu_bar_activate
;version_menu_bar dd aVersion_menu_bar
 
;FileBrowser_draw dd aFileBrowser_draw
;FileBrowser_mouse dd aFileBrowser_mouse
;FileBrowser_key dd aFileBrowser_key
;Version_FileBrowser dd aVersion_FileBrowser
 
PathShow_prepare dd sz_PathShow_prepare
PathShow_draw dd sz_PathShow_draw
;Version_path_show dd szVersion_path_show
dd 0
dd 0
 
;a_init db 'lib_init',0
;a_version db 'version',0
 
;aEdit_box_draw db 'edit_box',0
;aEdit_box_key db 'edit_box_key',0
;aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
 
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
 
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
 
;aScrollbar_ver_draw db 'scrollbar_v_draw',0
;aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
;aScrollbar_hor_draw db 'scrollbar_h_draw',0
;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0
;aVersion_scrollbar db 'version_scrollbar',0
 
;aDbutton_draw db 'dbutton_draw',0
;aDbutton_mouse db 'dbutton_mouse',0
;aVersion_dbutton db 'version_dbutton',0
 
;aMenu_bar_draw db 'menu_bar_draw',0
;aMenu_bar_mouse db 'menu_bar_mouse',0
;aMenu_bar_activate db 'menu_bar_activate',0
;aVersion_menu_bar db 'version_menu_bar',0
 
;aFileBrowser_draw db 'FileBrowser_draw',0
;aFileBrowser_mouse db 'FileBrowser_mouse',0
;aFileBrowser_key db 'FileBrowser_key',0
;aVersion_FileBrowser db 'version_FileBrowser',0
 
sz_PathShow_prepare db 'PathShow_prepare',0
sz_PathShow_draw db 'PathShow_draw',0
;szVersion_path_show db 'version_PathShow',0
;---------------------------------------------------------------------
PathShow_data_1:
.type dd 0 ;+0
.start_y dw 217 ;+4
.start_x dw 12 ;+6
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
.area_size_x dw 530 ;+10
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
.background_flag dd 0 ;+16
.font_color dd 0x0 ;+20
.background_color dd 0x0 ;+24
.text_pointer dd fname ;+28
.work_area_pointer dd text_work_area ;+32
.temp_text_length dd 0 ;+36
;---------------------------------------------------------------------
PathShow_data_2:
.type dd 0 ;+0
.start_y dw 235 ;+4
.start_x dw 12 ;+6
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
.area_size_x dw 530 ;+10
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
.background_flag dd 0 ;+16
.font_color dd 0x0 ;+20
.background_color dd 0x0 ;+24
.text_pointer dd skin_info ;+28
.work_area_pointer dd text_work_area2 ;+32
.temp_text_length dd 0 ;+36
;---------------------------------------------------------------------
OpenDialog_data:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd fname ;+36
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
OpenDialog_data2:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name2 ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach2 ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd skin_info ;+36
.filename_area dd filename_area2 ;+40
.filter_area dd Filter2
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
communication_area_name2:
db 'FFFFFFFF_open_dialog',0
 
communication_area_name:
db 'FFFFFFFF_open_dialog2',0
open_dialog_path:
if __nightbuild eq yes
db '/sys/MANAGERS/opendial',0
else
db '/sys/File Managers/opendial',0
end if
communication_area_default_pach:
db '/sys',0
 
Filter:
dd Filter.end - Filter
.1:
db 'DTP',0
.end:
db 0
 
Filter2:
dd Filter.end - Filter
.1:
db 'SKN',0
.end:
db 0
 
start_temp_file_name:
db 'default.dtp',0
 
default_skin:
db '/sys/default.skn',0
default_dtp:
db '/sys/default.dtp',0
;---------------------------------------------------------------------
IncludeIGlobals
 
;-----------------------------------------------------------------------------
include 'idata.inc'
;-----------------------------------------------------------------------------
IM_END:
;-----------------------------------------------------------------------------
include 'udata.inc'
;-----------------------------------------------------------------------------
I_END:
 
IncludeUGlobals
 
read_info:
.mode dd ? ; read
.start_block dd ? ; first block
.blocks dd ? ; 512 bytes
.address dd ?
.workarea dd ?
fname rb 4096 ; filename
 
virtual at read_info
write_info:
.mode dd ?
rd 1
.bytes2write dd ?
.address dd ?
.workarea dd ?
end virtual
 
read_info2:
.mode dd ? ; read
.start_block dd ? ; first block
.blocks dd ? ; 512 bytes
.address dd ?
.workarea dd ?
skin_info rb 4096
 
;param rb 257
 
align 4
app_colours:
 
w_frame dd ?
w_grab dd ?
w_grab_button dd ?
w_grab_button_text dd ?
w_grab_text dd ?
w_work dd ?
w_work_button dd ?
w_work_button_text dd ?
w_work_text dd ?
w_work_graph dd ?
 
color_table:
times 10 dd ?
;---------------------------------------------------------------------
align 4
cur_dir_path:
rb 4096
;---------------------------------------------------------------------
library_path:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach2:
rb 4096
;---------------------------------------------------------------------
text_work_area:
rb 1024
;---------------------------------------------------------------------
text_work_area2:
rb 1024
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------
filename_area:
rb 256
;---------------------------------------------------------------------
filename_area2:
rb 256
;---------------------------------------------------------------------
rb 4096
stacktop:
;---------------------------------------------------------------------
file_load_area: ; old 0x10000
rb 32*1024
;---------------------------------------------------------------------
not_packed_area: ; old 0x18000
rb 32*1024
;---------------------------------------------------------------------
unpack_area: ; old 0x20000
rb 32*1024
;---------------------------------------------------------------------
i_end:
;-----------------------------------------------------------------------------
/programs/system/desktop/trunk/drawrect.inc
0,0 → 1,103
;----------------------------------------------------------------------
draw_rectangle:
; in
; ebx = [coordinate on axis x]*65536 + [size on axis x]
; ecx = [coordinate on axis y]*65536 + [size on axis y]
push edx eax
;--------------------------------------
; top
push ebx ecx
mov eax,ebx
shr eax,16
add bx,ax
mov eax,ecx
shr eax,16
mov cx,ax
 
sub ecx,1 shl 16 +1
sub ebx,1 shl 16
mcall 38,,,0xffffff
sub ecx,1 shl 16 +1
sub ebx,1 shl 16
inc ebx
xor edx,edx ; color black
mcall
pop ecx ebx
;--------------------------------------
; bottom
push ebx ecx
mov eax,ebx
shr eax,16
add bx,ax
mov eax,ecx
shr eax,16
add cx,ax
mov eax,ecx
ror ecx,16
mov cx,ax
rol ecx,16
sub ebx,1 shl 16
mcall 38,,,0xffffff
add ecx,1 shl 16 +1
sub ebx,1 shl 16
inc ebx
xor edx,edx
mcall
pop ecx ebx
;--------------------------------------
; left
push ebx ecx
mov eax,ebx
shr eax,16
mov bx,ax
mov eax,ecx
shr eax,16
add cx,ax
sub ebx,1 shl 16 +1
sub ecx,1 shl 16
mcall 38,,,0xffffff
sub ebx,1 shl 16 +1
xor edx,edx
mcall
pop ecx ebx
;--------------------------------------
; right
push ebx ecx
 
mov eax,ebx
shr eax,16
add bx,ax
mov eax,ebx
ror ebx,16
mov bx,ax
rol ebx,16
 
mov eax,ecx
shr eax,16
add cx,ax
sub ecx,1 shl 16
mcall 38,,,0xffffff
add ebx,1 shl 16 +1
sub ecx,1 shl 16
inc ecx
xor edx,edx
mcall
pop ecx ebx
;--------------------------------------
pop eax edx
ret
;----------------------------------------------------------------------
/programs/system/desktop/trunk/drawskin.inc
0,0 → 1,341
;----------------------------------------------------------------------
area:
.x = 5 ;345
.y = 5 ;20
.width = 206
.height = 191
;--------------------------------------
wnd1:
.x = area.x+49
.y = area.y+5
.width = 150
.height = 90
;--------------------------------------
wnd2:
.x = area.x+35
.y = area.y+35
.width = 150
.height = 90
;--------------------------------------
wnd3:
.x = area.x+21
.y = area.y+65
.width = 150
.height = 90
;--------------------------------------
wnd4:
.x = area.x+7
.y = area.y+95
.width = 150
.height = 90
;--------------------------------------
virtual at edi+SKIN_PARAMS.dtp.data
dtp system_colors
end virtual
;----------------------------------------------------------------------
draw_skin:
mcall 13,<area.x,area.width>,<area.y+2,area.height>,0x00FFFFFF
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd1.x,wnd1.width
mpack ecx,wnd1.y,wnd1.height
mov edx,[dtp.frame]
call draw_framerect
mcall 13,<wnd1.x+1,wnd1.width-2>,<wnd1.y+1,wnd1.height-2>,dword[dtp.work]
mov eax,38
mpack ebx,wnd1.x+1,wnd1.x+wnd1.width-2
mpack ecx,wnd1.y+1,wnd1.y+1
mov edx,[dtp.grab]
mov esi,20
;--------------------------------------
@@:
mcall
call dec_edx
add ecx,0x00010001
dec esi
jnz @b
 
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mcall 4,<wnd1.x+6,wnd1.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
mcall 8,<wnd1.x+wnd1.width-18,12>,<wnd1.y+4,12>,0,[dtp.grab_button]
mcall 4,<wnd1.x+wnd1.width-18+4,wnd1.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd2.x,wnd2.width
mpack ecx,wnd2.y,wnd2.height
mov edx,[dtp.frame]
shr edx,1
and edx,0x007F7F7F
call draw_framerect
mpack ebx,wnd2.x+4,wnd2.width-8
mpack ecx,wnd2.y+4,wnd2.height-8
call draw_framerect
mcall 13,<wnd2.x+1,wnd2.width-2>,<wnd2.y+1,3>,[dtp.frame]
add ecx,(wnd2.height-5)*65536
mcall
mcall ,<wnd2.x+1,3>,<wnd2.y+1,wnd2.height-2>
add ebx,(wnd2.width-5)*65536
mcall
mcall ,<wnd2.x+5,wnd2.width-10>,<wnd2.y+5,wnd2.height-10>,dword[dtp.work]
 
mov eax,38
mpack ebx,wnd2.x+4,wnd2.x+wnd2.width-5
mpack ecx,wnd2.y+4,wnd2.y+4
mov edx,[dtp.grab]
mov esi,16
;--------------------------------------
@@:
mcall
call dec_edx
add ecx,0x00010001
dec esi
jnz @b
 
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mcall 4,<wnd2.x+8,wnd2.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
mcall 8,<wnd2.x+wnd2.width-20,12>,<wnd2.y+4,12>,0,[dtp.grab_button]
mcall 4,<wnd2.x+wnd2.width-20+4,wnd2.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd3.x,wnd3.width
mpack ecx,wnd3.y,wnd3.height
mov edx,[edi+SKIN_PARAMS.colors_1.outer]
call draw_framerect
mpack ebx,wnd3.x+4,wnd3.width-8
mpack ecx,wnd3.y+4,wnd3.height-8
mov edx,[edi+SKIN_PARAMS.colors_1.inner]
call draw_framerect
mcall 13,<wnd3.x+1,wnd3.width-2>,<wnd3.y+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
add ecx,(wnd3.height-5)*65536
mcall
mcall ,<wnd3.x+1,3>,<wnd3.y+1,wnd3.height-2>
add ebx,(wnd3.width-5)*65536
mcall
mcall ,<wnd3.x+5,wnd3.width-10>,<wnd3.y+5,wnd3.height-10>,dword[dtp.work]
 
mov eax,0x00000001 ; left, inactive
call find_bitmap
mcall 7,,,<wnd3.x,wnd3.y>
 
pushd [ebx-8]
mov eax,0x00000003 ; base, inactive
call find_bitmap
pop edx
mov esi,wnd3.x+wnd3.width-1
sub esi,edx
shl edx,16
add edx,wnd3.x*65536+wnd3.y
mcall 7
;--------------------------------------
@@:
rol edx,16
add dx,[ebx-8]
cmp dx,si
ja @f
 
rol edx,16
mcall 7
jmp @b
;--------------------------------------
@@:
mov eax,0x00000002 ; oper, inactive
call find_bitmap
mov edx,ecx
shr edx,16
neg edx
shl edx,16
add edx,(wnd3.x+wnd3.width)*65536+wnd3.y
mcall 7
 
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mov eax,dword[edi+SKIN_PARAMS.margin.left-2]
mov ax,word[edi+SKIN_PARAMS.skin_height]
sub ax,[edi+SKIN_PARAMS.margin.bottom]
shr ax,1
add ax,[edi+SKIN_PARAMS.margin.top]
add ax,-4
push eax
lea ebx,[eax+wnd3.x*65536+wnd3.y]
mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size
;---------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd4.x,wnd4.width
mpack ecx,wnd4.y,wnd4.height
mov edx,[edi+SKIN_PARAMS.colors.outer]
call draw_framerect
mpack ebx,wnd4.x+4,wnd4.width-8
mpack ecx,wnd4.y+4,wnd4.height-8
mov edx,[edi+SKIN_PARAMS.colors.inner]
call draw_framerect
mcall 13,<wnd4.x+1,wnd4.width-2>,<wnd4.y+1,3>,[edi+SKIN_PARAMS.colors.frame]
add ecx,(wnd4.height-5)*65536
mcall
mcall ,<wnd4.x+1,3>,<wnd4.y+1,wnd4.height-2>
add ebx,(wnd4.width-5)*65536
mcall
mcall ,<wnd4.x+5,wnd4.width-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
 
mov eax,0x00010001 ; left, inactive
call find_bitmap
mcall 7,,,<wnd4.x,wnd4.y>
 
pushd [ebx-8]
mov eax,0x00010003 ; base, inactive
call find_bitmap
pop edx
mov esi,wnd4.x+wnd4.width-1
sub esi,edx
shl edx,16
add edx,wnd4.x*65536+wnd4.y
mcall 7
;--------------------------------------
@@:
rol edx,16
add dx,[ebx-8]
cmp dx,si
ja @f
 
rol edx,16
mcall 7
jmp @b
;--------------------------------------
@@:
mov eax,0x00010002 ; oper, inactive
call find_bitmap
mov edx,ecx
shr edx,16
neg edx
shl edx,16
add edx,(wnd4.x+wnd4.width)*65536+wnd4.y
mcall 7
 
mov ebp,not_packed_area
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
pop eax
lea ebx,[eax+wnd4.x*65536+wnd4.y]
mcall 4,,dword[dtp.grab_text],caption_text,caption_text.size
;----------------------------------------------------------------------
mov edi,[ebp+SKIN_HEADER.buttons]
add edi,ebp
;--------------------------------------
.lp1:
cmp dword[edi],0
je .lp2
 
mov ebx,dword[edi+SKIN_BUTTONS.left-2]
mov bx,[edi+SKIN_BUTTONS.width]
mov ecx,dword[edi+SKIN_BUTTONS.top-2]
mov cx,[edi+SKIN_BUTTONS.height]
add ebx,(wnd4.x+wnd4.width)*65536
add ecx,wnd4.y*65536
dec ebx
dec ecx
mcall 8,,,0x40000000
add edi,12
jmp .lp1
;--------------------------------------
.lp2:
mov edi,[ebp+SKIN_HEADER.params]
add edi,ebp
mpack ebx,wnd4.x+10,wnd4.y+10
add bx,word[edi+SKIN_PARAMS.skin_height]
mcall 4,,[dtp.work_text],window_text,window_text.size
 
mov ecx,[edi+SKIN_PARAMS.skin_height]
shl ecx,16
add ecx,(wnd4.y+8)*65536+10
mcall 13,<wnd4.x+window_text.size*6+20,wnd4.x+wnd4.width-10-\
(wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
 
add ecx,25*65536+8
mcall 8,<wnd4.x+wnd4.width/2-button_text.size*3-6,\
button_text.size*6+11>,,0,[dtp.work_button]
 
shr ecx,16
mov bx,cx
add ebx,0x00060006
mcall 4,,[dtp.work_button_text],button_text,button_text.size
ret
;---------------------------------------------------------------------
find_bitmap:
mov edi,[ebp+SKIN_HEADER.bitmaps]
add edi,ebp
xor ebx,ebx
;--------------------------------------
.lp1:
cmp dword[edi],0
je .lp2
 
cmp dword[edi+0],eax
jne @f
;--------------------------------------
mov ebx,[edi+SKIN_BITMAPS._data]
add ebx,ebp
mov ecx,[ebx-2]
mov cx,[ebx+4]
add ebx,8
;--------------------------------------
.lp2:
ret
;--------------------------------------
@@:
add edi,8
jmp .lp1
;----------------------------------------------------------------------
dec_edx:
sub dl,4
jnc @f
 
xor dl,dl
;--------------------------------------
@@:
sub dh,4
jnc @f
 
xor dh,dh
;--------------------------------------
@@:
rol edx,16
sub dl,4
jnc @f
 
xor dl,dl
;--------------------------------------
@@:
rol edx,16
ret
;---------------------------------------------------------------------
draw_framerect: ; ebx,ecx
push ebx ecx
add bx,[esp+6]
mov cx,[esp+2]
dec ebx
mcall 38
add cx,[esp]
rol ecx,16
add cx,[esp]
sub ecx,0x00010001
mcall
mov ebx,[esp+4]
mov ecx,[esp]
mov bx,[esp+6]
add cx,[esp+2]
dec ecx
mcall
add bx,[esp+4]
rol ebx,16
add bx,[esp+4]
sub ebx,0x00010001
mcall
add esp,8
ret
;----------------------------------------------------------------------
/programs/system/desktop/trunk/idata.inc
0,0 → 1,333
lsz text,\
ru, ' €ŒŠ€ ŽŠ€ ',\
ru, ' Ž‹Ž‘€ ‡€ƒŽ‹Ž‚Š€ ',\
ru, ' ŠŽŠ€ € Ž‹Ž‘… ‡€ƒŽ‹Ž‚Š€ ',\
ru, ' ’…Š‘’ € ŠŽŠ… € ‡€ƒŽ‹Ž‚Š… ',\
ru, ' ’…Š‘’ ‡€ƒŽ‹Ž‚ŽŠ€ ',\
ru, ' €Ž—€Ÿ Ž‹€‘’œ ',\
ru, ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, ' ’…Š‘’ € ŠŽŠ… ',\
ru, ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ ',\
ru, 'x',\
en, ' WINDOW FRAME ',\
en, ' WINDOW GRAB BAR ',\
en, ' WINDOW GRAB BUTTON ',\
en, ' WINDOW GRAB BUTTON TEXT ',\
en, ' WINDOW GRAB TITLE ',\
en, ' WINDOW WORK AREA ',\
en, ' WINDOW WORK AREA BUTTON ',\
en, ' WINDOW WORK AREA BUTTON TEXT ',\
en, ' WINDOW WORK AREA TEXT ',\
en, ' WINDOW WORK AREA GRAPH ',\
en, 'x',\
et, ' AKNA RAAM ',\
et, ' AKNA HAARAMISE RIBA ',\
et, ' AKNA HAARAMISE NUPP ',\
et, ' AKNA HAARAMISE NUPU TEKST ',\
et, ' AKNA HAARAMISE PEALKIRI ',\
et, ' AKNA TÖÖPIIRKOND ',\
et, ' AKNA TÖÖPIIRKONNA NUPP ',\
et, ' AKNA TÖÖPIIRKONNA NUPPU TEKST ',\
et, ' AKNA TÖÖPIIRKONNA TEKST ',\
et, ' AKNA TÖÖPIIRKONNA GRAAFIKA ',\
et, 'x'
 
lsz t1,\
ru, '‡€ƒ“‡ˆ’œ ‘Ž•€ˆ’œ ˆŒ…ˆ’œ',\
en, ' LOAD SAVE APPLY',\
et, ' LAADI SALVESTA KINNITA',\
 
lsz t2,\
ru, '‡€ƒ“‡ˆ’œ 3D ‹Ž‘Šˆ… ˆŒ…ˆ’œ',\
en, ' LOAD 3D FLAT APPLY',\
et, ' LAADI 3D LAME KINNITA '
 
lsz select_dtp_text,\
ru, ' ‚›Ž –‚…’Ž‚ŽƒŽ Ž”ŽŒ‹…ˆŸ: ',\
en, ' CHOICE OF COLOR SCHEMES: ',\
et, ' VALIK VARVISKEEME: '
lsz select_skin_text,\
ru, ' ‚›Ž ˜Š“Šˆ: ',\
en, ' CHOICE OF SKINS: ',\
et, ' VALIK NAHAD: '
lsz caption_text,\
ru, '‡ £®«®¢®ª',\
en, 'Caption',\
et, 'Pealkiri'
 
sz close_text,'x'
 
lsz window_text,\
ru, '’¥ªáâ ¢ ®ª­¥',\
en, 'Window text',\
et, 'Akna tekst'
 
lsz button_text,\
ru, '’¥ªáâ ­  ª­®¯ª¥',\
en, 'Button text',\
et, 'Nupu tekst'
 
if lang eq ru
title db '€‘’Ž‰Š€ ŽŠŽ',0
else if lang eq et
title db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0
else
title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
end if
;---------------------------------------------------------------------
l_libs_start:
 
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
 
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
 
end_l_libs:
;---------------------------------------------------------------------
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
 
head_f_i:
head_f_l db 'System error',0
 
err_message_found_lib1 db 'box_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
 
err_message_import1 db 'box_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
 
;---------------------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
 
ColorDialog_Init dd aColorDialog_Init
ColorDialog_Start dd aColorDialog_Start
;OpenDialog__Version dd aOpenDialog_Version
dd 0
dd 0
 
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
 
aColorDialog_Init db 'ColorDialog_init',0
aColorDialog_Start db 'ColorDialog_start',0
;aOpenDialog_Version db 'Version_OpenDialog',0
;---------------------------------------------------------------------
align 4
Box_lib_import:
;init_lib dd a_init
;version_lib dd a_version
 
 
;edit_box_draw dd aEdit_box_draw
;edit_box_key dd aEdit_box_key
;edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
 
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
 
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
 
;scrollbar_ver_draw dd aScrollbar_ver_draw
;scrollbar_ver_mouse dd aScrollbar_ver_mouse
;scrollbar_hor_draw dd aScrollbar_hor_draw
;scrollbar_hor_mouse dd aScrollbar_hor_mouse
;version_scrollbar dd aVersion_scrollbar
 
;dinamic_button_draw dd aDbutton_draw
;dinamic_button_mouse dd aDbutton_mouse
;version_dbutton dd aVersion_dbutton
 
;menu_bar_draw dd aMenu_bar_draw
;menu_bar_mouse dd aMenu_bar_mouse
;menu_bar_activate dd aMenu_bar_activate
;version_menu_bar dd aVersion_menu_bar
 
;FileBrowser_draw dd aFileBrowser_draw
;FileBrowser_mouse dd aFileBrowser_mouse
;FileBrowser_key dd aFileBrowser_key
;Version_FileBrowser dd aVersion_FileBrowser
 
PathShow_prepare dd sz_PathShow_prepare
PathShow_draw dd sz_PathShow_draw
;Version_path_show dd szVersion_path_show
dd 0
dd 0
 
;a_init db 'lib_init',0
;a_version db 'version',0
 
;aEdit_box_draw db 'edit_box',0
;aEdit_box_key db 'edit_box_key',0
;aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
 
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
 
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
 
;aScrollbar_ver_draw db 'scrollbar_v_draw',0
;aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
;aScrollbar_hor_draw db 'scrollbar_h_draw',0
;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0
;aVersion_scrollbar db 'version_scrollbar',0
 
;aDbutton_draw db 'dbutton_draw',0
;aDbutton_mouse db 'dbutton_mouse',0
;aVersion_dbutton db 'version_dbutton',0
 
;aMenu_bar_draw db 'menu_bar_draw',0
;aMenu_bar_mouse db 'menu_bar_mouse',0
;aMenu_bar_activate db 'menu_bar_activate',0
;aVersion_menu_bar db 'version_menu_bar',0
 
;aFileBrowser_draw db 'FileBrowser_draw',0
;aFileBrowser_mouse db 'FileBrowser_mouse',0
;aFileBrowser_key db 'FileBrowser_key',0
;aVersion_FileBrowser db 'version_FileBrowser',0
 
sz_PathShow_prepare db 'PathShow_prepare',0
sz_PathShow_draw db 'PathShow_draw',0
;szVersion_path_show db 'version_PathShow',0
;---------------------------------------------------------------------
PathShow_data_1:
.type dd 0 ;+0
.start_y dw frame_1.y+10 ;+4
.start_x dw frame_1.x+7 ;+6
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
.area_size_x dw frame_1.width-20 ;+10
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
.background_flag dd 0 ;+16
.font_color dd 0x0 ;+20
.background_color dd 0x0 ;+24
.text_pointer dd fname ;+28
.work_area_pointer dd text_work_area ;+32
.temp_text_length dd 0 ;+36
;---------------------------------------------------------------------
PathShow_data_2:
.type dd 0 ;+0
.start_y dw frame_2.y+10 ;+4
.start_x dw frame_2.x+7 ;+6
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1
.area_size_x dw frame_2.width-20 ;+10
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable
.background_flag dd 0 ;+16
.font_color dd 0x0 ;+20
.background_color dd 0x0 ;+24
.text_pointer dd skin_info ;+28
.work_area_pointer dd text_work_area2 ;+32
.temp_text_length dd 0 ;+36
;---------------------------------------------------------------------
OpenDialog_data:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd fname ;+36
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
OpenDialog_data2:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name2 ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach2 ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd skin_info ;+36
.filename_area dd filename_area2 ;+40
.filter_area dd Filter2
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
communication_area_name2:
db 'FFFFFFFF_open_dialog',0
 
communication_area_name:
db 'FFFFFFFF_open_dialog2',0
open_dialog_path:
if __nightbuild eq yes
db '/sys/MANAGERS/opendial',0
else
db '/sys/File Managers/opendial',0
end if
communication_area_default_pach:
db '/sys',0
 
Filter:
dd Filter.end - Filter
.1:
db 'DTP',0
.end:
db 0
 
Filter2:
dd Filter.end - Filter
.1:
db 'SKN',0
.end:
db 0
 
start_temp_file_name:
db 'default.dtp',0
 
default_skin:
db '/sys/default.skn',0
default_dtp:
db '/sys/default.dtp',0
;---------------------------------------------------------------------
ColorDialog_data:
.type dd 0
.procinfo dd procinfo ;+4
.com_area_name dd cd_communication_area_name ;+8
.com_area dd 0 ;+12
.start_path dd colordialog_path ;+16
.draw_window dd draw_window ;+20
.status dd 0 ;+24
.x:
.x_size dw 420 ;+28 ; Window X size
.x_start dw 10 ;+30 ; Window X position
.y:
.y_size dw 320 ;+32 ; Window y size
.y_start dw 10 ;+34 ; Window Y position
.color_type dd 0 ;+36 ; 0- RGB, 1 or other - reserved
.color dd 0 ;+40 ; Selected color
 
cd_communication_area_name:
db 'FFFFFFFF_color_dialog',0
colordialog_path:
db '/rd/1/colrdial',0
;---------------------------------------------------------------------
IncludeIGlobals
/programs/system/desktop/trunk/udata.inc
0,0 → 1,89
 
IncludeUGlobals
 
read_info:
.mode dd ? ; read
.start_block dd ? ; first block
.blocks dd ? ; 512 bytes
.address dd ?
.workarea dd ?
fname rb 4096 ; filename
 
virtual at read_info
write_info:
.mode dd ?
rd 1
.bytes2write dd ?
.address dd ?
.workarea dd ?
end virtual
 
read_info2:
.mode dd ? ; read
.start_block dd ? ; first block
.blocks dd ? ; 512 bytes
.address dd ?
.workarea dd ?
skin_info rb 4096
 
;param rb 257
 
align 4
app_colours:
 
w_frame dd ?
w_grab dd ?
w_grab_button dd ?
w_grab_button_text dd ?
w_grab_text dd ?
w_work dd ?
w_work_button dd ?
w_work_button_text dd ?
w_work_text dd ?
w_work_graph dd ?
 
color_table:
times 10 dd ?
current_skin_high rd 1
;---------------------------------------------------------------------
align 4
cur_dir_path:
rb 4096
;---------------------------------------------------------------------
library_path:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach2:
rb 4096
;---------------------------------------------------------------------
text_work_area:
rb 1024
;---------------------------------------------------------------------
text_work_area2:
rb 1024
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------
filename_area:
rb 256
;---------------------------------------------------------------------
filename_area2:
rb 256
;---------------------------------------------------------------------
rb 4096
stacktop:
;---------------------------------------------------------------------
file_load_area: ; old 0x10000
rb 32*1024
;---------------------------------------------------------------------
not_packed_area: ; old 0x18000
rb 32*1024
;---------------------------------------------------------------------
unpack_area: ; old 0x20000
rb 32*1024
;---------------------------------------------------------------------