189 const char *ed_filetypes[] = {
190 "ROOT Macros",
"*.C",
191 "Source files",
"*.cxx",
192 "Text files",
"*.txt",
197 enum ETextEditorCommands {
198 kM_FILE_NEW, kM_FILE_OPEN, kM_FILE_SAVE, kM_FILE_SAVEAS, kM_FILE_CLOSE,
199 kM_FILE_PRINT, kM_FILE_EXIT, kM_EDIT_CUT, kM_EDIT_COPY, kM_EDIT_PASTE,
200 kM_EDIT_DELETE, kM_EDIT_SELECTALL, kM_SEARCH_FIND, kM_SEARCH_FINDNEXT,
201 kM_SEARCH_GOTO, kM_TOOLS_COMPILE, kM_TOOLS_EXECUTE, kM_TOOLS_INTERRUPT,
202 kM_HELP_CONTENTS, kM_HELP_ABOUT, kM_EDIT_SELFONT
205 ToolBarData_t fTbData[] = {
206 {
"ed_new.png",
"New File", kFALSE, kM_FILE_NEW, 0 },
207 {
"ed_open.png",
"Open File", kFALSE, kM_FILE_OPEN, 0 },
208 {
"ed_save.png",
"Save File", kFALSE, kM_FILE_SAVE, 0 },
209 {
"ed_saveas.png",
"Save File As...", kFALSE, kM_FILE_SAVEAS, 0 },
211 {
"ed_print.png",
"Print", kFALSE, kM_FILE_PRINT, 0 },
213 {
"ed_cut.png",
"Cut selection", kFALSE, kM_EDIT_CUT, 0 },
214 {
"ed_copy.png",
"Copy selection", kFALSE, kM_EDIT_COPY, 0 },
215 {
"ed_paste.png",
"Paste selection", kFALSE, kM_EDIT_PASTE, 0 },
216 {
"ed_delete.png",
"Delete selection", kFALSE, kM_EDIT_DELETE, 0 },
218 {
"ed_find.png",
"Find...", kFALSE, kM_SEARCH_FIND, 0 },
219 {
"ed_findnext.png",
"Find next", kFALSE, kM_SEARCH_FINDNEXT, 0 },
220 {
"ed_goto.png",
"Goto...", kFALSE, kM_SEARCH_GOTO, 0 },
222 {
"ed_compile.png",
"Compile Macro", kFALSE, kM_TOOLS_COMPILE, 0 },
223 {
"ed_execute.png",
"Execute Macro", kFALSE, kM_TOOLS_EXECUTE, 0 },
224 {
"ed_interrupt.png",
"Interrupt", kFALSE, kM_TOOLS_INTERRUPT, 0 },
226 {
"ed_help.png",
"Help Contents", kFALSE, kM_HELP_CONTENTS, 0 },
228 {
"ed_quit.png",
"Close Editor", kFALSE, kM_FILE_EXIT, 0 },
232 static char *gEPrinter = 0;
233 static char *gEPrintCommand = 0;
235 ClassImp(TGTextEditor);
240 TGTextEditor::TGTextEditor(
const char *filename,
const TGWindow *p, UInt_t w,
241 UInt_t h) : TGMainFrame(p, w, h)
244 if (p && p != gClient->GetDefaultRoot()) {
247 fComboCmd->UnmapWindow();
248 fToolBar->RemoveFrame(fComboCmd);
249 fLabel->UnmapWindow();
250 fToolBar->RemoveFrame(fLabel);
251 fToolBar->GetButton(kM_FILE_EXIT)->SetState(kButtonDisabled);
263 TGTextEditor::TGTextEditor(TMacro *macro,
const TGWindow *p, UInt_t w, UInt_t h) :
268 if (p && p != gClient->GetDefaultRoot()) {
271 fComboCmd->UnmapWindow();
272 fLabel->UnmapWindow();
273 if (fToolBar->GetButton(kM_FILE_EXIT))
274 fToolBar->GetButton(kM_FILE_EXIT)->SetState(kButtonDisabled);
279 TIter next(macro->GetListOfLines());
281 while ((obj = (TObjString*) next())) {
282 fTextEdit->AddLine(obj->GetName());
284 tmp.Form(
"TMacro : %s: %ld lines read.",
285 macro->GetName(), fTextEdit->ReturnLineCount());
286 fStatusBar->SetText(tmp.Data(), 0);
287 fFilename = macro->GetName();
289 tmp.Form(
"TMacro : %s - TGTextEditor", macro->GetName());
290 SetWindowName(tmp.Data());
298 TGTextEditor::~TGTextEditor()
300 gApplication->Disconnect(
"Terminate(Int_t)");
301 if (fTimer)
delete fTimer;
302 if (fMenuFile)
delete fMenuFile;
303 if (fMenuEdit)
delete fMenuEdit;
304 if (fMenuSearch)
delete fMenuSearch;
305 if (fMenuTools)
delete fMenuTools;
306 if (fMenuHelp)
delete fMenuHelp;
312 void TGTextEditor::DeleteWindow()
314 gApplication->Disconnect(
"Terminate(Int_t)");
315 delete fTimer; fTimer = 0;
316 delete fMenuFile; fMenuFile = 0;
317 delete fMenuEdit; fMenuEdit = 0;
318 delete fMenuSearch; fMenuSearch = 0;
319 delete fMenuTools; fMenuTools = 0;
320 delete fMenuHelp; fMenuHelp = 0;
322 TGMainFrame::DeleteWindow();
328 void TGTextEditor::Build()
330 SetCleanup(kDeepCleanup);
331 fMenuBarLayout =
new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0, 0, 1, 1);
332 fMenuBarItemLayout =
new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
334 fMenuFile =
new TGPopupMenu(fClient->GetDefaultRoot());
335 fMenuFile->AddEntry(
"&New", kM_FILE_NEW);
336 fMenuFile->AddSeparator();
337 fMenuFile->AddEntry(
"&Open...", kM_FILE_OPEN);
338 fMenuFile->AddEntry(
"&Close", kM_FILE_CLOSE);
339 fMenuFile->AddEntry(
"&Save", kM_FILE_SAVE);
340 fMenuFile->AddEntry(
"Save &As...", kM_FILE_SAVEAS);
341 fMenuFile->AddSeparator();
342 fMenuFile->AddEntry(
"&Print...", kM_FILE_PRINT);
343 fMenuFile->AddSeparator();
344 fMenuFile->AddEntry(
"E&xit", kM_FILE_EXIT);
346 fMenuEdit =
new TGPopupMenu(fClient->GetDefaultRoot());
347 fMenuEdit->AddEntry(
"Cu&t\tCtrl+X", kM_EDIT_CUT);
348 fMenuEdit->AddEntry(
"&Copy\tCtrl+C", kM_EDIT_COPY);
349 fMenuEdit->AddEntry(
"&Paste\tCtrl+V", kM_EDIT_PASTE);
350 fMenuEdit->AddEntry(
"De&lete\tDel", kM_EDIT_DELETE);
351 fMenuEdit->AddSeparator();
352 fMenuEdit->AddEntry(
"Select &All\tCtrl+A", kM_EDIT_SELECTALL);
353 fMenuEdit->AddSeparator();
354 fMenuEdit->AddEntry(
"Set &Font", kM_EDIT_SELFONT);
356 fMenuTools =
new TGPopupMenu(fClient->GetDefaultRoot());
357 fMenuTools->AddEntry(
"&Compile Macro\tCtrl+F7", kM_TOOLS_COMPILE);
358 fMenuTools->AddEntry(
"&Execute Macro\tCtrl+F5", kM_TOOLS_EXECUTE);
359 fMenuTools->AddEntry(
"&Interrupt\tShift+F5", kM_TOOLS_INTERRUPT);
361 fMenuEdit->DisableEntry(kM_EDIT_CUT);
362 fMenuEdit->DisableEntry(kM_EDIT_COPY);
363 fMenuEdit->DisableEntry(kM_EDIT_DELETE);
364 fMenuEdit->DisableEntry(kM_EDIT_PASTE);
366 fMenuSearch =
new TGPopupMenu(fClient->GetDefaultRoot());
367 fMenuSearch->AddEntry(
"&Find...\tCtrl+F", kM_SEARCH_FIND);
368 fMenuSearch->AddEntry(
"Find &Next\tF3", kM_SEARCH_FINDNEXT);
369 fMenuSearch->AddSeparator();
370 fMenuSearch->AddEntry(
"&Goto Line...\tCtrl+L", kM_SEARCH_GOTO);
372 fMenuHelp =
new TGPopupMenu(fClient->GetDefaultRoot());
373 fMenuHelp->AddEntry(
"&Help Topics\tF1", kM_HELP_CONTENTS);
374 fMenuHelp->AddSeparator();
375 fMenuHelp->AddEntry(
"&About...", kM_HELP_ABOUT);
377 fMenuFile->Associate(
this);
378 fMenuEdit->Associate(
this);
379 fMenuSearch->Associate(
this);
380 fMenuTools->Associate(
this);
381 fMenuHelp->Associate(
this);
383 fMenuBar =
new TGMenuBar(
this, 1, 1, kHorizontalFrame);
384 fMenuBar->SetCleanup(kDeepCleanup);
385 fMenuBar->AddPopup(
"&File", fMenuFile, fMenuBarItemLayout);
386 fMenuBar->AddPopup(
"&Edit", fMenuEdit, fMenuBarItemLayout);
387 fMenuBar->AddPopup(
"&Search", fMenuSearch, fMenuBarItemLayout);
388 fMenuBar->AddPopup(
"&Tools", fMenuTools, fMenuBarItemLayout);
389 fMenuBar->AddPopup(
"&Help", fMenuHelp,
new TGLayoutHints(kLHintsTop |
391 AddFrame(fMenuBar, fMenuBarLayout);
395 AddFrame(
new TGHorizontal3DLine(
this),
396 new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,2,2));
398 fToolBar =
new TGToolBar(
this, 60, 20, kHorizontalFrame);
399 fToolBar->SetCleanup(kDeepCleanup);
400 for (i = 0; fTbData[i].fPixmap; i++) {
401 if (strlen(fTbData[i].fPixmap) == 0) {
405 fToolBar->AddButton(
this, &fTbData[i], spacing);
408 fComboCmd =
new TGComboBox(fToolBar,
"");
409 fCommand = fComboCmd->GetTextEntry();
410 fCommandBuf = fCommand->GetBuffer();
411 fCommand->Associate(
this);
412 fComboCmd->Resize(200, fCommand->GetDefaultHeight());
413 fToolBar->AddFrame(fComboCmd,
new TGLayoutHints(kLHintsCenterY |
414 kLHintsRight, 5, 5, 1, 1));
416 fToolBar->AddFrame(fLabel =
new TGLabel(fToolBar,
"Command :"),
417 new TGLayoutHints(kLHintsCenterY | kLHintsRight, 5, 5, 1, 1));
418 AddFrame(fToolBar,
new TGLayoutHints(kLHintsTop | kLHintsExpandX,
420 AddFrame(
new TGHorizontal3DLine(
this),
421 new TGLayoutHints(kLHintsTop | kLHintsExpandX, 0,0,2,2));
423 fToolBar->GetButton(kM_EDIT_CUT)->SetState(kButtonDisabled);
424 fToolBar->GetButton(kM_EDIT_COPY)->SetState(kButtonDisabled);
425 fToolBar->GetButton(kM_EDIT_DELETE)->SetState(kButtonDisabled);
426 fToolBar->GetButton(kM_EDIT_PASTE)->SetState(kButtonDisabled);
428 fTextEdit =
new TGTextEdit(
this, 10, 10, 1);
429 if (gClient->GetStyle() < 2) {
431 gClient->GetColorByName(
"#3399ff", pxl);
432 fTextEdit->SetSelectBack(pxl);
433 fTextEdit->SetSelectFore(TGFrame::GetWhitePixel());
435 fTextEdit->Associate(
this);
436 AddFrame(fTextEdit,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
438 Int_t parts[] = { 75, 25 };
439 fStatusBar =
new TGStatusBar(
this);
440 fStatusBar->SetCleanup(kDeepCleanup);
441 fStatusBar->SetParts(parts, 2);
442 AddFrame(fStatusBar,
new TGLayoutHints(kLHintsBottom | kLHintsExpandX, 0, 0, 3, 0));
444 SetClassHints(
"ROOT",
"TGTextEditor");
445 SetWindowName(
"Untitled - TGTextEditor");
448 fFilename =
"Untitled";
449 fStatusBar->SetText(fFilename.Data(), 0);
451 fTextEdit->SetFocus();
452 fTextEdit->GetMenu()->DisableEntry(TGTextEdit::kM_FILE_NEW);
453 fTextEdit->GetMenu()->DisableEntry(TGTextEdit::kM_FILE_OPEN);
454 fTextEdit->Connect(
"DataChanged()",
"TGTextEditor",
this,
"DataChanged()");
455 fTextEdit->Connect(
"Closed()",
"TGTextEditor",
this,
"ClearText()");
456 fTextEdit->Connect(
"Opened()",
"TGTextEditor",
this,
"ClearText()");
457 fTextEdit->Connect(
"DataDropped(char *)",
"TGTextEditor",
this,
"DataDropped(char *)");
458 fTextEdit->MapWindow();
461 Resize(GetDefaultWidth() + 50, GetDefaultHeight() > 500 ? GetDefaultHeight() : 500);
464 gApplication->Connect(
"Terminate(Int_t)",
"TGTextEditor",
this,
"ClearText()");
465 gVirtualX->GrabKey(fId, gVirtualX->KeysymToKeycode(kKey_F3), 0, kTRUE);
467 AddInput(kKeyPressMask | kEnterWindowMask | kLeaveWindowMask |
468 kFocusChangeMask | kStructureNotifyMask);
470 fTimer =
new TTimer(
this, 250);
475 fTextChanged = kFALSE;
482 void TGTextEditor::DataDropped(
char *fname)
486 tmp.Form(
"%s: %ld lines read.", fname, fTextEdit->ReturnLineCount());
487 fStatusBar->SetText(tmp, 0);
488 tmp.Form(
"%s - TGTextEditor", fname);
489 SetWindowName(tmp.Data());
496 void TGTextEditor::DataChanged()
498 fTextChanged = kTRUE;
504 void TGTextEditor::LoadFile(
const char *fname)
508 fi.fFileTypes = ed_filetypes;
513 if (!fFilename.CompareTo(
"Untitled"))
516 SaveFile(fFilename.Data());
527 new TGFileDialog(fClient->GetDefaultRoot(),
this, kFDOpen, &fi);
528 if (fi.fFilename && strlen(fi.fFilename)) {
529 fname = fi.fFilename;
533 if (!fTextEdit->LoadFile(fname)) {
534 tmp.Form(
"Error opening file \"%s\"", fname);
535 new TGMsgBox(fClient->GetRoot(),
this,
"TGTextEditor",
536 tmp.Data(), kMBIconExclamation, kMBOk);
539 tmp.Form(
"%s: %ld lines read.", fname, fTextEdit->ReturnLineCount());
540 fStatusBar->SetText(tmp.Data(), 0);
541 tmp.Form(
"%s - TGTextEditor", fname);
542 SetWindowName(tmp.Data());
543 fTextChanged = kFALSE;
552 void TGTextEditor::SaveFile(
const char *fname)
557 if (!fTextEdit->SaveFile(fname)) {
558 tmp.Form(
"Error saving file \"%s\"", fname);
559 new TGMsgBox(fClient->GetRoot(),
this,
"TGTextEditor",
560 tmp.Data(), kMBIconExclamation, kMBOk);
563 if ((p = (
char *)strrchr(fname,
'/')) == 0) {
568 tmp.Form(
"%s: %ld lines written.", p, fTextEdit->ReturnLineCount());
569 fStatusBar->SetText(tmp.Data(), 0);
571 tmp.Form(
"%s - TGTextEditor", p);
572 SetWindowName(tmp.Data());
573 fTextChanged = kFALSE;
580 Bool_t TGTextEditor::SaveFileAs()
582 TString workdir = gSystem->WorkingDirectory();
583 static TString dir(
".");
584 static Bool_t overwr = kFALSE;
586 fi.fFileTypes = ed_filetypes;
587 fi.fIniDir = StrDup(dir);
588 fi.fOverwrite = overwr;
589 new TGFileDialog(fClient->GetDefaultRoot(),
this, kFDSave, &fi);
590 gSystem->ChangeDirectory(workdir.Data());
591 overwr = fi.fOverwrite;
592 if (fi.fFilename && strlen(fi.fFilename)) {
593 SaveFile(fi.fFilename);
594 fFilename = fi.fFilename;
603 Int_t TGTextEditor::IsSaved()
607 Int_t opt = (kMBYes | kMBNo);
609 tmp.Form(
"The text has been modified. Do you want to save the changes?");
614 if (fParent == gClient->GetDefaultRoot())
616 new TGMsgBox(fClient->GetRoot(),
this,
"TGTextEditor",
617 tmp.Data(), kMBIconExclamation, opt, &ret);
625 void TGTextEditor::PrintText()
630 gEPrinter = StrDup(
"892_2_cor");
631 gEPrintCommand = StrDup(
"xprint");
633 new TGPrintDialog(fClient->GetDefaultRoot(),
this, 400, 150,
634 &gEPrinter, &gEPrintCommand, &ret);
637 tmp.Form(
"Printed: %s", fFilename.Data());
638 fStatusBar->SetText(tmp.Data(), 0);
645 void TGTextEditor::CloseWindow()
647 Bool_t reallyClose = kFALSE;
654 if (!fFilename.CompareTo(
"Untitled"))
655 fTextChanged = !SaveFileAs();
657 SaveFile(fFilename.Data());
660 reallyClose = (!fTextChanged || (fParent != gClient->GetDefaultRoot()));
663 reallyClose = kFALSE;
670 gApplication->Disconnect(
"Terminate(Int_t)");
671 TGMainFrame::CloseWindow();
679 Bool_t TGTextEditor::HandleKey(Event_t *event)
684 if (event->fType == kGKeyPress) {
685 gVirtualX->LookupString(event, input,
sizeof(input), keysym);
687 switch ((EKeySym)keysym) {
694 case kKey_ScrollLock:
697 SendMessage(
this, MK_MSG(kC_COMMAND, kCM_MENU),
698 kM_HELP_CONTENTS, 0);
706 if (event->fState & kKeyControlMask) {
707 switch((EKeySym)keysym) {
718 if (event->fState & kKeyShiftMask) {
719 switch((EKeySym)keysym) {
728 return TGMainFrame::HandleKey(event);
734 void TGTextEditor::ClearText()
738 fFilename =
"Untitled";
739 SetWindowName(
"Untitled - TGTextEditor");
740 fStatusBar->SetText(
"New File", 0);
741 fTextChanged = kFALSE;
747 void TGTextEditor::Search(Bool_t again)
750 SendMessage(fTextEdit, MK_MSG(kC_COMMAND, kCM_MENU),
751 TGTextEdit::kM_SEARCH_FINDAGAIN, 0);
754 fTextEdit->Search(kFALSE);
761 void TGTextEditor::Goto()
765 new TGGotoDialog(fClient->GetDefaultRoot(),
this, 400, 150, &ret);
768 fTextEdit->Goto(ret-1);
774 void TGTextEditor::CompileMacro()
776 if (fTextEdit->ReturnLineCount() < 3)
778 if ((fMacro) || (!fFilename.CompareTo(
"Untitled"))) {
782 char *tmpfile = gSystem->ConcatFileName(gSystem->TempDirectory(),
783 gSystem->BaseName(fFilename.Data()));
784 fTextEdit->SaveFile(tmpfile, kFALSE);
785 gSystem->CompileMacro(tmpfile);
786 gSystem->Unlink(tmpfile);
794 void TGTextEditor::ExecuteMacro()
796 if (fTextEdit->ReturnLineCount() < 3)
804 new TGMsgBox(fClient->GetRoot(),
this,
"TGTextEditor",
805 "The text has been modified. Do you want to save the changes?",
806 kMBIconExclamation, kMBYes | kMBNo | kMBCancel, &ret);
808 if (!fFilename.CompareTo(
"Untitled"))
811 SaveFile(fFilename.Data());
812 fTextChanged = kFALSE;
814 if (ret == kMBCancel)
817 if (!fFilename.CompareTo(
"Untitled")) {
822 gInterpreter->SaveContext();
823 TString savdir = gSystem->WorkingDirectory();
824 TString tmpfile = gSystem->BaseName(fFilename.Data());
826 gSystem->ChangeDirectory(gSystem->DirName(fFilename.Data()));
827 fTextEdit->SaveFile(tmpfile.Data(), kFALSE);
828 gROOT->SetExecutingMacro(kTRUE);
829 gROOT->Macro(tmpfile.Data());
830 gROOT->SetExecutingMacro(kFALSE);
831 if (gInterpreter->IsLoaded(tmpfile.Data()))
832 gInterpreter->UnloadFile(tmpfile.Data());
833 gSystem->Unlink(tmpfile.Data());
834 gSystem->ChangeDirectory(savdir.Data());
835 gInterpreter->Reset();
841 void TGTextEditor::InterruptMacro()
843 gROOT->SetInterrupt(kTRUE);
849 void TGTextEditor::About()
852 TString rootx = TROOT::GetBinDir() +
"/root -a &";
853 gSystem->Exec(rootx);
856 new TWin32SplashThread(kTRUE);
859 sprintf(str,
"About ROOT %s...", gROOT->GetVersion());
860 TRootHelpDialog *hd =
new TRootHelpDialog(
this, str, 600, 400);
861 hd->SetText(gHelpAbout);
870 Bool_t TGTextEditor::HandleTimer(TTimer *t)
873 if (t != fTimer)
return kTRUE;
875 if ((gVirtualX->InheritsFrom(
"TGX11")) &&
876 (gVirtualX->GetPrimarySelectionOwner() == kNone)) {
877 fMenuEdit->DisableEntry(kM_EDIT_PASTE);
878 fToolBar->GetButton(kM_EDIT_PASTE)->SetState(kButtonDisabled);
881 fMenuEdit->EnableEntry(kM_EDIT_PASTE);
882 if (fToolBar->GetButton(kM_EDIT_PASTE)->GetState() == kButtonDisabled)
883 fToolBar->GetButton(kM_EDIT_PASTE)->SetState(kButtonUp);
886 if (fTextEdit->IsMarked()) {
887 fMenuEdit->EnableEntry(kM_EDIT_CUT);
888 fMenuEdit->EnableEntry(kM_EDIT_COPY);
889 fMenuEdit->EnableEntry(kM_EDIT_DELETE);
890 if (fToolBar->GetButton(kM_EDIT_CUT)->GetState() == kButtonDisabled) {
891 fToolBar->GetButton(kM_EDIT_CUT)->SetState(kButtonUp);
892 fToolBar->GetButton(kM_EDIT_COPY)->SetState(kButtonUp);
893 fToolBar->GetButton(kM_EDIT_DELETE)->SetState(kButtonUp);
897 fMenuEdit->DisableEntry(kM_EDIT_CUT);
898 fMenuEdit->DisableEntry(kM_EDIT_COPY);
899 fMenuEdit->DisableEntry(kM_EDIT_DELETE);
900 if (fToolBar->GetButton(kM_EDIT_CUT)->GetState() == kButtonUp) {
901 fToolBar->GetButton(kM_EDIT_CUT)->SetState(kButtonDisabled);
902 fToolBar->GetButton(kM_EDIT_COPY)->SetState(kButtonDisabled);
903 fToolBar->GetButton(kM_EDIT_DELETE)->SetState(kButtonDisabled);
907 TGLongPosition pos = fTextEdit->GetCurrentPos();
908 tmp.Form(
"Ln %ld, Ch %ld", pos.fY, pos.fX);
909 fStatusBar->SetText(tmp.Data(), 1);
917 Bool_t TGTextEditor::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
921 switch(GET_MSG(msg)) {
923 switch(GET_SUBMSG(msg)) {
938 if (!fFilename.CompareTo(
"Untitled"))
941 SaveFile(fFilename.Data());
966 case kM_EDIT_SELECTALL:
967 fTextEdit->SelectAll();
968 if (fTextEdit->IsMarked()) {
969 fMenuEdit->EnableEntry(kM_EDIT_CUT);
970 fMenuEdit->EnableEntry(kM_EDIT_COPY);
971 fMenuEdit->EnableEntry(kM_EDIT_DELETE);
972 if (fToolBar->GetButton(kM_EDIT_CUT)->GetState() == kButtonDisabled) {
973 fToolBar->GetButton(kM_EDIT_CUT)->SetState(kButtonUp);
974 fToolBar->GetButton(kM_EDIT_COPY)->SetState(kButtonUp);
975 fToolBar->GetButton(kM_EDIT_DELETE)->SetState(kButtonUp);
979 case kM_EDIT_SELFONT:
983 TGFontDialog::FontProp_t prop;
984 new TGFontDialog(fClient->GetRoot(),
this, &prop);
985 if (prop.fName !=
"") {
986 fontname.Form(
"-*-%s-%s-%c-*-*-%d-*-*-*-*-*-*-*",
988 prop.fBold ?
"bold" :
"medium",
989 prop.fItalic ?
'i' :
'r',
991 if (!gVirtualX->ListFonts(fontname, 10, count)) {
992 fontname.Form(
"-*-%s-%s-%c-*-*-%d-*-*-*-*-*-*-*",
994 prop.fBold ?
"bold" :
"medium",
995 prop.fItalic ?
'o' :
'r',
998 TGFont *font = fClient->GetFont(fontname);
1000 FontStruct_t editorfont = font->GetFontStruct();
1001 fTextEdit->SetFont(editorfont);
1002 fTextEdit->Update();
1009 case kM_TOOLS_COMPILE:
1012 case kM_TOOLS_EXECUTE:
1015 case kM_TOOLS_INTERRUPT:
1020 case kM_SEARCH_FIND:
1023 case kM_SEARCH_FINDNEXT:
1026 case kM_SEARCH_GOTO:
1031 case kM_HELP_CONTENTS:
1032 hd =
new TRootHelpDialog(
this,
"Help on Editor...", 600, 400);
1033 hd->SetText(gHelpTextEditor);
1044 switch (GET_SUBMSG(msg)) {
1048 const char *
string = fCommandBuf->GetString();
1049 if(strlen(
string) > 1) {
1050 gROOT->ProcessLine(
string);
1051 fComboCmd->ReturnPressed();