/data/common/settings/games.ini |
---|
4,9 → 4,9 |
default_icon=35 |
[Casual] |
2048=/k/games/2048,53 |
Fara=/k/games/fara/fara,42 |
MarbleMatch=/k/games/marblematch3 |
2048=/kg/2048,53 |
Fara=/kg/fara/fara,42 |
MarbleMatch=/kg/marblematch3 |
Tetris=games/tetris,47 |
Pipes=games/pipes,26 |
Snake=games/snake,32 |
15,36 → 15,36 |
Freecell=games/freecell,68 |
Pong=games/pong,101 |
Pong3=games/pong3,12 |
Arcanii=/k/games/arcanii,12 |
Arcanii=/kg/arcanii,12 |
[Arcade] |
LaserTank=/k/games/lasertank/lasertank,72 |
Heliothryx=/k/games/heliothryx,112 |
Dungeons=/k/games/dungeons/dungeons,94 |
JumpBump=/k/games/jumpbump/jumpbump.kex,102 |
Nsider=/k/games/nsider,109 |
TheBus=/k/games/the_bus/the_bus,86 |
Mun=/k/games/mun/mun |
LaserTank=/kg/lasertank/lasertank,72 |
Heliothryx=/kg/heliothryx,112 |
Dungeons=/kg/dungeons/dungeons,94 |
JumpBump=/kg/jumpbump/jumpbump.kex,102 |
Nsider=/kg/nsider,109 |
TheBus=/kg/the_bus/the_bus,86 |
Mun=/kg/mun/mun |
Kosilka=games/kosilka,23 |
Bomber=/k/games/bomber/bomber,97 |
Invaders=/k/games/invaders,111 |
Bomber=/kg/bomber/bomber,97 |
Invaders=/kg/invaders,111 |
Sea War=games/SW,66 |
Almaz=/k/games/almaz,81 |
Almaz=/kg/almaz,81 |
Tanks=games/tanks,67 |
RocketForces=games/rforces,110 |
Pig=/k/games/pig/pigex,120 |
Ataka=/k/games/ataka,35 |
Donkey=/k/games/donkey |
Loderunner=/k/games/LRL/LRL,41 |
; 21days=/k/games/21days,104 ;rus only |
BabyPainter=/k/games/BabyPainter,87 |
Pig=/kg/pig/pigex,120 |
Ataka=/kg/ataka,35 |
Donkey=/kg/donkey |
Loderunner=/kg/LRL/LRL,41 |
; 21days=/kg/21days,104 ;rus only |
BabyPainter=/kg/BabyPainter,87 |
Klavisha=games/klavisha,69 |
Millioneer=/k/games/WHOWTBAM/whowtbam,114 |
StarTrek71=/k/games/sstartrek/SStarTrek |
Millioneer=/kg/WHOWTBAM/whowtbam,114 |
StarTrek71=/kg/sstartrek/SStarTrek |
[3D Shooter] |
Quake=/k/games/quake/sdlquake,56 |
DOOM1=/k/games/doom1/doom,43 |
Quake=/kg/quake/sdlquake,56 |
DOOM1=/kg/doom1/doom,43 |
[Logical] |
Clicks=games/clicks,18 |
52,7 → 52,7 |
Sudoku=games/sudoku,25 |
Mine=games/mine,14 |
Flood-It=games/flood-it,59 |
Knight=/k/games/knight,82 |
Knight=/kg/knight,82 |
15=games/15,34 |
Gomoku=games/gomoku,24 |
Reversi=games/reversi,103 |
61,4 → 61,4 |
Square=games/msquare,25 |
Memory=games/mblocks |
Lines=games/lines,116 |
Chess=/k/games/KosChess/KosChess,82 |
Chess=/kg/KosChess/KosChess,82 |
/data/rus/settings/games.ini |
---|
4,9 → 4,9 |
default_icon=35 |
[ §ã «ìë¥] |
2048=/k/games/2048,53 |
Fara=/k/games/fara/fara,42 |
MarbleMatch=/k/games/marblematch3 |
2048=/kg/2048,53 |
Fara=/kg/fara/fara,42 |
MarbleMatch=/kg/marblematch3 |
Tetris=games/tetris,47 |
Pipes=games/pipes,26 |
Snake=games/snake,32 |
15,36 → 15,36 |
Freecell=games/freecell,68 |
Pong=games/pong,101 |
Pong3=games/pong3,12 |
Arcanii=/k/games/arcanii,12 |
Arcanii=/kg/arcanii,12 |
[ઠ¤ë] |
LaserTank=/k/games/lasertank/lasertank,72 |
Heliothryx=/k/games/heliothryx,112 |
Dungeons=/k/games/dungeons/dungeons,94 |
JumpBump=/k/games/jumpbump/jumpbump.kex,102 |
Nsider=/k/games/nsider,109 |
TheBus=/k/games/the_bus/the_bus,86 |
Mun=/k/games/mun/mun |
LaserTank=/kg/lasertank/lasertank,72 |
Heliothryx=/kg/heliothryx,112 |
Dungeons=/kg/dungeons/dungeons,94 |
JumpBump=/kg/jumpbump/jumpbump.kex,102 |
Nsider=/kg/nsider,109 |
TheBus=/kg/the_bus/the_bus,86 |
Mun=/kg/mun/mun |
Kosilka=games/kosilka,23 |
Bomber=/k/games/bomber/bomber,97 |
Invaders=/k/games/invaders,111 |
Bomber=/kg/bomber/bomber,97 |
Invaders=/kg/invaders,111 |
Sea War=games/SW,66 |
Almaz=/k/games/almaz,81 |
Almaz=/kg/almaz,81 |
Tanks=games/tanks,67 |
RocketForces=games/rforces,110 |
Pig=/k/games/pig/pigex,120 |
Ataka=/k/games/ataka,35 |
Donkey=/k/games/donkey |
Loderunner=/k/games/LRL/LRL,41 |
21days=/k/games/21days,104 ;rus only |
BabyPainter=/k/games/BabyPainter,87 |
Pig=/kg/pig/pigex,120 |
Ataka=/kg/ataka,35 |
Donkey=/kg/donkey |
Loderunner=/kg/LRL/LRL,41 |
21days=/kg/21days,104 ;rus only |
BabyPainter=/kg/BabyPainter,87 |
Klavisha=games/klavisha,69 |
Millioneer=/k/games/WHOWTBAM/whowtbam,114 |
StarTrek71=/k/games/sstartrek/SStarTrek |
Millioneer=/kg/WHOWTBAM/whowtbam,114 |
StarTrek71=/kg/sstartrek/SStarTrek |
[3D ãâ¥àë] |
Quake=/k/games/quake/sdlquake,56 |
DOOM1=/k/games/doom1/doom,43 |
Quake=/kg/quake/sdlquake,56 |
DOOM1=/kg/doom1/doom,43 |
[®£¨ç¥áª¨¥] |
Clicks=games/clicks,18 |
52,7 → 52,7 |
Sudoku=games/sudoku,25 |
Mine=games/mine,14 |
Flood-It=games/flood-it,59 |
Knight=/k/games/knight,82 |
Knight=/kg/knight,82 |
15=games/15,34 |
Gomoku=games/gomoku,24 |
Reversi=games/reversi,103 |
61,4 → 61,4 |
Square=games/msquare,25 |
Memory=games/mblocks |
Lines=games/lines,116 |
Chess=/k/games/KosChess/KosChess,82 |
Chess=/kg/KosChess/KosChess,82 |
/programs/cmm/lib/keyboard.h |
---|
133,6 → 133,14 |
EAX = key_editbox; |
} |
inline fastcall byte GetKeyScancode() |
{ |
$mov eax,2 |
$int 0x40 |
$shr eax,16 |
return AL; |
} |
// ECX is a mode: 1 - scancodes, 0 - ascii |
inline fastcall SetKeyboardMode(ECX) |
{ |
/programs/cmm/lib/kolibri.h |
---|
646,10 → 646,10 |
//The initialization of the initial data before running |
void ______INIT______() |
{ |
skin_height = GetSkinHeight(); |
screen.width = GetScreenWidth()+1; |
screen.height = GetScreenHeight()+1; |
__generator = GetStartTime(); |
skin_height = @GetSkinHeight(); |
screen.width = @GetScreenWidth()+1; |
screen.height = @GetScreenHeight()+1; |
__generator = @GetStartTime(); |
mem_init(); |
main(); |
} |
/programs/cmm/lib/mem.h |
---|
5,14 → 5,11 |
#include "../lib/kolibri.h" |
#endif |
inline dword mem_init() |
inline fastcall void mem_init() |
{ |
$push ebx |
$mov eax, 68 |
$mov ebx, 11 |
$int 0x40 |
$pop ebx |
} |
:dword malloc(dword size) |
/programs/cmm/misc/mblocks.c |
---|
1,10 → 1,10 |
/* |
Memory Blocks for KolibriOS v1.11 |
Memory Blocks for KolibriOS v1.2 |
Leency&Veliant Edition |
2008-2019 |
2008-2020 |
*/ |
#define MEMSIZE 4096 * 15 |
#define MEMSIZE 1024 * 20 |
#include "..\lib\gui.h" |
#include "..\lib\random.h" |
11,29 → 11,32 |
#include "..\lib\obj\libio.h" |
#include "..\lib\obj\libimg.h" |
proc_info Form; |
#ifndef AUTOBUILD |
#include "lang.h--" |
#endif |
#define COLOR_CELL_BG 0xFFFfff |
#define COLOR_CELL_BORDER 0x94AECE |
#define BTN_CLOSED 0 |
#define BTN_PRESSED 1 |
#define BTN_OPEN 2 |
#define CELL_SIZE 43 |
#define PANEL_Y CELL_SIZE+4*6 + 4 |
#define PANEL_H 36 |
#define WIN_W CELL_SIZE+4*10 + 4 |
#define WIN_H PANEL_Y+PANEL_H |
#define strok 6 //cell count x |
#define stolbcov 10 //cell count y |
#define ROWS 6 |
#define COLS 10 |
#define COUNT ROWS*COLS |
#ifdef LANG_RUS |
#define LABEL_NEW_GAME "®¢ ï ¨£à (F2)"; |
#define LABEL_NEW_GAME "®¢ ï ¨£à "; |
#else |
#define LABEL_NEW_GAME "New game (F2)"; |
#define LABEL_NEW_GAME " New game"; |
#endif |
int bitstat[60], bitpict[60]; |
dword butonsx[60], butonsy[60]; |
int bitstat[COUNT], bitpict[COUNT]; |
dword butonsx[COUNT], butonsy[COUNT]; |
dword firstbit, secondbit; |
int count; |
45,45 → 48,45 |
load_dll(libimg, #libimg_init,1); |
skin.load("/sys/icons32.png"); |
skin.replace_color(0x00000000, COLOR_CELL_BG); |
skin.replace_color(0x00000000, 0xFFFfff); |
NewGame(); |
loop() switch(WaitEvent()) |
loop() switch(@WaitEvent()) |
{ |
case evKey: |
GetKeys(); |
if (key_scancode==60) NewGame(); |
if (@GetKeyScancode()==SCAN_CODE_F2) NewGame(); |
break; |
case evButton: |
id = GetButtonID(); |
if (id==1) ExitProcess(); |
id = @GetButtonID(); |
if (id==1) @ExitProcess(); |
else if (id==5) NewGame(); |
else { |
if (bitstat[id-100] == 0) |
id -= 100; |
if (bitstat[id] == BTN_CLOSED) |
{ |
if (firstbit <> 0x0BAD) |
if (firstbit != 0x0BAD) |
{ |
if (secondbit <> 0x0BAD) |
if (secondbit != 0x0BAD) |
{ |
if (bitpict[firstbit-100] == bitpict[secondbit-100]) |
bitstat[firstbit-100] = bitstat[secondbit-100] = 2; |
if (bitpict[firstbit] == bitpict[secondbit]) |
bitstat[firstbit] = bitstat[secondbit] = BTN_OPEN; |
else |
bitstat[firstbit-100] = bitstat[secondbit-100] = 0; |
ReDraw_Game_Button(firstbit - 100); |
ReDraw_Game_Button(secondbit - 100); |
bitstat[firstbit] = bitstat[secondbit] = BTN_CLOSED; |
ReDraw_Game_Button(firstbit); |
ReDraw_Game_Button(secondbit); |
secondbit = 0x0BAD; |
firstbit = id; |
bitstat[id-100] = 1; |
ReDraw_Game_Button(id - 100); |
bitstat[id] = BTN_PRESSED; |
ReDraw_Game_Button(id); |
count++; |
} |
else if (firstbit<>id) |
else if (firstbit != id) |
{ |
secondbit = id; |
bitstat[id-100] = 1; |
ReDraw_Game_Button(id - 100); |
bitstat[id] = BTN_PRESSED; |
ReDraw_Game_Button(id); |
count++; |
} |
} |
90,8 → 93,8 |
else |
{ |
firstbit = id; |
bitstat[id-100] = 1; |
ReDraw_Game_Button(id - 100); |
bitstat[id] = BTN_PRESSED; |
ReDraw_Game_Button(id); |
count++; |
} |
} |
101,12 → 104,10 |
case evReDraw: |
sc.get(); |
DefineAndDrawWindow(215,100,CELL_SIZE+4*10 + 4 + 9,PANEL_Y+4+PANEL_H+skin_height, |
DefineAndDrawWindow(215,100,WIN_W + 9,WIN_H+4+skin_height, |
0x34,0xC0C0C0,"Memory Blocks",0); |
GetProcessInfo(#Form, SelfInfo); |
Draw_Panel(); |
Draw_Game_Pole(); |
break; |
} |
} |
115,7 → 116,7 |
int off; |
int i; |
FOR (i = 0; i < 60; i++) |
FOR (i = 0; i < COUNT; i++) |
{ |
bitstat[i] = 0; |
bitpict[i] = 0; |
123,11 → 124,11 |
count = 0; |
firstbit = secondbit = 0x0BAD; |
FOR (i = 0; i < 30; i++) |
FOR (i = 0; i < COUNT/2; i++) |
{ |
do off = random(60); while (bitpict[off] != 0); |
do off = random(COUNT); while (bitpict[off] != 0); |
bitpict[off] = i; |
do off = random(60); while (bitpict[off] != 0); |
do off = random(COUNT); while (bitpict[off] != 0); |
bitpict[off] = i; |
} |
Draw_Game_Pole(); |
134,70 → 135,56 |
Draw_Panel(); |
} |
void ReDraw_Game_Button(int id) |
{ |
DefineButton(butonsx[id], butonsy[id], CELL_SIZE, CELL_SIZE, 100 + id + BT_HIDE, 0); |
switch (bitstat[id]) |
{ |
case 0: |
Draw_Block(butonsx[id], butonsy[id]); |
break; |
case 1: |
Draw_Pressed_Block(butonsx[id], butonsy[id]); |
img_draw stdcall(skin.image, butonsx[id]+6, butonsy[id]+6, 32, 32, 0, bitpict[id]*32); |
BREAK; |
case 2: |
Draw_Open_Block(butonsx[id], butonsy[id]); |
img_draw stdcall(skin.image, butonsx[id]+6, butonsy[id]+6, 32, 32, 0, bitpict[id]*32); |
BREAK; |
} |
} |
void Draw_Game_Pole() |
{ |
int i; |
byte j; |
for (j = 0; j < stolbcov; j++) for (i = 0; i < strok; i++) |
for (j = 0; j < COLS; j++) for (i = 0; i < ROWS; i++) |
{ |
butonsx[j*strok+i] = CELL_SIZE+4 * j + 4; //save coordinates to avoid |
butonsy[j*strok+i] = CELL_SIZE+4 * i + 4; //their recalculation after |
ReDraw_Game_Button(j*strok + i); |
butonsx[j*ROWS+i] = CELL_SIZE+4 * j + 4; //save coordinates to avoid |
butonsy[j*ROWS+i] = CELL_SIZE+4 * i + 4; //their recalculation after |
ReDraw_Game_Button(j*ROWS + i); |
} |
} |
void Draw_Block(dword x, y) |
void ReDraw_Game_Button(int id) |
{ |
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border |
DrawRectangle3D(x + 1, y + 1, CELL_SIZE-2, CELL_SIZE-2, 0xFFFFFF, 0xDEDEDE);//bump |
DrawBar(x + 2, y + 2, CELL_SIZE-3, CELL_SIZE-3, 0xBDC7D6);//background |
} |
void Draw_Open_Block(dword x, y) |
dword xx, yy; |
xx = butonsx[id]; |
yy = butonsy[id]; |
DefineButton(xx, yy, CELL_SIZE, CELL_SIZE, 100 + BT_HIDE + id, 0); |
DrawRectangle3D(xx, yy, CELL_SIZE, CELL_SIZE, 0x94AECE, 0x94AECE);//border |
switch (bitstat[id]) |
{ |
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border |
DrawBar(x + 1, y + 1, CELL_SIZE-1, CELL_SIZE-1, COLOR_CELL_BG);//background |
case BTN_CLOSED: |
DrawRectangle3D(xx + 1, yy + 1, CELL_SIZE-2, CELL_SIZE-2, 0xFFFFFF, 0xDEDEDE);//bump |
DrawBar(xx + 2, yy + 2, CELL_SIZE-3, CELL_SIZE-3, 0xBDC7D6);//background |
break; |
case BTN_PRESSED: |
DrawWideRectangle(xx + 1, yy + 1, CELL_SIZE-1, CELL_SIZE-1, 2, 0x94DB00);//border green |
DrawBar(xx + 3, yy + 3, CELL_SIZE-5, CELL_SIZE-5, 0xFFFfff);//background |
img_draw stdcall(skin.image, xx+6, yy+6, 32, 32, 0, bitpict[id]*32); |
BREAK; |
case BTN_OPEN: |
DrawBar(xx+1, yy+1, CELL_SIZE-1, CELL_SIZE-1, 0xFFFfff);//background |
img_draw stdcall(skin.image, xx+6, yy+6, 32, 32, 0, bitpict[id]*32); |
} |
void Draw_Pressed_Block(dword x, y) |
{ |
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border |
DrawWideRectangle(x + 1, y + 1, CELL_SIZE-1, CELL_SIZE-1, 2, 0x94DB00);//border green |
DrawBar(x + 3, y + 3, CELL_SIZE-5, CELL_SIZE-5, COLOR_CELL_BG);//background |
} |
void Draw_Panel() |
{ |
DrawBar(0, PANEL_Y, Form.cwidth, 1, sc.work_dark); |
DrawBar(0, PANEL_Y+1, Form.cwidth, 1, sc.work_light); |
DrawBar(0, PANEL_Y+2, Form.cwidth, PANEL_H-2, sc.work); |
DrawStandartCaptButton(9, PANEL_Y+5, 5, LABEL_NEW_GAME); |
DrawBar(0, PANEL_Y, WIN_W, 1, sc.work_dark); |
DrawBar(0, PANEL_Y+1, WIN_W, 1, sc.work_light); |
DrawBar(0, PANEL_Y+2, WIN_W, PANEL_H-2, sc.work); |
DefineButton(9, PANEL_Y+5, 102, 26, 5, sc.button); |
WriteText(20, PANEL_Y+11, 0x90, sc.button_text, LABEL_NEW_GAME); |
Draw_Count(); |
} |
void Draw_Count() |
{ |
DrawBar(Form.cwidth-32,PANEL_Y + 12,30,12,sc.work); |
WriteNumber(Form.cwidth-32, PANEL_Y + 12, 0x90, sc.work_text, 3, count); |
EDI = sc.work; //writing a number with bg |
WriteNumber(WIN_W-32, PANEL_Y + 12, 0xD0, sc.work_text, 3, count); |
} |
/programs/cmm/misc/pipet.c |
---|
10,17 → 10,16 |
// // |
//===================================================// |
dword pick_active = true; |
dword picked_color = 0; |
char picked_color_string[11]; |
dword picked_color; |
char picked_color_string[7]; |
#define FORM_W 167 |
#define FORM_H 60 |
#define COLOR_BLOCK_SIZE 42 |
#define COLOR_BLOCK_PADDING FORM_H - COLOR_BLOCK_SIZE / 2 |
#define COLOR_BLOCK_X FORM_W - COLOR_BLOCK_SIZE - COLOR_BLOCK_PADDING |
#define BUTTON_ID_CLOSE 1 |
#define BUTTON_ID_COPY 2 |
#define BUTTON_ID_PICK 3 |
#define PICKED_SIZE 42 |
#define PICKED_PADDING FORM_H - PICKED_SIZE / 2 |
#define PICKED_X FORM_W - PICKED_SIZE - PICKED_PADDING |
#define BUTTON_CLOSE 1 |
#define BUTTON_COPY 2 |
#define BUTTON_PICK 3 |
//===================================================// |
// // |
30,11 → 29,12 |
void main() |
{ |
bool pick_active = true; |
int btn; |
proc_info Form; |
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE); |
SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP); |
loop() switch(WaitEvent()) |
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE); |
@SetWindowLayerBehaviour(-1, ZPOS_ALWAYS_TOP); |
loop() switch(@WaitEvent()) |
{ |
case evMouse: |
mouse.get(); |
48,15 → 48,15 |
break; |
case evButton: |
btn = GetButtonID(); |
if (btn == BUTTON_ID_CLOSE) ExitProcess(); |
if (btn == BUTTON_ID_COPY) EventCopyHex(); |
if (btn == BUTTON_ID_PICK) pick_active = true; |
btn = @GetButtonID(); |
if (btn == BUTTON_CLOSE) ExitProcess(); |
if (btn == BUTTON_COPY) EventCopyHex(); |
if (btn == BUTTON_PICK) pick_active = true; |
break; |
case evKey: |
GetKeys(); |
if (key_scancode == SCAN_CODE_ESC) ExitProcess(); |
key_scancode = @GetKeyScancode(); |
if (key_scancode == SCAN_CODE_ESC) @ExitProcess(); |
if (key_scancode == SCAN_CODE_KEY_C) EventCopyHex(); |
break; |
74,8 → 74,8 |
DrawRectangle3D(1, 1, FORM_W-2, FORM_H-2, 0xCCCccc, 0x888888); |
DrawBar(2,2,FORM_W-3,FORM_H-3,0xFFFfff); |
DrawRectangle(COLOR_BLOCK_X-2, COLOR_BLOCK_PADDING-2, COLOR_BLOCK_SIZE+3, COLOR_BLOCK_SIZE+3, 0xCBC6C5); |
DefineHiddenButton(COLOR_BLOCK_X-1, COLOR_BLOCK_PADDING-1, COLOR_BLOCK_SIZE+1, COLOR_BLOCK_SIZE+1, BUTTON_ID_PICK); |
DrawRectangle(PICKED_X-2, PICKED_PADDING-2, PICKED_SIZE+3, PICKED_SIZE+3, 0xCBC6C5); |
DefineHiddenButton(PICKED_X-1, PICKED_PADDING-1, PICKED_SIZE+1, PICKED_SIZE+1, BUTTON_PICK); |
DrawCopyButton(67, 11, 35, 14); |
86,8 → 86,8 |
void str2col(dword buf, number) |
{ |
byte s; |
strlcpy(buf,"0x00000000",10); |
buf+=10; |
strlcpy(buf,"000000",6); |
buf+=6; |
while(number) |
{ |
$dec buf |
100,22 → 100,21 |
void EventUpdateWindowContent() |
{ |
//sprintf(#picked_color_string, "%A", picked_color); |
str2col(#picked_color_string, picked_color); |
rgb.DwordToRgb(picked_color); |
WriteTextWithBg(12,12, 0xD0, 0x000111, #picked_color_string+4, 0xFFFfff); |
WriteTextWithBg(12,12, 0xD0, 0x000111, #picked_color_string, 0xFFFfff); |
WriteNumber(12,33, 0xD0, 0xff0000, 3, rgb.r); |
WriteNumber(44,33, 0xD0, 0x008000, 3, rgb.g); |
WriteNumber(75,33, 0xD0, 0x0000ff, 3, rgb.b); |
DrawBar(COLOR_BLOCK_X, COLOR_BLOCK_PADDING, COLOR_BLOCK_SIZE, COLOR_BLOCK_SIZE, picked_color); |
DrawBar(PICKED_X, PICKED_PADDING, PICKED_SIZE, PICKED_SIZE, picked_color); |
} |
void DrawCopyButton(dword _x, _y, _w, _h) |
{ |
DefineHiddenButton(_x+1, _y+1, _w-2, _h-2, BUTTON_ID_COPY); |
DefineHiddenButton(_x+1, _y+1, _w-2, _h-2, BUTTON_COPY); |
DrawRectangle(_x, _y, _w, _h, 0x777777); |
WriteText(_x+6, _h-8/2 + _y, 0x80, 0x555555, "Copy"); |
} |
122,5 → 121,5 |
void EventCopyHex() |
{ |
Clipboard__CopyText(#picked_color_string+4); |
Clipboard__CopyText(#picked_color_string); |
} |
/programs/cmm/misc/software_widget.c |
---|
265,6 → 265,7 |
// |
// convert relative path to absolute "calc" => "/sys/calc" |
// convert short kolibrios path to full "/k/calc" => "/kolibrios/calc" |
// convert short kolibrios path to full "/kg/2048" => "/kolibrios/games/2048" |
// other copy => as is |
if (ESBYTE[app_path]!='/') { |
strcpy(#run_app_path, "/sys/"); |
273,6 → 274,10 |
strcpy(#run_app_path, "/kolibrios/"); |
app_path+=3; |
} |
else if (!strncmp(app_path, "/kg/",3)) { |
strcpy(#run_app_path, "/kolibrios/games/"); |
app_path+=4; |
} |
strcat(#run_app_path, app_path); |
// }end |