The R Project SVN R

Rev

Rev 26123 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 26123 Rev 27143
Line 114... Line 114...
114
e		9			0
114
e		9			0
115
 
115
 
116
 
116
 
117
*/
117
*/
118
 
118
 
119
int		NumOfRoots = 0;
119
UInt32		NumOfRoots = 0;
120
int		*RootItems = NULL; 
120
DataBrowserItemID	*RootItems = NULL; 
121
int		**SubItemsID;
121
int		**SubItemsID;
122
int		CurrentID = 0;
122
int		CurrentID = 0;
123
void	InitContainers(void);
123
void	InitContainers(void);
124
void	SetSubItems(int i);
124
void	SetSubItems(int i);
125
 
125
 
Line 139... Line 139...
139
/* The following are local copies of the above */
139
/* The following are local copies of the above */
140
 
140
 
141
int *IDNum;              /* id          */
141
int *IDNum;              /* id          */
142
Rboolean *IsRoot;        /* isroot      */
142
Rboolean *IsRoot;        /* isroot      */
143
Rboolean *IsContainer;   /* iscontainer */
143
Rboolean *IsContainer;   /* iscontainer */
144
int *NumberOfItems;      /* numofit     */
144
UInt32 *NumberOfItems;      /* numofit     */
145
int *ParentID;           /* parid       */
145
int *ParentID;           /* parid       */
146
char **Names;            /* name        */
146
char **Names;            /* name        */
147
char **Types;            /* type        */
147
char **Types;            /* type        */
148
char **Sizes;            /* objsize     */
148
char **Sizes;            /* objsize     */
149
int NumOfID = 0;         /* length of the vectors    */
149
int NumOfID = 0;         /* length of the vectors    */
Line 226... Line 226...
226
  Sizes = (char**)malloc(NumOfID * sizeof(char*));
226
  Sizes = (char**)malloc(NumOfID * sizeof(char*));
227
  Types = (char**)malloc(NumOfID * sizeof(char*));
227
  Types = (char**)malloc(NumOfID * sizeof(char*));
228
 
228
 
229
  IDNum = (int*)malloc(NumOfID * sizeof(int));
229
  IDNum = (int*)malloc(NumOfID * sizeof(int));
230
  IsRoot = (Rboolean*)malloc(NumOfID * sizeof(Rboolean));
230
  IsRoot = (Rboolean*)malloc(NumOfID * sizeof(Rboolean));
231
  IsContainer = (Rboolean*)malloc(NumOfID * sizeof(Rboolean));
231
  IsContainer = (Rboolean *)malloc(NumOfID * sizeof(Rboolean));
232
  NumberOfItems = (int*)malloc(NumOfID * sizeof(int));
232
  NumberOfItems = (UInt32 *)malloc(NumOfID * sizeof(UInt32));
233
  ParentID = (int*)malloc(NumOfID * sizeof(int));
233
  ParentID = (int*)malloc(NumOfID * sizeof(int));
234
   
234
   
235
  for(i=0; i<NumOfID; i++){
235
  for(i=0; i<NumOfID; i++){
236
 
236
 
237
   if (!isNull(STRING_ELT(name, i)))
237
   if (!isNull(STRING_ELT(name, i)))
Line 247... Line 247...
247
   if (!isNull(STRING_ELT(objsize, i)))
247
   if (!isNull(STRING_ELT(objsize, i)))
248
	    Sizes[i] = CHAR(STRING_ELT(objsize, i));
248
	    Sizes[i] = CHAR(STRING_ELT(objsize, i));
249
	else
249
	else
250
	    Sizes[i] = CHAR(R_BlankString);  
250
	    Sizes[i] = CHAR(R_BlankString);  
251
 
251
 
252
	IDNum[i] = INTEGER(id)[i];
252
    IDNum[i] = INTEGER(id)[i];
253
    NumberOfItems[i] = INTEGER(numofit)[i];
253
    NumberOfItems[i] = INTEGER(numofit)[i];
-
 
254
    if(INTEGER(parid)[i] == -1)
-
 
255
     ParentID[i] = kDataBrowserNoItem;
-
 
256
    else 
254
    ParentID[i] = INTEGER(parid)[i]; 
257
    ParentID[i] = INTEGER(parid)[i]; 
255
    IsRoot[i] = LOGICAL(isroot)[i];
258
    IsRoot[i] = LOGICAL(isroot)[i];
256
    IsContainer[i] = LOGICAL(iscont)[i];
259
    IsContainer[i] = LOGICAL(iscont)[i];
-
 
260
   
257
  }
261
  }
258
 
262
 
259
  OpenDataBrowser();
263
  OpenDataBrowser();
260
 
264
 
261
  vmaxset(vm);
265
  vmaxset(vm);
Line 272... Line 276...
272
	for(i=0;i<NumOfID; i++)
276
	for(i=0;i<NumOfID; i++)
273
	 if(IsRoot[i])
277
	 if(IsRoot[i])
274
	  NumOfRoots++;
278
	  NumOfRoots++;
275
	if(RootItems) free(RootItems);
279
	if(RootItems) free(RootItems);
276
	  
280
	  
277
	RootItems = malloc(sizeof(int)*NumOfRoots);
281
	RootItems = malloc(sizeof(DataBrowserItemID)*NumOfRoots);
278
	SubItemsID = malloc(NumOfID * sizeof(int*));
282
	SubItemsID = malloc(NumOfID * sizeof(int*));
279
 
283
 
280
	for(i = 0; i < NumOfID; i++){
284
	for(i = 0; i < NumOfID; i++){
281
     if(IsRoot[i]) { RootItems[k] = IDNum[i]; k++;}     
285
     if(IsRoot[i]) { RootItems[k] = IDNum[i]; k++;}     
282
     if(IsContainer[i]){
286
     if(IsContainer[i]){
Line 286... Line 290...
286
        if(ParentID[j] == IDNum[i]){
290
        if(ParentID[j] == IDNum[i]){
287
          SubItemsID[i][l] = IDNum[j];
291
          SubItemsID[i][l] = IDNum[j];
288
          l++;
292
          l++;
289
         }
293
         }
290
       }
294
       }
291
     }   /* if(IsContainer[i]) */
295
     } else {   /* if(IsContainer[i]) */
-
 
296
      SubItemsID[i] = malloc(sizeof(int));
-
 
297
      SubItemsID[i][0] = 0;
-
 
298
     }
292
	} /* for */
299
	} /* for */
293
 
300
 
294
}
301
}
295
 
302
 
296
 
303
 
Line 340... Line 347...
340
     InstallDataBrowserCallbacks(WSpaceBrowser);
347
     InstallDataBrowserCallbacks(WSpaceBrowser);
341
 
348
 
342
    /* Configure the DataBrowser */
349
    /* Configure the DataBrowser */
343
	if(!isBrowserOpen)
350
	if(!isBrowserOpen)
344
	 ConfigureDataBrowser(WSpaceBrowser);
351
	 ConfigureDataBrowser(WSpaceBrowser);
345
    err = SetDataBrowserTarget(WSpaceBrowser, 1);
352
    err = SetDataBrowserTarget(WSpaceBrowser, 0);
346
   
353
   
347
    AddDataBrowserItems(WSpaceBrowser, kDataBrowserNoItem, 
354
    AddDataBrowserItems(WSpaceBrowser, kDataBrowserNoItem, 
348
				(UInt32)NumOfRoots, (DataBrowserItemID *)RootItems, kDataBrowserItemNoProperty);
355
				NumOfRoots, RootItems, kDataBrowserItemNoProperty);
349
 
-
 
350
    /* Set the keyboard focus */
356
    /* Set the keyboard focus */
351
	SetKeyboardFocus(BrowserWindow, WSpaceBrowser, kControlDataBrowserPart);
357
	SetKeyboardFocus(BrowserWindow, WSpaceBrowser, kControlDataBrowserPart);
352
	
358
	
353
	/* Store DB as a window property */
359
	/* Store DB as a window property */
354
    SetWindowProperty(BrowserWindow,
360
    SetWindowProperty(BrowserWindow,
Line 616... Line 622...
616
	{
622
	{
617
		
623
		
618
		case kObjectColumn:
624
		case kObjectColumn:
619
		{
625
		{
620
			CFStringRef text;
626
			CFStringRef text;
621
			CopyCStringToPascal(Names[itemID-1],pascalString);
627
                        CopyCStringToPascal(Names[itemID-1],pascalString);
622
			text = CFStringCreateWithPascalString(
628
			text = CFStringCreateWithPascalString(
623
				CFAllocatorGetDefault(), pascalString, kCFStringEncodingMacRoman);
629
				CFAllocatorGetDefault(), pascalString, kCFStringEncodingMacRoman);
624
			err = SetDataBrowserItemDataText(itemData, text); 
630
			err = SetDataBrowserItemDataText(itemData, text); 
625
		CFRelease(text);
631
		CFRelease(text);
626
		}	
632
		}	
Line 690... Line 696...
690
		    numSelectedItems = GetHandleSize(handle)/sizeof(DataBrowserItemID);
696
		    numSelectedItems = GetHandleSize(handle)/sizeof(DataBrowserItemID);
691
		}	break;
697
		}	break;
692
		
698
		
693
		case kDataBrowserContainerOpened:
699
		case kDataBrowserContainerOpened:
694
		{	
700
		{	
695
			AddDataBrowserItems(browser, itemID, (UInt32)NumberOfItems[itemID-1], (DataBrowserItemID *)SubItemsID[itemID-1], kObjectColumn);
701
                AddDataBrowserItems(browser, itemID, NumberOfItems[itemID-1], (DataBrowserItemID *)SubItemsID[itemID-1], kObjectColumn);
696
			{	
702
			{	
697
				Boolean variableHeightRows;
703
				Boolean variableHeightRows;
698
				GetDataBrowserTableViewGeometry(
704
				GetDataBrowserTableViewGeometry(
699
					browser, NULL, &variableHeightRows);
705
					browser, NULL, &variableHeightRows);
700
					
706