use32 org 0x0 ;------------------------------------------------------------------------------- db "MENUET01" dd 1, @code, @data, @mem, @stack, 0, 0 ;------------------------------------------------------------------------------- include "../../macros.inc" include "../../proc32.inc" include "../../dll.inc" ;include "../../debug.inc" ;=============================================================================== @code: mcall 9, buffer, -1 mov ecx, [buffer + 30] mcall 18, 21 mov [win.sid], eax ;------------------------------------------------------------------------------- mcall 68, 11 stdcall dll.Load, @import ;------------------------------------------------------------------------------- mov [tabs.index], byte 2 ;------------------------------------------------------------------------------- mcall 48, 3, color, 40 ;------------------------------------------------------------------------------- invoke ini.iget, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, 0 mov [docky.fsize], al ;------------------------------------------------------------------------------- main_loop: mcall 10 cmp eax, EV_REDRAW je event_redraw cmp eax, EV_BUTTON je event_button jmp main_loop ;------------------------------------------------------------------------------- exit: mcall -1 ;------------------------------------------------------------------------------- event_redraw: call win.draw jmp main_loop ;------------------------------------------------------------------------------- event_button: mcall 17 cmp ah, 0x01 je exit cmp ah, 0x10 je .tabs.walls cmp ah, 0x11 je .tabs.skins cmp ah, 0x12 je .tabs.docky cmp ah, 0x13 je .tabs.panel cmp ah, 0x40 je .docky.button_top cmp ah, 0x41 je .docky.button_left cmp ah, 0x42 je .docky.button_bottom cmp ah, 0x43 je .docky.button_right cmp ah, 0x44 je .docky.checkbox_fsize cmp ah, 0x45 je .docky.kill cmp ah, 0x46 je .docky.start jmp main_loop .tabs.walls: mov [tabs.index], byte 0 call win.draw jmp main_loop .tabs.skins: mov [tabs.index], byte 1 call win.draw jmp main_loop .tabs.docky: mov [tabs.index], byte 2 call win.draw jmp main_loop .tabs.panel: mov [tabs.index], byte 3 call win.draw jmp main_loop .docky.button_top: invoke ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 1 call docky.apply jmp main_loop .docky.button_left: invoke ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 2 call docky.apply jmp main_loop .docky.button_bottom: invoke ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 3 call docky.apply jmp main_loop .docky.button_right: invoke ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 4 call docky.apply jmp main_loop .docky.checkbox_fsize: mov al, 1 sub al, byte [docky.fsize] mov [docky.fsize], al push 183 push docky.fsize call checkbox.draw xor eax, eax mov al, [docky.fsize] invoke ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, eax call docky.apply jmp main_loop .docky.kill: call docky.kill jmp main_loop .docky.start: call docky.kill call docky.start jmp main_loop ;------------------------------------------------------------------------------- win.draw: mcall 12, 1 mov edx, [color.work] or edx, 0x34000000 mcall 0, <128, 256>, <128, 299>, , , win.title call tabs.draw mcall 12, 2 ret ;------------------------------------------------------------------------------- tabs.draw: mcall 8, < 8, 57>, < 9, 25>, 0x40000010 mcall , < 65, 57>, , 0x40000011 mcall , <122, 57>, , 0x40000012 mcall , <179, 58>, , 0x40000013 mcall 13, < 9, 228>, , [color.work] mcall , , < 9, 1>, [color.workE] mcall , , <34, 1> mcall , < 8, 1>, <10, 24> mcall , < 65, 1> mcall , <122, 1> mcall , <179, 1> mcall , <237, 1> mov edx, [color.workE] cmp [tabs.index], byte 0 je .walls cmp [tabs.index], byte 1 je .skins cmp [tabs.index], byte 2 je .docky jmp .panel .walls: mcall , < 9, 56> mcall 4, < 22, 18>, [color.textE], tabs.walls_title, 5 mcall , < 79, 18>, [color.text] , tabs.skins_title mcall , <136, 18>, , tabs.docky_title mcall , <193, 18>, , tabs.panel_title call tabs.walls.draw ret .skins: mcall , < 66, 56> mcall 4, < 79, 18>, [color.textE], tabs.skins_title, 5 mcall , < 22, 18>, [color.text] , tabs.walls_title mcall , <136, 18>, , tabs.docky_title mcall , <193, 18>, , tabs.panel_title call tabs.skins.draw ret .docky: mcall , <123, 56> mcall 4, <136, 18>, [color.textE], tabs.docky_title, 5 mcall , < 79, 18>, [color.text] , tabs.skins_title mcall , < 22, 18>, , tabs.walls_title mcall , <193, 18>, , tabs.panel_title call tabs.docky.draw ret .panel: mcall , <180, 57> mcall 4, <193, 18>, [color.textE], tabs.panel_title, 5 mcall , < 79, 18>, [color.text] , tabs.skins_title mcall , <136, 18>, , tabs.docky_title mcall , < 22, 18>, , tabs.walls_title call tabs.panel.draw ret ;------------------------------------------------------------------------------- tabs.walls.draw: ret ;------------------------------------------------------------------------------- tabs.skins.draw: ret ;------------------------------------------------------------------------------- tabs.docky.draw: ; == FRAME: POSITION == ; mcall 13, <10, 226>, <48, 112>, [color.workE] mcall , <11, 224>, <49, 110>, [color.textE] mcall , <12, 222>, <50, 108>, [color.work] mov ecx, [color.text] or ecx, 0xC0000000 mcall 4, <20, 45>, , tabs.docky.frame_pos_title, , [color.work] mcall 8, < 81, 84>, < 64, 24>, 0x40, [color.workE] mcall , < 58, 64>, < 91, 24>, 0x41 mcall , < 81, 84>, <118, 24>, 0x42 mcall , <125, 64>, < 91, 24>, 0x43 mov ecx, [color.textE] or ecx, 0x80000000 mcall 4, <115, 73>, , tabs.docky.button_top mcall , < 79, 100>, , tabs.docky.button_left mcall , <106, 127>, , tabs.docky.button_bottom mcall , <143, 100>, , tabs.docky.button_right ; == FRAME: SETTINGS == ; mcall 13, <10, 226>, <170, 40>, [color.workE] mcall , <11, 224>, <171, 38>, [color.textE] mcall , <12, 222>, <172, 36>, [color.work] mov ecx, [color.text] or ecx, 0xC0000000 mcall 4, <20, 167>, , tabs.docky.frame_set_title, , [color.work] mcall 8, <20, 206>, <182, 16>, 0x60000044 mov ecx, [color.text] or ecx, 0x80000000 mcall 4, <20, 187>, , tabs.docky.checkbox_fsize_title push 183 push docky.fsize call checkbox.draw ; == FRAME: THEARD == ; mcall 13, <10, 226>, <219, 44>, [color.workE] mcall , <11, 224>, <220, 42>, [color.textE] mcall , <12, 222>, <221, 40>, [color.work] mov ecx, [color.text] or ecx, 0xC0000000 mcall 4, <20, 217>, , tabs.docky.frame_theard_title, , [color.work] mcall 8, < 20, 98>, <231, 20>, 0x45, [color.workE] mcall , <128, 98>, , 0x46 mov ecx, [color.textE] or ecx, 0x80000000 mcall 4, < 54, 238>, , tabs.docky.button_close mcall , <139, 238>, , tabs.docky.button_start ret ;------------------------------------------------------------------------------- tabs.panel.draw: ret ;------------------------------------------------------------------------------- checkbox.draw: pop ebp pop edi pop ecx push ebp shl ecx, 16 mov cx, 16 mcall 13, <188, 34>, , [color.workE] sub ecx, 2 add ecx, 0x00010000 mcall , <189, 32>, , [color.textE] mov eax, 13 mov edx, [color.workE] cmp [edi], byte 0 je .draw_off .draw_on: mcall , <189, 6> mov edi, ecx shr edi, 16 add edi, 3 mcall 4, <189, edi>, [color.text], checkbox.on, 5 ret .draw_off: mov edx, [color.work] mcall , <215, 6> mov edi, ecx shr edi, 16 add edi, 3 mcall 4, <189, edi>, [color.text], checkbox.off, 5 ret ;------------------------------------------------------------------------------- docky.kill: mov dl, 0 mcall 9, buffer, -1 mov ecx, eax .search: mcall 9, buffer cmp [buffer + 10], dword "@doc" je .kill cmp [buffer + 10], dword "@DOC" jne .continue .kill: mov dl, 1 mcall 18, 2 .continue: dec ecx cmp ecx, 0 jne .search ret ;------------------------------------------------------------------------------- docky.start: mov [buffer + 0], dword 7 mov [buffer + 4], dword 0 mov [buffer + 8], dword 0 mov [buffer + 20], dword "@doc" mov [buffer + 24], word "ky" mov [buffer + 26], byte 0 mcall 70, buffer mcall 5, 5 mcall 18, 3, [win.sid] ret ;------------------------------------------------------------------------------- docky.apply: call docky.kill cmp dl, byte 0 je .end call docky.start .end: ret ;=============================================================================== @import: library ini, "libini.obj" import ini, ini.iget, "ini_get_int", ini.iset, "ini_set_int" ;=============================================================================== ini.docky: db "settings/docky.ini", 0 .sect.cfg: db "@", 0 .keys.fsize: db "fsize", 0 .keys.location: db "location", 0 win.title: db "Desktop configuration", 0 tabs.walls_title: db "Walls" tabs.skins_title: db "Skins" tabs.docky_title: db "Docky" tabs.panel_title: db "Panel" tabs.docky.frame_pos_title: db " Position ", 0 tabs.docky.button_top: db "TOP", 0 tabs.docky.button_left: db "LEFT", 0 tabs.docky.button_bottom: db "BOTTOM", 0 tabs.docky.button_right: db "RIGHT", 0 tabs.docky.frame_set_title: db " Settings ", 0 tabs.docky.checkbox_fsize_title: db "Full size mode", 0 tabs.docky.frame_theard_title: db " Theard ", 0 tabs.docky.button_close: db "Close", 0 tabs.docky.button_start: db "Start/Restart", 0 checkbox.on: db " ON " checkbox.off: db " OFF " @data: ;=============================================================================== rb 2048 @stack: ;------------------------------------------------------------------------------- win.sid: rd 1 docky.fsize: rb 1 tabs.index: rb 1 color: .frame: rd 5 .work: rd 1 .workE: rd 1 .textE: rd 1 .text: rd 2 buffer: rb 1024 @mem: