source: dev/trunk/ab5.0/abdev/ProjectEditor/DesignTheme.cpp@ 475

Last change on this file since 475 was 475, checked in by dai_9181, 16 years ago

構成管理を変更中・・・(いったんコミット)

File size: 4.3 KB
RevLine 
[475]1#include "stdafx.h"
2
[3]3#include "common.h"
4
5
6CDBTheme *pobj_DBTheme;
7
8
9CTheme::CTheme(char *path,char *name){
10 bActive=0;
11 lstrcpy(m_name,name);
12 if(path==0) return;
13
14 buffer=ReadBuffer(path);
15
16
17 //通常の文字色
18 GetRGBValue("rgbDefault",&TextColorInfo.rgbDefault);
19
20 //コメント文字色
21 GetRGBValue("rgbComment",&TextColorInfo.rgbComment);
22
23 //特殊ステートメント
24 GetRGBValue("rgbStatement",&TextColorInfo.rgbStatement);
25
26 //文字列色
27 GetRGBValue("rgbString",&TextColorInfo.rgbString);
28
29 //背景色(カーソル行)
30 GetRGBValue("rgbCursorBack",&TextColorInfo.rgbCursorBack);
31
32 //背景色(一般)
33 GetRGBValue("rgbBackground",&TextColorInfo.rgbBackground);
34
35 //背景画像
36 if(!GetStringValue("BackgroundImagePath",szBackgroundImagePath)) szBackgroundImagePath[0]=0;
37
38 HeapDefaultFree(buffer);
39}
40CTheme::CTheme(){
41 CTheme(0,THEMENAME_USER);
42}
43CTheme::~CTheme(){
44}
45
46void CTheme::save(){
47 buffer=(char *)HeapAlloc(hHeap,0,65536);
48 buffer[0]=0;
49
50
51 //通常の文字色
52 SetRGBValue("rgbDefault",TextColorInfo.rgbDefault);
53
54 //コメント文字色
55 SetRGBValue("rgbComment",TextColorInfo.rgbComment);
56
57 //特殊ステートメント
58 SetRGBValue("rgbStatement",TextColorInfo.rgbStatement);
59
60 //文字列色
61 SetRGBValue("rgbString",TextColorInfo.rgbString);
62
63 //背景色(カーソル行)
64 SetRGBValue("rgbCursorBack",TextColorInfo.rgbCursorBack);
65
66 //背景色(一般)
67 SetRGBValue("rgbBackground",TextColorInfo.rgbBackground);
68
69 //背景画像
70 SetStringValue("BackgroundImagePath",szBackgroundImagePath);
71
72 char path[MAX_PATH];
73 sprintf(path,"%sTheme\\%s",pj_editor_Dir,m_name);
[22]74 if(!IsExistFile(path)){
[3]75 CreateDirectory(path,NULL);
76 }
77
78 sprintf(path,"%sTheme\\%s\\design.ini",pj_editor_Dir,m_name);
79 WriteBuffer(path,buffer,lstrlen(buffer));
80
81 HeapDefaultFree(buffer);
82}
83
84
85CDBTheme::CDBTheme(){
86 hBackBmp=0;
87
88 iNum=0;
89 ppobj_Theme=(CTheme **)HeapAlloc(hHeap,0,1);
90
91 char temporary[MAX_PATH];
92 sprintf(temporary,"%sTheme\\*",pj_editor_Dir);
93
94 HANDLE hFind;
95 WIN32_FIND_DATA wfd;
96 hFind=FindFirstFile(temporary,&wfd);
97 if(hFind!=INVALID_HANDLE_VALUE){
98 do{
99 if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
100 if(!(lstrcmp(wfd.cFileName,".")==0||lstrcmp(wfd.cFileName,"..")==0)){
101 //ディレクトリのとき
102 sprintf(temporary,"%sTheme\\%s\\design.ini",pj_editor_Dir,wfd.cFileName);
[22]103 if(IsExistFile(temporary)){
[3]104 add(temporary,wfd.cFileName);
105 }
106 }
107 }
108 else{
109 //ファイルのとき
110 //無視
111 }
112 }while(FindNextFile(hFind,&wfd));
113 }
114}
115CDBTheme::~CDBTheme(){
116 int i;
117 for(i=0;i<iNum;i++){
118 delete ppobj_Theme[i];
119 }
120 HeapDefaultFree(ppobj_Theme);
121
122 unlock();
123}
124
125CTheme *CDBTheme::dupli_check(char *name){
126 //重複チェック
127 int i;
128 for(i=0;i<iNum;i++){
129 if(lstrcmpi(ppobj_Theme[i]->m_name,name)==0){
130 return ppobj_Theme[i];
131 }
132 }
133 return 0;
134}
135
136CTheme *CDBTheme::add(char *path,char *name){
137 ppobj_Theme=(CTheme **)HeapReAlloc(hHeap,0,ppobj_Theme,(iNum+1)*sizeof(CTheme *));
138 ppobj_Theme[iNum]=new CTheme(path,name);
139 iNum++;
140
141 return ppobj_Theme[iNum-1];
142}
143void CDBTheme::ResetTheme_ToComboBox(HWND hCombo){
144 int i;
145 for(i=0;i<iNum;i++){
146 SendMessage(hCombo,CB_ADDSTRING,0,(LPARAM)ppobj_Theme[i]->m_name);
147 }
148
149 //選択する
150 for(i=0;i<iNum;i++){
151 if(lstrcmp(ppobj_Theme[i]->m_name,pobj_nv->szActiveTheme)==0){
152 i=SendMessage(hCombo,CB_FINDSTRINGEXACT,0,(LPARAM)ppobj_Theme[i]->m_name);
153 SendMessage(hCombo,CB_SETCURSEL,i,0);
154 break;
155 }
156 }
157}
158CTheme *CDBTheme::GetActiveTheme(){
159 int i;
160 for(i=0;i<iNum;i++){
161 if(lstrcmp(ppobj_Theme[i]->m_name,pobj_nv->szActiveTheme)==0){
162 return ppobj_Theme[i];
163 }
164 }
165 return 0;
166}
167
168void CDBTheme::lock(void){
169 CTheme *pobj_Theme;
170 pobj_Theme=GetActiveTheme();
171
172 if(pobj_Theme->szBackgroundImagePath[0]=='\0'){
173 hBackBmp=0;
174 return;
175 }
176
177 char szThemeDir[MAX_PATH];
178 sprintf(szThemeDir,"%sTheme\\%s\\",pj_editor_Dir,pobj_Theme->m_name);
179
180 char temporary[MAX_PATH];
181 lstrcpy(temporary,pobj_Theme->szBackgroundImagePath);
182 GetFullPath(temporary,szThemeDir);
183
184 hBackBmp=(HBITMAP)LoadImage(0,temporary,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
185
186 BITMAP Bitmap;
187 GetObject(hBackBmp,sizeof(BITMAP),&Bitmap);
188 sizeBackBmp.cx=Bitmap.bmWidth;
189 sizeBackBmp.cy=Bitmap.bmHeight;
190}
191void CDBTheme::unlock(void){
192 if(hBackBmp) DeleteObject(hBackBmp);
193}
Note: See TracBrowser for help on using the repository browser.