//11.03.12 - start! #ifndef AUTOBUILD ?include "lang.h--" #endif #define MEMSIZE 0xFE800 #include "..\lib\kolibri.h" #include "..\lib\mem.h" #include "..\lib\strings.h" #include "..\lib\dll.h" #include "..\lib\file_system.h" #include "..\lib\list_box.h" #include "..\lib\gui.h" #include "..\lib\obj\box_lib.h" #ifdef LANG_RUS ?define WINDOW_HEADER "Усправление темой" ?define T_SKINS " Тема окон" ?define T_WALLPAPERS " Обои рабочего стола" #else ?define WINDOW_HEADER "Appearance" ?define T_SKINS " Skins" ?define T_WALLPAPERS " Wallpappers" #endif unsigned char icons[]= FROM "icons.raw"; #define PANEL_H 30 #define SKINS_STANDART_PATH "/kolibrios/res/skins" #define WALP_STANDART_PATH "/kolibrios/res/wallpapers" llist list[2]; int active; enum { WALLPAPERS, SKINS }; char folder_path[4096]; char cur_file_path[4096]; char temp_filename[4096]; int files_mas[100]; dword buf; int cur; system_colors sc; proc_info Form; scroll_bar scroll1 = { 18,200,398, 44,18,0,115,15,0,0xeeeeee,0xD2CED0,0x555555,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; #include "other.h" //icons configurate, delete from list, delete from disk, make default //remember current void Open_Dir() { int j, filesnum; list[active].count = 0; free(buf); if (GetDir(#buf, #filesnum, #folder_path, DIRS_ONLYREAL)!=0) return; for (j=0; j list[active].visible) list_last = list[active].visible; else list_last = list[active].count; for (i=0; isc.work) { DrawBar(0, yyy, list[active].w, list[active].line_h, sc.work_button); if (i scroll1.position) { list[active].first = scroll1.position; Draw_List(); break; } mouse.get(); if (mouse.vert) { if (list[SKINS].active) && (list[SKINS].MouseScroll(mouse.vert)) Draw_List(); if (list[WALLPAPERS].active) && (list[WALLPAPERS].MouseScroll(mouse.vert)) Draw_List(); } if (mouse_clicked) { if (!mouse.lkm) && (list[SKINS].active) && (list[SKINS].ProcessMouse(mouse.x, mouse.y)) Apply(); if (!mouse.lkm) && (list[WALLPAPERS].active) && (list[WALLPAPERS].ProcessMouse(mouse.x, mouse.y)) Apply(); mouse_clicked=0; } if (mouse.lkm) && (list[SKINS].MouseOver(mouse.x, mouse.y)) mouse_clicked=1; break; case evButton: id=GetButtonID(); if (id==1) ExitProcess(); if (id==2) TabClick(WALLPAPERS); if (id==3) TabClick(SKINS); break; case evKey: key = GetKey(); if (list[SKINS].active) && (list[SKINS].ProcessKey(key)) Apply(); if (list[WALLPAPERS].active) && (list[WALLPAPERS].ProcessKey(key)) Apply(); IF (key==013) OpenFile(); if (key==9) if (list[SKINS].active) TabClick(WALLPAPERS); else TabClick(SKINS); IF (key==182) //Del { DeleteFile(#cur_file_path); Open_Dir(); Apply(); } break; case evReDraw: sc.get(); DefineAndDrawWindow(30,80,list[active].w+9,list[active].h+4+GetSkinHeight(),0x73,0xE4DFE1,WINDOW_HEADER,0); GetProcessInfo(#Form, SelfInfo); IF (Form.status_window>=2) break; DrawTabs(); Draw_List(); } } } #define BT_PADDING 16 void DrawTab(dword x,y, but_id, is_active, text) { dword col_bg, col_text; dword w=strlen(text)*6+BT_PADDING, h=21; if (is_active) { col_bg=sc.work_button; col_text=sc.work_button_text; } else { col_bg=sc.work; col_text=sc.work_text; } DrawRectangle(x,y, w,h, sc.work_graph); DrawCaptButton(x+1,y+1, w-2,h-1, but_id, col_bg, col_text, text); _PutImage(x+6,y+4, 16,15, but_id-2*16*15*3+#icons); } void DrawTabs() { DrawBar(0,0, Form.cwidth, PANEL_H-1, sc.work); DrawTab(10,7, 2, list[WALLPAPERS].active, T_WALLPAPERS); DrawTab(strlen(T_WALLPAPERS)*6+BT_PADDING+21,7, 3, list[SKINS].active, T_SKINS); DrawBar(0,PANEL_H-2, Form.cwidth, 1, sc.work_graph); DrawBar(0,PANEL_H-1, Form.cwidth, 1, 0xEEEeee); } void TabClick(int N) { if (N==SKINS) { list[SKINS].active = 1; list[WALLPAPERS].active = 0; } if (N==WALLPAPERS) { list[SKINS].active = 0; list[WALLPAPERS].active = 1; } active = N; GetFiles(); DrawTabs(); Draw_List(); } void DrawScroller() { scroll1.bckg_col = 0xBBBbbb; scroll1.frnt_col = sc.work; scroll1.line_col = sc.work_graph; scroll1.max_area = list[active].count; scroll1.cur_area = list[active].visible; scroll1.position = list[active].first; scroll1.all_redraw=1; scroll1.start_x = list[active].x + list[active].w; scroll1.start_y = list[active].y-2; scroll1.size_y = list[active].h+2; scrollbar_v_draw(#scroll1); } stop: