void JVMGetSourceFileList::ScanDirectory ( const JCharacter* path ) { JDirInfo* info; if (!JDirInfo::Create(path, &info)) { return; } JXFileListTable* table = (GetFileList())->GetTable(); const JSize count = info->GetEntryCount(); for (JIndex i=1; i<=count; i++) { const JDirEntry& e = info->GetEntry(i); if (e.GetType() == JDirEntry::kFile) { const CBTextFileType fileType = (CMGetPrefsManager())->GetFileType(e.GetName()); if (fileType == kCBJavaSourceFT) { table->AddFile(e.GetFullName()); } } else if (e.GetType() == JDirEntry::kDir) { ScanDirectory(e.GetFullName()); } } delete info; }
void CBFileListTable::ScanDirectory ( const JString& origPath, const JBoolean recurse, const JPtrArray<JString>& allSuffixList, CBSymbolList* symbolList, CBCTree* cTree, CBJavaTree* javaTree, JProgressDisplay& pg ) { JString path; JDirInfo* info; if (!JGetTrueName(origPath, &path) || !JDirInfo::Create(path, &info)) { return; } const JSize count = info->GetEntryCount(); for (JIndex i=1; i<=count; i++) { const JDirEntry& entry = info->GetEntry(i); // If it's a directory, recurse. if (entry.IsDirectory() && recurse && !entry.IsLink() && !JIsVCSDirectory(entry.GetName())) { ScanDirectory(entry.GetFullName(), recurse, allSuffixList, symbolList, cTree, javaTree, pg); } // If it's a file ending in one of the suffixes, parse it. else if (entry.IsFile()) { JString trueName = entry.GetFullName(); time_t modTime = entry.GetModTime(); if (entry.IsWorkingLink()) { const JBoolean ok = JGetTrueName(entry.GetFullName(), &trueName); assert( ok ); const JError err = JGetModificationTime(trueName, &modTime); assert( err.OK() ); } ParseFile(trueName, allSuffixList, modTime, symbolList, cTree, javaTree); } pg.IncrementProgress(); } delete info; }
JBoolean CBSearchTextDialog::SearchDirectory ( const JString& path, const JRegex* fileRegex, const JRegex* pathRegex, JPtrArray<JString>* fileList, JPtrArray<JString>* nameList, JProgressDisplay& pg ) const { JDirInfo* info; if (!JDirInfo::Create(path, &info)) { return kJTrue; // user didn't cancel } info->SetWildcardFilter(const_cast<JRegex*>(fileRegex), kJFalse, itsInvertFileFilterCB->IsChecked()); JBoolean keepGoing = kJTrue; const JSize count = info->GetEntryCount(); for (JIndex i=1; i<=count; i++) { const JDirEntry& entry = info->GetEntry(i); if (entry.IsFile()) { if (!pg.IncrementProgress()) { keepGoing = kJFalse; break; } SaveFileForSearch(entry.GetFullName(), fileList, nameList); } else if (itsRecurseDirCB->IsChecked() && entry.IsDirectory() && !entry.IsLink() && !JIsVCSDirectory(entry.GetName())) { JBoolean match = kJTrue; if (pathRegex != NULL) { match = ! pathRegex->Match(entry.GetName()); } if (match && !SearchDirectory(entry.GetFullName(), fileRegex, pathRegex, fileList, nameList, pg)) { keepGoing = kJFalse; break; } } } jdelete info; return keepGoing; }
void JXSaveFileDialog::Save ( const JCharacter* path ) { JDirInfo* dirInfo = GetDirInfo(); const JError err = dirInfo->GoTo(path); err.ReportIfError(); if (err.OK() && itsFileNameInput->Focus()) { EndDialog(kJTrue); } }
JBoolean JDirInfo::Empty ( const JCharacter* dirName ) { JDirInfo* info; if (!Create(dirName, &info)) { return kJTrue; } const JBoolean empty = info->IsEmpty(); delete info; return empty; }
void SyGAddRecentFile ( const JCharacter* fullname ) { JString recentDir; JString filename; JString path; if (SyGGetRecentFileDirectory(&recentDir) && JSplitPathAndName(fullname, &path, &filename)) { const JString recentFile = JCombinePathAndName(recentDir, filename); if (JNameUsed(recentFile)) { JRemoveFile(recentFile); JCreateSymbolicLink(fullname, recentFile); return; } // remove oldest links such that only kRecentFileCount - 1 remain JDirInfo* info; if (JDirInfo::Create(recentDir, &info)) { JBoolean changed = kJFalse; JSize count = info->GetEntryCount(); for (JIndex i=1; i<=count; i++) { if (info->GetEntry(i).IsBrokenLink()) { JRemoveFile(info->GetEntry(i).GetFullName()); changed = kJTrue; } } if (changed) { info->ForceUpdate(); } count = info->GetEntryCount(); if (count >= kRecentFileCount) { info->ChangeSort(JDirEntry::CompareModTimes, JOrderedSetT::kSortDescending); for (JIndex i=count; i>=kRecentFileCount; i--) { JRemoveFile(info->GetEntry(i).GetFullName()); } } // add new entry JCreateSymbolicLink(fullname, recentFile); } } }
void CBNewProjectSaveFileDialog::BuildTemplateMenuItems ( const JCharacter* path, const JBoolean isUserPath, JPtrArray<JString>* menuText, const JCharacter* templateFile, JString** menuTextStr ) const { JDirInfo* info = NULL; if (JDirInfo::Create(path, &info)) { info->ShowDirs(kJFalse); const JSize count = info->GetEntryCount(); JString fullName, templateType; for (JIndex i=1; i<=count; i++) { fullName = (info->GetEntry(i)).GetFullName(); if (CBProjectDocument::GetProjectTemplateType(fullName, &templateType)) { JString* s = jnew JString((info->GetEntry(i)).GetName()); assert( s != NULL ); if (isUserPath) { *s += kUserTemplateMarker; } else { *s += kSysTemplateMarker; } menuText->InsertSorted(s); // save item corresponding to initial template selection if (JSameDirEntry(templateFile, fullName)) { *menuTextStr = s; } } } } }
void GMessageViewDir::BuildWindow ( const JString& mailfile ) { JSize w = 500; JSize h = 300; JXWindow* window = new JXWindow(this, w,h, mailfile); assert( window != NULL ); window->SetWMClass(GMGetWMClassInstance(), GMGetViewWindowClass()); GGetPrefsMgr()->GetViewWindowSize(window); w = window->GetFrameWidth(); h = window->GetFrameHeight(); window->SetMinSize(w, 150); window->ShouldFocusWhenShow(kJTrue); JXMenuBar* menuBar = new JXMenuBar(window, JXWidget::kHElastic, JXWidget::kFixedTop, 0, 0, w - kJXDefaultMenuBarHeight, kJXDefaultMenuBarHeight); assert(menuBar != NULL); JXEngravedRect* eRect = new JXEngravedRect(window, JXWidget::kFixedRight, JXWidget::kFixedTop, w - kJXDefaultMenuBarHeight, 0, kJXDefaultMenuBarHeight, kJXDefaultMenuBarHeight); assert(eRect != NULL); GMMessageDragSource* mds = new GMMessageDragSource(this, window, JXWidget::kFixedRight, JXWidget::kFixedTop, w - kJXDefaultMenuBarHeight + kJXDefaultBorderWidth, 0 + kJXDefaultBorderWidth, kJXDefaultMenuBarHeight - 2 * kJXDefaultBorderWidth + 1, kJXDefaultMenuBarHeight - 2 * kJXDefaultBorderWidth + 1); assert(mds != NULL); itsFileMenu = menuBar->AppendTextMenu(kFileMenuTitleStr); itsFileMenu->SetMenuItems(kFileMenuStr); itsFileMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsFileMenu); JPtrArray<JString> nodes(JPtrArrayT::kDeleteAll); GGetMailboxTreeDir()->GetTopLevelNodes(&nodes); itsTransferMenu = new JXFSDirMenu(nodes, itsFileMenu, kTransferToCmd, menuBar); assert(itsTransferMenu != NULL); ListenTo(itsTransferMenu); JDirInfo* info; if (itsTransferMenu->GetDirInfo(&info)) { info->SetContentFilter(GMGetMailRegexStr()); } itsCopyMenu = new JXFSDirMenu(nodes, itsFileMenu, kCopyToCmd, menuBar); assert(itsCopyMenu != NULL); ListenTo(itsCopyMenu); if (itsCopyMenu->GetDirInfo(&info)) { info->SetContentFilter(GMGetMailRegexStr()); } ListenTo(GGetMailboxTreeDir()); itsMessageMenu = menuBar->AppendTextMenu(kMessageMenuTitleStr); itsMessageMenu->SetMenuItems(kMessageMenuStr); itsMessageMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsMessageMenu); itsToolBar = new JXToolBar(GGetPrefsMgr(), kGViewToolBarID, menuBar, w, 150, window, JXWidget::kHElastic, JXWidget::kVElastic, 0, kJXDefaultMenuBarHeight, w, h - kJXDefaultMenuBarHeight); assert(itsToolBar != NULL); const JSize newHeight = itsToolBar->GetWidgetEnclosure()->GetBoundsHeight(); const JFontManager* fm = window->GetFontManager(); JSize lineHeight = fm->GetLineHeight(GGetPrefsMgr()->GetDefaultMonoFont(), GGetPrefsMgr()->GetDefaultFontSize(), JFontStyle()); const JCoordinate headerheight = (lineHeight * 4) + (lineHeight/2); //58; JArray<JCoordinate> sizes; JArray<JCoordinate> minSizes; sizes.AppendElement(headerheight); minSizes.AppendElement(20); sizes.AppendElement(w - headerheight); minSizes.AppendElement(50); JIndex elasticIndex = 2; itsPart = new JXVertPartition(sizes, elasticIndex, minSizes, itsToolBar->GetWidgetEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0, 0, w, newHeight); assert(itsPart != NULL); itsSBSet = new JXScrollbarSet(itsPart->GetCompartment(2), JXWidget::kHElastic, JXWidget::kVElastic, 0,0, 100,100); assert(itsSBSet != NULL); itsSBSet->FitToEnclosure(kJTrue, kJTrue); itsView = new GMessageView(menuBar, itsSBSet, itsSBSet->GetScrollEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0,0,10,10); assert (itsView != NULL); itsView->FitToEnclosure(kJTrue, kJTrue); itsView->SetPTPrinter(GMGetAltPTPrinter()); window->InstallShortcuts(itsView, "#_"); ListenTo(itsView); JXScrollbarSet* sbs = new JXScrollbarSet(itsPart->GetCompartment(1), JXWidget::kHElastic, JXWidget::kVElastic, 0,0, 100,50); assert(sbs != NULL); sbs->FitToEnclosure(kJTrue, kJTrue); itsHeader = new GMessageView(sbs, sbs->GetScrollEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0,0,10,10); assert (itsHeader != NULL); itsHeader->FitToEnclosure(kJTrue, kJTrue); itsHeader->ShareEditMenu(itsView); itsHeader->ShareSearchMenu(itsView); GMDirectorMenu* menu = new GMDirectorMenu(kWindowsMenuTitleStr, menuBar, JXWidget::kFixedLeft, JXWidget::kVElastic, 0,0, 10,10); assert(menu != NULL); menuBar->AppendMenu(menu); itsPrefsMenu = menuBar->AppendTextMenu(kPrefsMenuTitleStr); itsPrefsMenu->SetMenuItems(kPrefsMenuStr); itsPrefsMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsPrefsMenu); itsHelpMenu = menuBar->AppendTextMenu(kHelpMenuTitleStr); itsHelpMenu->SetMenuItems(kHelpMenuStr); itsHelpMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsHelpMenu); itsFileMenu->SetItemImage(kNewCmd, filenew); itsFileMenu->SetItemImage(kNewMBox, envelopes); itsFileMenu->SetItemImage(kOpenCmd, fileopen); itsFileMenu->SetItemImage(kSaveCmd, filefloppy); itsFileMenu->SetItemImage(kPrintCmd, fileprint); itsFileMenu->SetItemImage(kShowNextCmd, mini_right); itsFileMenu->SetItemImage(kDeleteShowNextCmd, mini_del_right); itsFileMenu->SetItemImage(kShowPrevCmd, mini_left); itsMessageMenu->SetItemImage(kDecryptCmd, unlock_xpm); itsMessageMenu->SetItemImage(kSaveAttachCmd, paperclip); itsMessageMenu->SetItemImage(kReplyCmd, reply_xpm); itsMessageMenu->SetItemImage(kReplySenderCmd, reply_sender_xpm); itsMessageMenu->SetItemImage(kReplyAllCmd, reply_all_xpm); itsMessageMenu->SetItemImage(kForwardCmd, forward_xpm); itsMessageMenu->SetItemImage(kRedirectCmd, redirect_xpm); itsHelpMenu->SetItemImage(kTOCCmd, jx_help_toc); itsHelpMenu->SetItemImage(kThisWindowCmd, JXPM(jx_help_specific)); itsToolBar->LoadPrefs(); if (itsToolBar->IsEmpty()) { itsToolBar->AppendButton(itsFileMenu, kNewCmd); itsToolBar->AppendButton(itsFileMenu, kOpenCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kSaveCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kPrintCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kShowNextCmd); itsToolBar->AppendButton(itsFileMenu, kShowPrevCmd); itsToolBar->AppendButton(itsFileMenu, kDeleteShowNextCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsMessageMenu, kReplyCmd); itsToolBar->AppendButton(itsMessageMenu, kReplySenderCmd); itsToolBar->AppendButton(itsMessageMenu, kReplyAllCmd); itsToolBar->AppendButton(itsMessageMenu, kForwardCmd); itsToolBar->AppendButton(itsMessageMenu, kRedirectCmd); } itsMenuIcon = new JXImage(window->GetDisplay(), jx_plain_file_small); assert(itsMenuIcon != NULL); itsMenuIcon->ConvertToRemoteStorage(); }
void GMessageTableDir::BuildWindow ( const JString& mailfile ) { JSize w = 560; JSize h = 300; JString title; JString path; JSplitPathAndName(mailfile, &path, &title); itsWindow = new JXWindow(this, w,h, title); assert( itsWindow != NULL ); itsWindow->SetWMClass(GMGetWMClassInstance(), GMGetTableWindowClass()); // ListenTo(itsWindow); GGetPrefsMgr()->GetTableWindowSize(itsWindow); w = itsWindow->GetFrameWidth(); h = itsWindow->GetFrameHeight(); itsWindow->SetMinSize(w, 150); JXMenuBar* menuBar = new JXMenuBar(itsWindow, JXWidget::kHElastic, JXWidget::kFixedTop, 0, 0, w, kJXDefaultMenuBarHeight); assert(menuBar != NULL); itsFileMenu = menuBar->AppendTextMenu(kFileMenuTitleStr); itsFileMenu->SetMenuItems(kFileMenuStr); itsFileMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsFileMenu); JPtrArray<JString> nodes(JPtrArrayT::kDeleteAll); GGetMailboxTreeDir()->GetTopLevelNodes(&nodes); itsTransferMenu = new JXFSDirMenu(nodes, itsFileMenu, kTransferToCmd, menuBar); assert(itsTransferMenu != NULL); ListenTo(itsTransferMenu); JDirInfo* info; if (itsTransferMenu->GetDirInfo(&info)) { info->SetContentFilter(GMGetMailRegexStr()); } itsCopyMenu = new JXFSDirMenu(nodes, itsFileMenu, kCopyToCmd, menuBar); assert(itsCopyMenu != NULL); ListenTo(itsCopyMenu); if (itsCopyMenu->GetDirInfo(&info)) { info->SetContentFilter(GMGetMailRegexStr()); } ListenTo(GGetMailboxTreeDir()); GMPOPRetrieverMenu* popmenu = new GMPOPRetrieverMenu(itsFileMenu, kCheckAccountCmd, menuBar); assert(popmenu != NULL); // itsInboxMenu = new JXTextMenu(itsFileMenu, kInboxCmd, menuBar); itsInboxMenu = menuBar->AppendTextMenu(kInboxMenuTitleStr); assert(itsInboxMenu != NULL); itsInboxMenu->SetMenuItems(kInboxMenuStr); itsInboxMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsInboxMenu); itsToolBar = new JXToolBar(GGetPrefsMgr(), kGTableToolBarID, menuBar, w, 150, itsWindow, JXWidget::kHElastic, JXWidget::kVElastic, 0, kJXDefaultMenuBarHeight, w, h - kJXDefaultMenuBarHeight); assert(itsToolBar != NULL); const JCoordinate pathheight = 20; const JCoordinate scrollheight = itsToolBar->GetWidgetEnclosure()->GetBoundsHeight() - pathheight; itsSBSet = new JXScrollbarSet(itsToolBar->GetWidgetEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0,0,w,scrollheight); assert(itsSBSet != NULL); itsTable = new GMessageTable(this, menuBar, itsSBSet, itsSBSet->GetScrollEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0,20,w,scrollheight-20); assert (itsTable != NULL); itsColHeader = new GMessageColHeader(itsTable, itsSBSet, itsSBSet->GetScrollEnclosure(), JXWidget::kHElastic, JXWidget::kFixedTop, 0,0,w,20); assert(itsColHeader != NULL); itsColHeader->SetColTitle(4, "From"); itsColHeader->SetColTitle(5, "Subject"); itsColHeader->SetColTitle(6, "Date"); itsColHeader->SetColTitle(7, "Size"); const JCoordinate pathwidth = w - 150; itsPath = new JXStaticText(mailfile, itsToolBar->GetWidgetEnclosure(), JXWidget::kHElastic, JXWidget::kFixedBottom, 0,scrollheight,pathwidth,pathheight); assert(itsPath != NULL); itsPath->SetBorderWidth(1); itsMessageCount = new JXStaticText("", itsToolBar->GetWidgetEnclosure(), JXWidget::kFixedRight, JXWidget::kFixedBottom, pathwidth,scrollheight,w-pathwidth,pathheight); assert(itsMessageCount != NULL); itsMessageCount->SetBorderWidth(1); itsNoMailIcon = new JXImage(itsWindow->GetDisplay(), nomail_xpm); itsNoMailIcon->ConvertToRemoteStorage(); itsNewMailIcon = new JXImage(itsWindow->GetDisplay(), newmail_xpm); itsNewMailIcon->ConvertToRemoteStorage(); itsSmallNewMailIcon = new JXImage(itsWindow->GetDisplay(), newmail_small_xpm); itsSmallNewMailIcon->ConvertToRemoteStorage(); itsHaveMailIcon = new JXImage(itsWindow->GetDisplay(), havemail_xpm); itsHaveMailIcon->ConvertToRemoteStorage(); JXImage* icon = new JXImage(*itsNoMailIcon); assert(icon != NULL); itsWindow->SetIcon(icon); itsIndicator = new JXProgressIndicator(itsToolBar->GetWidgetEnclosure(), JXWidget::kHElastic, JXWidget::kFixedBottom, 5,scrollheight+5,pathwidth-10,pathheight/2); assert(itsIndicator != NULL); itsIndicator->Hide(); itsPG = new GXBlockingPG(NULL, NULL, itsIndicator); assert(itsPG != NULL); // itsPG->SetItems(NULL, NULL, itsIndicator); // begin JXLayout GMDirectorMenu* menu = new GMDirectorMenu(kWindowsMenuTitleStr, menuBar, JXWidget::kFixedLeft, JXWidget::kVElastic, 0,0, 10,10); assert(menu != NULL); menuBar->AppendMenu(menu); itsPrefsMenu = menuBar->AppendTextMenu(kPrefsMenuTitleStr); itsPrefsMenu->SetMenuItems(kPrefsMenuStr); itsPrefsMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsPrefsMenu); itsHelpMenu = menuBar->AppendTextMenu(kHelpMenuTitleStr); itsHelpMenu->SetMenuItems(kHelpMenuStr); itsHelpMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsHelpMenu); itsFileMenu->SetItemImage(kNewCmd, filenew); itsFileMenu->SetItemImage(kNewMBox, envelopes); itsFileMenu->SetItemImage(kOpenCmd, fileopen); itsFileMenu->SetItemImage(kSaveMsgCmd, filefloppy); itsFileMenu->SetItemImage(kPrintMsgCmd, fileprint); itsFileMenu->SetItemImage(kCheckMailCmd, check_mail); // itsFileMenu->SetItemImage(kOpenCmd, fileopen); itsInboxMenu->SetItemImage(kAddInboxCmd, newmail_small_plus); itsInboxMenu->SetItemImage(kRemoveInboxCmd, newmail_small_minus); itsHelpMenu->SetItemImage(kTOCCmd, manual); itsHelpMenu->SetItemImage(kThisWindowCmd, jx_help_specific); itsDummyPrintText = new GMDummyText(GMGetAltPTPrinter(), "", itsWindow, JXWidget::kHElastic, JXWidget::kFixedBottom, 0,0,500,10); assert(itsDummyPrintText != NULL); itsToolBar->LoadPrefs(); if (itsToolBar->IsEmpty()) { itsToolBar->AppendButton(itsFileMenu, kNewCmd); itsToolBar->AppendButton(itsFileMenu, kNewMBox); itsToolBar->AppendButton(itsFileMenu, kOpenCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kSaveMsgCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kPrintMsgCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kCheckMailCmd); itsToolBar->NewGroup(); JString id; if (GGetMailboxTreeDir()->GetID(&id)) { itsToolBar->AppendButton(menu, id); } if (GMGetAddressBookDir()->GetID(&id)) { itsToolBar->AppendButton(menu, id); } itsToolBar->NewGroup(); itsToolBar->AppendButton(itsHelpMenu, kTOCCmd); itsToolBar->AppendButton(itsHelpMenu, kThisWindowCmd); } itsMenuIcon = new JXImage(itsWindow->GetDisplay(), envelopes); assert(itsMenuIcon != NULL); itsMenuIcon->ConvertToRemoteStorage(); }
void GMailboxTreeDir::BuildWindow() { JCoordinate w = 360; JCoordinate h = 500; JXWindow* window = new JXWindow(this, w,h, "Mailbox window"); assert( window != NULL ); window->SetWMClass(GMGetWMClassInstance(), GMGetMailboxWindowClass()); window->SetCloseAction(JXWindow::kDeactivateDirector); window->PlaceAsDialogWindow(); window->ShouldFocusWhenShow(kJTrue); window->LockCurrentMinSize(); JXMenuBar* menuBar = new JXMenuBar(window, JXWidget::kHElastic, JXWidget::kFixedTop, 0,0, w - kCloseButtonWidth,kJXDefaultMenuBarHeight); assert( menuBar != NULL ); itsCloseButton = new JXTextButton("Close", window, JXWidget::kFixedRight, JXWidget::kFixedTop, w - kCloseButtonWidth,0, kCloseButtonWidth,kJXDefaultMenuBarHeight); assert( itsCloseButton != NULL ); itsCloseButton->SetShortcuts("#W"); //^[ ListenTo(itsCloseButton); itsToolBar = new JXToolBar(GGetPrefsMgr(), kGMailboxToolBarID, menuBar, w, h, window, JXWidget::kHElastic, JXWidget::kVElastic, 0, kJXDefaultMenuBarHeight, w, h - kJXDefaultMenuBarHeight); assert(itsToolBar != NULL); itsFileMenu = menuBar->AppendTextMenu(kFileMenuTitleStr); itsFileMenu->SetMenuItems(kFileMenuStr); itsFileMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsFileMenu); GMPOPRetrieverMenu* popmenu = new GMPOPRetrieverMenu(itsFileMenu, kCheckAccountCmd, menuBar); assert(popmenu != NULL); itsFileMenu->SetItemImage(kNewCmd, filenew); itsFileMenu->SetItemImage(kOpenCmd, fileopen); itsFileMenu->SetItemImage(kCheckMailCmd, check_mail); const JSize newHeight = itsToolBar->GetWidgetEnclosure()->GetBoundsHeight(); JXScrollbarSet* scrollbarSet = new JXScrollbarSet(itsToolBar->GetWidgetEnclosure(), JXWidget::kHElastic,JXWidget::kVElastic, 0, 0, w, newHeight); assert( scrollbarSet != NULL ); GMTreeRootNode* base = new GMTreeRootNode(); assert(base != NULL); JDirInfo* info; if (base->GetDirInfo(&info)) { JString regex("^$|"); regex += GMGetMailRegexStr(); info->SetContentFilter(regex); } itsTree = new GMFileTree(base); assert(itsTree != NULL); JNamedTreeList* list = new JNamedTreeList(itsTree); itsWidget = new GMailboxTreeWidget(itsTree, list, menuBar, scrollbarSet, scrollbarSet->GetScrollEnclosure(), JXWidget::kHElastic, JXWidget::kVElastic, 0,0,w,newHeight); assert(itsWidget != NULL); GMDirectorMenu* menu = new GMDirectorMenu(kWindowsMenuTitleStr, menuBar, JXWidget::kFixedLeft, JXWidget::kVElastic, 0,0, 10,10); assert(menu != NULL); menuBar->AppendMenu(menu); itsPrefsMenu = menuBar->AppendTextMenu(kPrefsMenuTitleStr); itsPrefsMenu->SetMenuItems(kPrefsMenuStr); itsPrefsMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsPrefsMenu); itsHelpMenu = menuBar->AppendTextMenu(kHelpMenuTitleStr); itsHelpMenu->SetMenuItems(kHelpMenuStr); itsHelpMenu->SetUpdateAction(JXMenu::kDisableNone); ListenTo(itsHelpMenu); itsHelpMenu->SetItemImage(kTOCCmd, JXPM(jx_help_toc)); itsHelpMenu->SetItemImage(kThisWindowCmd, JXPM(jx_help_specific)); itsToolBar->LoadPrefs(); if (itsToolBar->IsEmpty()) { itsToolBar->AppendButton(itsFileMenu, kNewCmd); itsToolBar->AppendButton(itsFileMenu, kOpenCmd); itsToolBar->NewGroup(); itsToolBar->AppendButton(itsFileMenu, kCheckMailCmd); itsToolBar->NewGroup(); itsWidget->AddDefaultButtcons(itsToolBar); itsToolBar->AppendButton(itsHelpMenu, kTOCCmd); itsToolBar->AppendButton(itsHelpMenu, kThisWindowCmd); } itsMenuIcon = new JXImage(window->GetDisplay(), mailbox); assert(itsMenuIcon != NULL); itsMenuIcon->ConvertToRemoteStorage(); }
JBoolean JSearchSubdirs_private ( const JCharacter* startPath, const JCharacter* name, const JBoolean isFile, const JBoolean caseSensitive, JString* path, JString* newName, JProgressDisplay& pg, JBoolean* cancelled ) { // checking this way covers partial path cases like "X11/Xlib.h" const JString fullName = JCombinePathAndName(startPath, name); if (( isFile && JFileExists(fullName)) || (!isFile && JDirectoryExists(fullName))) { const JBoolean ok = JGetTrueName(startPath, path); assert( ok ); if (newName != NULL) { *newName = name; } return kJTrue; } JDirInfo* info; if (!JDirInfo::Create(startPath, &info)) { return kJFalse; } JBoolean found = kJFalse; const JSize count = info->GetEntryCount(); // check each entry (if case sensitive, the initial check is enough) if (!caseSensitive) { for (JIndex i=1; i<=count; i++) { const JDirEntry& entry = info->GetEntry(i); if ((( isFile && entry.IsFile()) || (!isFile && entry.IsDirectory())) && JStringCompare(name, entry.GetName(), caseSensitive) == 0) { const JBoolean ok = JGetTrueName(startPath, path); assert( ok ); if (newName != NULL) { *newName = entry.GetName(); } found = kJTrue; break; } if (!pg.IncrementProgress()) { *cancelled = kJTrue; break; } } } // recurse on each directory if (!found && !(*cancelled)) { for (JIndex i=1; i<=count; i++) { const JDirEntry& entry = info->GetEntry(i); if (entry.IsDirectory() && !entry.IsLink()) { const JString& newPath = entry.GetFullName(); if (JSearchSubdirs_private(newPath, name, isFile, caseSensitive, path, newName, pg, cancelled)) { found = kJTrue; break; } } if (*cancelled || (caseSensitive && !pg.IncrementProgress())) { *cancelled = kJTrue; break; } } } delete info; return found; }