Exemplo n.º 1
0
ROWCELL *cppInitModernRow(ROWCELL	** tabAccess)
{
	int fsize;
	int seq=0;
  ROWCELL * RowRoot=NULL; 
	FILE * hFile;
	int i=0;
	if (!DBGetContactSettingByte(NULL,"ModernData","UseAdvancedRowLayout",0)) return NULL;
  tmplbuf=NULL;
    if (DBGetContactSettingByte(NULL,"ModernData","UseAdvancedRowLayout",0)==1)
	tmplbuf=DBGetStringA(NULL,"ModernData","RowTemplate");
  if (tmplbuf) 
  {
      rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess);
      mir_free(tmplbuf);
      return RowRoot;
  }
  if (hFile = fopen("template.txt", "rb"))
  {  
	  fsize = _filelength(_fileno(hFile));
	  tmplbuf = (char*)malloc(fsize+1);
	  ZeroMemory(tmplbuf, fsize+1);
 
	  for (i=0; i<fsize; i++) tmplbuf[i] = getc(hFile);
		  tmplbuf[i] = 0;
		  i = 0;     
		  rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess);
      DBWriteContactSettingString(NULL,"ModernData","RowTemplate",tmplbuf);
      free(tmplbuf);
		  fclose(hFile);
		  return RowRoot;
  }
  return NULL;

}
Exemplo n.º 2
0
// rowParse
// Ищет в шаблоне теги <contact>, <tr> и <tc>, и добавляет соответствующие узлы
// в дерево описания контакта
// cell - поле child или next родительского контейнера
// parent - указатель на родительский контейнер
// tbuf - указатель на буфер содержащий текст шаблона
// hbuf - указатель буфера
// sequence - нужно задавать 0, это очередность нахождения
//
extern "C" BOOL rowParse(ROWCELL* &cell, ROWCELL* parent, char *tbuf, int &hbuf, int &sequence, ROWCELL* *RowTabAccess )
{
	char * word;
	word = rowParserGetNextWord(tbuf, hbuf);
	int cont;
		
	if      (!_strnicmp(word, "<tr",   strlen(word)) ||!_strnicmp(word, "<tr>",   strlen(word))) cont = TC_ROW; 
	else if (!_strnicmp(word, "<tc",   strlen(word)) ||!_strnicmp(word, "<tc>",   strlen(word))) cont = TC_COL; 
	else if (!_strnicmp(word, "/>",     strlen(word))||
			 !_strnicmp(word, "</tr>",  strlen(word))||
			 !_strnicmp(word, "</tc>",  strlen(word))) return TRUE;
	else return FALSE;
	
	rowAddCell(cell, cont);
	rowParserGetParam(cell, tbuf, hbuf);
	if (cell->type != 0 && cell->type !=TC_SPACE && cell->type !=TC_FIXED) 
		RowTabAccess[sequence++] = cell;
	
	if (!rowParse(cell->child, cell, tbuf, hbuf, sequence,RowTabAccess)) 
		return FALSE;

	if (!parent)
	{
		RowTabAccess[sequence] = NULL;
		return TRUE;
	}
	
	if (!rowParse(cell->next, parent, tbuf, hbuf, sequence,RowTabAccess))
			return FALSE;
		
	parent->sizing |= cell->sizing;
  parent->hasfixed|=cell->hasfixed;
	return TRUE;
}
Exemplo n.º 3
0
ROWCELL *cppInitModernRow(ROWCELL	** tabAccess)
{
	int fsize;
	int seq = 0;
	ROWCELL * RowRoot = NULL;
	FILE * hFile;
	int i=0;
	if (!db_get_b(NULL,"ModernData","UseAdvancedRowLayout",SETTING_ROW_ADVANCEDLAYOUT_DEFAULT)) return NULL;
	tmplbuf = NULL;
	if ( db_get_b(NULL,"ModernData","UseAdvancedRowLayout",SETTING_ROW_ADVANCEDLAYOUT_DEFAULT) == 1)
		tmplbuf = db_get_sa(NULL,"ModernData","RowTemplate");
	if (tmplbuf) {
		rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess);
		mir_free(tmplbuf);
		return RowRoot;
	}
	if (hFile = fopen("template.txt", "rb"))
	{
		fsize = _filelength(_fileno(hFile));
		tmplbuf = (char*)malloc(fsize+1);
		ZeroMemory(tmplbuf, fsize+1);

		for (i=0; i < fsize; i++) tmplbuf[i] = getc(hFile);
		tmplbuf[i] = 0;
		i=0;
		rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess);
		db_set_s(NULL,"ModernData","RowTemplate",tmplbuf);
		free(tmplbuf);
		fclose(hFile);
		return RowRoot;
	}
	return NULL;

}
Exemplo n.º 4
0
INT_PTR CALLBACK DlgTmplEditorOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg) {
	case WM_INITDIALOG:
	{
		int hbuf = 0, seq = 0;
		HWND htree = GetDlgItem(hwndDlg, IDC_ROWTREE);

		TranslateDialogDefault(hwndDlg);
		rowOptTmplStr = db_get_sa(NULL, "ModernData", "RowTemplate");
		if (!rowOptTmplStr)
			rowOptTmplStr = mir_strdup("<TR />");

		SendDlgItemMessage(hwndDlg, IDC_SPINCONTWIDTH, UDM_SETRANGE, 0, MAKELONG(999, 0));
		SendDlgItemMessage(hwndDlg, IDC_SPINCONTHEIGHT, UDM_SETRANGE, 0, MAKELONG(999, 0));

		int i, item;

		for (i = 0; i < _countof(types); i++) {
			item = SendDlgItemMessage(hwndDlg, IDC_CONTTYPE, CB_ADDSTRING, 0, (LPARAM)TranslateTS(types[i]));
			SendDlgItemMessage(hwndDlg, IDC_CONTTYPE, CB_SETITEMDATA, item, 0);
		}
		SendDlgItemMessage(hwndDlg, IDC_CONTTYPE, CB_SETCURSEL, 0, 0);

		TCHAR *h_alignment[] = { _T("left"), _T("hCenter"), _T("right") };
		for (i = 0; i < _countof(h_alignment); i++) {
			item = SendDlgItemMessage(hwndDlg, IDC_HALIGN, CB_ADDSTRING, 0, (LPARAM)TranslateTS(h_alignment[i]));
			SendDlgItemMessage(hwndDlg, IDC_HALIGN, CB_SETITEMDATA, item, 0);
		}
		SendDlgItemMessage(hwndDlg, IDC_HALIGN, CB_SETCURSEL, 0, 0);

		TCHAR *v_alignment[] = { _T("top"), _T("vCenter"), _T("bottom") };
		for (i = 0; i < _countof(v_alignment); i++) {
			item = SendDlgItemMessage(hwndDlg, IDC_VALIGN, CB_ADDSTRING, 0, (LPARAM)TranslateTS(v_alignment[i]));
			SendDlgItemMessage(hwndDlg, IDC_VALIGN, CB_SETITEMDATA, item, 0);
		}
		SendDlgItemMessage(hwndDlg, IDC_VALIGN, CB_SETCURSEL, 0, 0);

		rowDeleteTree(rowOptTmplRoot);
		rowOptTmplRoot = NULL;
		rowParse(rowOptTmplRoot, rowOptTmplRoot, rowOptTmplStr, hbuf, seq, rowOptTA);
		seq = 0;
		memset(rowOptTA, 0, sizeof(rowOptTA));
		rowOptBuildTA(rowOptTmplRoot, (pROWCELL*)&rowOptTA, &seq);

		rowOptFillRowTree(htree);
		RefreshTree(hwndDlg, NULL);
		TreeView_SelectItem(GetDlgItem(hwndDlg, IDC_ROWTREE), TreeView_GetRoot(GetDlgItem(hwndDlg, IDC_ROWTREE)));
		rowOptShowSettings(hwndDlg);
	}
	return TRUE;

	case WM_COMMAND:
	{
		HWND htree = GetDlgItem(hwndDlg, IDC_ROWTREE);
		pROWCELL  cell;
		TVITEM    tvi = { 0 };
		HTREEITEM hti = TreeView_GetSelection(htree);


		tvi.hItem = hti;
		tvi.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
		TreeView_GetItem(htree, &tvi);
		cell = (pROWCELL)tvi.lParam;

		switch (LOWORD(wParam)) {
		case IDC_CONTTYPE:
			if (HIWORD(wParam) == CBN_SELENDOK) {
				int index = SendDlgItemMessage(hwndDlg, IDC_CONTTYPE, CB_GETCURSEL, 0, 0);
				cell->type = index;
				RefreshTree(hwndDlg, NULL);
			}

		case IDC_VALIGN:
			if (HIWORD(wParam) == CBN_SELENDOK) {
				switch (SendDlgItemMessage(hwndDlg, IDC_VALIGN, CB_GETCURSEL, 0, 0)) {
				case 0:
					cell->valign = TC_TOP;
					break;
				case 1:
					cell->valign = TC_VCENTER;
					break;
				case 2:
					cell->valign = TC_BOTTOM;
					break;
				}
				RefreshTree(hwndDlg, NULL);
			}

		case IDC_HALIGN:
			if (HIWORD(wParam) == CBN_SELENDOK) {
				switch (SendDlgItemMessage(hwndDlg, IDC_HALIGN, CB_GETCURSEL, 0, 0)) {
				case 0:
					cell->halign = TC_LEFT;
					break;
				case 1:
					cell->halign = TC_HCENTER;
					break;
				case 2:
					cell->halign = TC_RIGHT;
					break;
				}
				RefreshTree(hwndDlg, NULL);
			}
		}

		if (HIWORD(wParam) == BN_CLICKED) {
			if (lParam == (LPARAM)GetDlgItem(hwndDlg, IDC_ADDCONTAINER))
				// Adding new container
			{
				rowOptAddContainer(htree, hti);
			}
			else if (lParam == (LPARAM)GetDlgItem(hwndDlg, IDC_DELCONTAINER))
				// Deleting container
			{
				rowOptDelContainer(htree, hti);
			}
			else if (lParam == (LPARAM)GetDlgItem(hwndDlg, IDC_CONTUP))
				// Moving container to up
			{
				RedrawWindow(htree, &da, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_ALLCHILDREN);
			}
			RefreshTree(hwndDlg, NULL);
			RedrawWindow(GetParent(hwndDlg), NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_ALLCHILDREN);
		}
		return TRUE;
	}

	case WM_NOTIFY:
		switch (((LPNMHDR)lParam)->idFrom) {
		case IDC_ROWTREE:
			if (((LPNMHDR)lParam)->code == NM_SETCURSOR)
				rowOptShowSettings(hwndDlg);
			if (((LPNMHDR)lParam)->code == NM_CLICK)
				RedrawWindow(hwndDlg, &da, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW);
			break;

		case 0: // Apply or Ok button is pressed
			return FALSE; // Temporary
			break;
		}
		return TRUE;

	case WM_PAINT:
		if (rowOptTmplRoot) {
			int i = 0;

			// Drawning row template at properties page
			PAINTSTRUCT ps;
			HDC hdc = BeginPaint(hwndDlg, &ps);

			TVITEM curItem;
			curItem.hItem = TreeView_GetSelection(GetDlgItem(hwndDlg, IDC_ROWTREE));
			curItem.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
			TreeView_GetItem(GetDlgItem(hwndDlg, IDC_ROWTREE), &curItem);

			while (rowOptTA[i]) {
				switch (rowOptTA[i]->type) {
				case TC_AVATAR:
					rowOptTA[i]->w = 25;
					rowOptTA[i]->h = 30;
					break;

				case TC_STATUS:
				case TC_EXTRA1:
				case TC_EXTRA2:
				case TC_EXTRA3:
				case TC_EXTRA4:
				case TC_EXTRA5:
				case TC_EXTRA6:
				case TC_EXTRA7:
				case TC_EXTRA8:
				case TC_EXTRA9:
					rowOptTA[i]->w = 16;
					rowOptTA[i]->h = 16;
					break;

				case TC_EXTRA:
					rowOptTA[i]->w = 112;
					rowOptTA[i]->h = 16;
					break;

				case TC_TEXT1:
				case TC_TEXT2:
				case TC_TEXT3:
					rowOptTA[i]->w = 200;
					rowOptTA[i]->h = 16;
					break;

				case TC_TIME:
					rowOptTA[i]->w = 30;
					rowOptTA[i]->h = 10;
				default:
					rowOptTA[i]->w = 0;
					rowOptTA[i]->h = 0;
				}
				i++;
			}

			rowSizeWithReposition(rowOptTmplRoot, da.right - da.left);

			i = -1;
			while (rowOptTA[++i]) {

				switch (rowOptTA[i]->type) {
				case TC_SPACE:
				case TC_FIXED:
				case 0:
					//if (rowOptTA[i] != (pROWCELL)curItem.lParam)
					continue;
				}
				Rectangle(hdc,
					rowOptTA[i]->r.left + da.left,
					rowOptTA[i]->r.top + da.top,
					rowOptTA[i]->r.right + da.left,
					rowOptTA[i]->r.bottom + da.top);
			}

			EndPaint(hwndDlg, &ps);
			return FALSE;
		}

	}
	return FALSE;
}