File: wmen_dialog.c

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (123 lines) | stat: -rw-r--r-- 2,892 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* Copyright ENPC */
/***********************************************
 * wmdialog.c / Scilab
 *   Jean-Philippe Chancelier 
 *   Bugs and mail : Scilab@inria.fr 
 ***********************************************/

#include "wmen_scilab.h"

#ifdef WIN32
#include "../os_specific/win_mem_alloc.h" /* MALLOC */
#else
#include "../os_specific/sci_mem_alloc.h" /* MALLOC */
#endif

extern SciDialog ScilabDialog;

/****************************************************
 * Event handler function for the line style window 
 * uses GetWindowLong(hwnd, 4) and SetWindowLong
 ****************************************************/

EXPORT int CALLBACK SciDialogDlgProc(HWND hdlg, UINT wmsg, WPARAM wparam, LPARAM lparam)
{
  HWND dlgw;
  switch (wmsg) {
  case WM_INITDIALOG:
    if ( SciMenusRect.left != -1) 
	{
		SetWindowPos(hdlg,HWND_TOP,SciMenusRect.left,SciMenusRect.top,0,0,SWP_NOSIZE | SWP_NOZORDER );
	}
    SetDlgItemText(hdlg, DI_TIT, ScilabDialog.description);
		if (strcmp(ScilabDialog.init,"\r\n")!=0) SetDlgItemText(hdlg, DI_TEXT,ScilabDialog.init);
    SetDlgItemText(hdlg, IDOK,ScilabDialog.pButName[0]);
    SetDlgItemText(hdlg, IDCANCEL,ScilabDialog.pButName[1]);
    return TRUE;
  case WM_COMMAND:
    switch (LOWORD(wparam)) {
    case IDOK:
      dlgw = GetDlgItem(hdlg, DI_TEXT);
      if ( dlgw != NULL) 
	{
	  int l;
	  l= GetWindowTextLength(dlgw);
	  /* sciprint("string of size %d \n",l); */
	  if ( (dialog_str =  MALLOC( (l+2)*(sizeof(char)))) == NULL) 
	    {
	      Scistring("Malloc : No more place");
	      EndDialog(hdlg, IDCANCEL);
	      return TRUE;
	    }
	  GetDlgItemText(hdlg, DI_TEXT, dialog_str, l+1);
	  /* sciprint("str [%s]\n",dialog_str); */
	  if (dialog_str[strlen(dialog_str)-1] == '\n') 
	    dialog_str[strlen(dialog_str)-1] = '\0' ;
	  GetWindowRect(hdlg,&SciMenusRect);
	  EndDialog(hdlg, IDOK);
	  return TRUE;
	}
      else 
	{
	  EndDialog(hdlg, IDCANCEL);
	  return TRUE;
	}
    case IDCANCEL:
      GetWindowRect(hdlg,&SciMenusRect);
      EndDialog(hdlg, IDCANCEL);
      return TRUE;
    }
    break;
  }
  return FALSE;
}


/****************************************************
 * Activate the Line Style Dialog box window 
 * GetWindowLong(hwnd, 4) must be available for use 
 ****************************************************/

int  DialogWindow()
{
  char *c=NULL;
  int i=0;
  int lenStr=0;
  HWND hwndOwner ;
  DLGPROC lpfnSciDialogDlgProc ;

  lpfnSciDialogDlgProc = (DLGPROC) MyGetProcAddress("SciDialogDlgProc", SciDialogDlgProc);

  c=ScilabDialog.description;
  
  while ( *c != '\0')
  {
	if ( *c == '\n' )
		{
			i++;
			if (lenStr>40)
			{
				i++;
				
			}
			lenStr=0;
		}
	c++;
	lenStr++;
  }

  if ( i >= 3 ) 
  {
	  c="SciBigDialogDlgBox";
  }
  else 
  {
	  c="SciDialogDlgBox";
  }

  hwndOwner=NULL;
  if (DialogBox(hdllInstance,c,hwndOwner,lpfnSciDialogDlgProc)  == IDOK) return(TRUE);
  else return(FALSE);
}