Subversion Repositories Kolibri OS

Rev

Rev 4232 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.     use32
  2.     org     0x0
  3. ;-------------------------------------------------------------------------------
  4.     db      "MENUET01"
  5.     dd      1, @code, @data, @mem, @stack, 0, 0
  6. ;-------------------------------------------------------------------------------
  7.     include "../../macros.inc"
  8.     include "../../proc32.inc"
  9.     include "../../dll.inc"
  10.     ;include "../../debug.inc"
  11. ;===============================================================================
  12. @code:
  13.     mcall   9, buffer, -1
  14.     mov     ecx, [buffer + 30]
  15.     mcall   18, 21
  16.     mov     [win.sid], eax
  17. ;-------------------------------------------------------------------------------
  18.     mcall   68, 11
  19.     stdcall dll.Load, @import
  20. ;-------------------------------------------------------------------------------
  21.     mov     [tabs.index], byte 2
  22. ;-------------------------------------------------------------------------------
  23.     mcall   48, 3, color, 40
  24. ;-------------------------------------------------------------------------------
  25.     invoke  ini.iget, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, 0
  26.     mov     [docky.fsize], al
  27. ;-------------------------------------------------------------------------------
  28. main_loop:
  29.     mcall   10
  30.     cmp     eax, EV_REDRAW
  31.     je      event_redraw
  32.     cmp     eax, EV_BUTTON
  33.     je      event_button
  34.  
  35.     jmp     main_loop
  36. ;-------------------------------------------------------------------------------
  37. exit:
  38.     mcall   -1
  39. ;-------------------------------------------------------------------------------
  40. event_redraw:
  41.     call    win.draw
  42.     jmp     main_loop
  43. ;-------------------------------------------------------------------------------
  44. event_button:
  45.     mcall   17
  46.     cmp     ah, 0x01
  47.     je      exit
  48.     cmp     ah, 0x10
  49.     je      .tabs.walls
  50.     cmp     ah, 0x11
  51.     je      .tabs.skins
  52.     cmp     ah, 0x12
  53.     je      .tabs.docky
  54.     cmp     ah, 0x13
  55.     je      .tabs.panel
  56.  
  57.     cmp     ah, 0x40
  58.     je      .docky.button_top
  59.     cmp     ah, 0x41
  60.     je      .docky.button_left
  61.     cmp     ah, 0x42
  62.     je      .docky.button_bottom
  63.     cmp     ah, 0x43
  64.     je      .docky.button_right
  65.  
  66.     cmp     ah, 0x44
  67.     je      .docky.checkbox_fsize
  68.  
  69.     cmp     ah, 0x45
  70.     je      .docky.kill
  71.     cmp     ah, 0x46
  72.     je      .docky.start
  73.  
  74.     jmp     main_loop
  75.  
  76.  .tabs.walls:
  77.     mov     [tabs.index], byte 0
  78.     call    win.draw
  79.     jmp     main_loop
  80.  .tabs.skins:
  81.     mov     [tabs.index], byte 1
  82.     call    win.draw
  83.     jmp     main_loop
  84.  .tabs.docky:
  85.     mov     [tabs.index], byte 2
  86.     call    win.draw
  87.     jmp     main_loop
  88.  .tabs.panel:
  89.     mov     [tabs.index], byte 3
  90.     call    win.draw
  91.     jmp     main_loop
  92.  
  93.  .docky.button_top:
  94.     invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 1
  95.     call    docky.apply
  96.     jmp     main_loop
  97.  .docky.button_left:
  98.     invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 2
  99.     call    docky.apply
  100.     jmp     main_loop
  101.  .docky.button_bottom:
  102.     invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 3
  103.     call    docky.apply
  104.     jmp     main_loop
  105.  .docky.button_right:
  106.     invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 4
  107.     call    docky.apply
  108.     jmp     main_loop
  109.  
  110.  .docky.checkbox_fsize:
  111.     mov     al, 1
  112.     sub     al, byte [docky.fsize]
  113.     mov     [docky.fsize], al
  114.     push    183
  115.     push    docky.fsize
  116.     call    checkbox.draw
  117.  
  118.     xor     eax, eax
  119.     mov     al, [docky.fsize]
  120.     invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, eax
  121.     call    docky.apply
  122.  
  123.     jmp     main_loop
  124.  
  125.  .docky.kill:
  126.     call    docky.kill
  127.     jmp     main_loop
  128.  .docky.start:
  129.     call    docky.kill
  130.     call    docky.start
  131.     jmp     main_loop
  132. ;-------------------------------------------------------------------------------
  133. win.draw:
  134.     mcall   12, 1
  135.  
  136.     mov     edx, [color.work]
  137.     or      edx, 0x34000000
  138.     mcall   0, <128, 256>, <128, 299>, , , win.title
  139.  
  140.     call    tabs.draw
  141.  
  142.     mcall   12, 2
  143.  
  144.     ret
  145. ;-------------------------------------------------------------------------------
  146. tabs.draw:
  147.     mcall    8, <  8,  57>, < 9, 25>, 0x40000010
  148.     mcall     , < 65,  57>,         , 0x40000011
  149.     mcall     , <122,  57>,         , 0x40000012
  150.     mcall     , <179,  58>,         , 0x40000013
  151.  
  152.     mcall   13, <  9, 228>,         , [color.work]
  153.  
  154.     mcall     ,           , < 9,  1>, [color.workE]
  155.     mcall     ,           , <34,  1>
  156.     mcall     , <  8,   1>, <10, 24>
  157.     mcall     , < 65,   1>
  158.     mcall     , <122,   1>
  159.     mcall     , <179,   1>
  160.     mcall     , <237,   1>
  161.  
  162.     mov     edx, [color.workE]
  163.  
  164.     cmp     [tabs.index], byte 0
  165.     je      .walls
  166.     cmp     [tabs.index], byte 1
  167.     je      .skins
  168.     cmp     [tabs.index], byte 2
  169.     je      .docky
  170.     jmp     .panel
  171.  
  172.  .walls:
  173.     mcall     , <  9,  56>
  174.  
  175.     mcall   4, < 22, 18>, [color.textE], tabs.walls_title, 5
  176.     mcall    , < 79, 18>, [color.text] , tabs.skins_title
  177.     mcall    , <136, 18>,              , tabs.docky_title
  178.     mcall    , <193, 18>,              , tabs.panel_title
  179.  
  180.     call    tabs.walls.draw
  181.  
  182.     ret
  183.  .skins:
  184.     mcall     , < 66,  56>
  185.  
  186.     mcall   4, < 79, 18>, [color.textE], tabs.skins_title, 5
  187.     mcall    , < 22, 18>, [color.text] , tabs.walls_title
  188.     mcall    , <136, 18>,              , tabs.docky_title
  189.     mcall    , <193, 18>,              , tabs.panel_title
  190.  
  191.     call    tabs.skins.draw
  192.  
  193.     ret
  194.  .docky:
  195.     mcall     , <123,  56>
  196.  
  197.     mcall   4, <136, 18>, [color.textE], tabs.docky_title, 5
  198.     mcall    , < 79, 18>, [color.text] , tabs.skins_title
  199.     mcall    , < 22, 18>,              , tabs.walls_title
  200.     mcall    , <193, 18>,              , tabs.panel_title
  201.  
  202.     call    tabs.docky.draw
  203.  
  204.     ret
  205.  .panel:
  206.     mcall     , <180,  57>
  207.  
  208.     mcall   4, <193, 18>, [color.textE], tabs.panel_title, 5
  209.     mcall    , < 79, 18>, [color.text] , tabs.skins_title
  210.     mcall    , <136, 18>,              , tabs.docky_title
  211.     mcall    , < 22, 18>,              , tabs.walls_title
  212.  
  213.     call    tabs.panel.draw
  214.  
  215.     ret
  216. ;-------------------------------------------------------------------------------
  217. tabs.walls.draw:
  218.     ret
  219. ;-------------------------------------------------------------------------------
  220. tabs.skins.draw:
  221.     ret
  222. ;-------------------------------------------------------------------------------
  223. tabs.docky.draw:
  224.   ; == FRAME: POSITION == ;
  225.     mcall   13, <10, 226>, <48, 112>, [color.workE]
  226.     mcall     , <11, 224>, <49, 110>, [color.textE]
  227.     mcall     , <12, 222>, <50, 108>, [color.work]
  228.  
  229.     mov     ecx, [color.text]
  230.     or      ecx, 0xC0000000
  231.     mcall   4, <20, 45>, , tabs.docky.frame_pos_title, , [color.work]
  232.  
  233.     mcall   8, < 81, 84>, < 64, 24>, 0x40, [color.workE]
  234.     mcall    , < 58, 64>, < 91, 24>, 0x41
  235.     mcall    , < 81, 84>, <118, 24>, 0x42
  236.     mcall    , <125, 64>, < 91, 24>, 0x43
  237.  
  238.     mov     ecx, [color.textE]
  239.     or      ecx, 0x80000000
  240.     mcall   4, <115,  73>, , tabs.docky.button_top
  241.     mcall    , < 79, 100>, , tabs.docky.button_left
  242.     mcall    , <106, 127>, , tabs.docky.button_bottom
  243.     mcall    , <143, 100>, , tabs.docky.button_right
  244.  
  245.   ; == FRAME: SETTINGS == ;
  246.     mcall   13, <10, 226>, <170, 40>, [color.workE]
  247.     mcall     , <11, 224>, <171, 38>, [color.textE]
  248.     mcall     , <12, 222>, <172, 36>, [color.work]
  249.  
  250.     mov     ecx, [color.text]
  251.     or      ecx, 0xC0000000
  252.     mcall   4, <20, 167>, , tabs.docky.frame_set_title, , [color.work]
  253.  
  254.     mcall   8, <20, 206>, <182, 16>, 0x60000044
  255.  
  256.     mov     ecx, [color.text]
  257.     or      ecx, 0x80000000
  258.     mcall   4, <20, 187>, , tabs.docky.checkbox_fsize_title
  259.  
  260.     push    183
  261.     push    docky.fsize
  262.     call    checkbox.draw
  263.  
  264.   ; == FRAME: THEARD == ;
  265.     mcall   13, <10, 226>, <219, 44>, [color.workE]
  266.     mcall     , <11, 224>, <220, 42>, [color.textE]
  267.     mcall     , <12, 222>, <221, 40>, [color.work]
  268.  
  269.     mov     ecx, [color.text]
  270.     or      ecx, 0xC0000000
  271.     mcall   4, <20, 217>, , tabs.docky.frame_theard_title, , [color.work]
  272.  
  273.     mcall   8, < 20,  98>, <231, 20>, 0x45, [color.workE]
  274.     mcall    , <128,  98>,          , 0x46
  275.  
  276.     mov     ecx, [color.textE]
  277.     or      ecx, 0x80000000
  278.     mcall   4, < 54,  238>, , tabs.docky.button_close
  279.     mcall    , <139,  238>, , tabs.docky.button_start
  280.  
  281.     ret
  282. ;-------------------------------------------------------------------------------
  283. tabs.panel.draw:
  284.     ret
  285. ;-------------------------------------------------------------------------------
  286. checkbox.draw:
  287.     pop     ebp
  288.     pop     edi
  289.     pop     ecx
  290.     push    ebp
  291.  
  292.     shl     ecx, 16
  293.     mov     cx, 16
  294.     mcall   13, <188, 34>, , [color.workE]
  295.     sub     ecx, 2
  296.     add     ecx, 0x00010000
  297.     mcall     , <189, 32>, , [color.textE]
  298.  
  299.     mov     eax, 13
  300.     mov     edx, [color.workE]
  301.     cmp     [edi], byte 0
  302.     je      .draw_off
  303.  .draw_on:
  304.     mcall   , <189, 6>
  305.     mov     edi, ecx
  306.     shr     edi, 16
  307.     add     edi, 3
  308.     mcall   4, <189, edi>, [color.text], checkbox.on, 5
  309.  
  310.     ret
  311.  
  312.  .draw_off:
  313.     mov     edx, [color.work]
  314.     mcall   , <215, 6>
  315.     mov     edi, ecx
  316.     shr     edi, 16
  317.     add     edi, 3
  318.     mcall   4, <189, edi>, [color.text], checkbox.off, 5
  319.     ret
  320. ;-------------------------------------------------------------------------------
  321. docky.kill:
  322.     mov     dl, 0
  323.     mcall   9, buffer, -1
  324.     mov     ecx, eax
  325.  .search:
  326.     mcall   9, buffer
  327.     cmp     [buffer + 10], dword "@doc"
  328.     je      .kill
  329.     cmp     [buffer + 10], dword "@DOC"
  330.     jne     .continue
  331.  .kill:
  332.     mov     dl, 1
  333.     mcall   18, 2
  334.  .continue:
  335.     dec     ecx
  336.     cmp     ecx, 0
  337.     jne     .search
  338.  
  339.     ret
  340. ;-------------------------------------------------------------------------------
  341. docky.start:
  342.     mov     [buffer +  0], dword 7
  343.     mov     [buffer +  4], dword 0
  344.     mov     [buffer +  8], dword 0
  345.     mov     [buffer + 20], dword "@doc"
  346.     mov     [buffer + 24], word  "ky"
  347.     mov     [buffer + 26], byte  0
  348.     mcall   70, buffer
  349.  
  350.     mcall   5, 5
  351.     mcall   18, 3, [win.sid]
  352.  
  353.     ret
  354. ;-------------------------------------------------------------------------------
  355. docky.apply:
  356.     call    docky.kill
  357.     cmp     dl, byte 0
  358.     je      .end
  359.     call    docky.start
  360.  .end:
  361.     ret
  362. ;===============================================================================
  363. @import:
  364.     library ini, "libini.obj"
  365.     import  ini, ini.iget, "ini_get_int", ini.iset, "ini_set_int"
  366. ;===============================================================================
  367. ini.docky:
  368.     db      "settings/docky.ini", 0
  369.  .sect.cfg:
  370.     db      "@", 0
  371.  .keys.fsize:
  372.     db      "fsize", 0
  373.  .keys.location:
  374.     db      "location", 0
  375.  
  376. win.title:
  377.     db      "Desktop configuration", 0
  378.  
  379. tabs.walls_title:
  380.     db      "Walls"
  381. tabs.skins_title:
  382.     db      "Skins"
  383. tabs.docky_title:
  384.     db      "Docky"
  385. tabs.panel_title:
  386.     db      "Panel"
  387.  
  388. tabs.docky.frame_pos_title:
  389.     db      " Position ", 0
  390. tabs.docky.button_top:
  391.     db      "TOP", 0
  392. tabs.docky.button_left:
  393.     db      "LEFT", 0
  394. tabs.docky.button_bottom:
  395.     db      "BOTTOM", 0
  396. tabs.docky.button_right:
  397.     db      "RIGHT", 0
  398.  
  399. tabs.docky.frame_set_title:
  400.     db      " Settings ", 0
  401. tabs.docky.checkbox_fsize_title:
  402.     db      "Full size mode", 0
  403.  
  404. tabs.docky.frame_theard_title:
  405.     db      " Theard ", 0
  406. tabs.docky.button_close:
  407.     db      "Close", 0
  408. tabs.docky.button_start:
  409.     db      "Start/Restart", 0
  410.  
  411.  
  412. checkbox.on:
  413.     db      "  ON "
  414. checkbox.off:
  415.     db      " OFF "
  416.  
  417. @data:
  418. ;===============================================================================
  419.     rb      2048
  420. @stack:
  421. ;-------------------------------------------------------------------------------
  422. win.sid:
  423.     rd      1
  424.  
  425. docky.fsize:
  426.     rb      1
  427.  
  428. tabs.index:
  429.     rb      1
  430.  
  431. color:
  432.  .frame:
  433.     rd      5
  434.  .work:
  435.     rd      1
  436.  .workE:
  437.     rd      1
  438.  .textE:
  439.     rd      1
  440.  .text:
  441.     rd      2
  442.  
  443. buffer:
  444.     rb      1024
  445.  
  446. @mem: