Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

Tutorial interfata grafica XML KDE


   Kurt Granroth
   5 Septembrie 2000

Partea principala a lucrului

Acum urmeaza partea principala a lucrului -- convertirea codului pentru construirea meniului si barei de unelte corespunzatoare noului cadru de lucru. Voi pune aici metodele originale si convertite si mai tirziu vom face o comparatie linie cu linie intre cele doua metode.

Aceste doua functii, setupMenuBar si setupToolBar, erau responsabile pentru construirea barei de meniuri si barei de unelte (toolbar) in codul original al aplicatiei kedit.


void TopLevel::setupMenuBar()
{
  file =    new QPopupMenu ();
  edit =    new QPopupMenu ();
  options = new QPopupMenu ();
  recentpopup = new QPopupMenu ();

  file->insertItem(BarIcon("filenew"),i18n("&New..."),
                      this, SLOT(file_new()), KStdAccel::openNew());

  file->insertItem(BarIcon("fileopen"), i18n("&Open..."),
                      this, SLOT(file_open()), KStdAccel::open());

  file->insertItem(i18n("Open &Recent..."), recentpopup);
  connect( recentpopup, SIGNAL(activated(int)), SLOT(openRecent(int)) );

  file->insertSeparator(-1);

  file->insertItem(BarIcon("filefloppy"), i18n("&Save"),
                      this, SLOT(file_save()), KStdAccel::save());
  file->insertItem(i18n("Save &As..."),
                      this, SLOT(file_save_as()));
  file->insertItem(i18n("&Close"),
                      this, SLOT(file_close()), KStdAccel::close());
  file->insertSeparator (-1);
  file->insertItem(i18n("Open &URL..."),
                      this, SLOT(file_open_url()));
  file->insertItem(i18n("Save &To URL..."),
                      this,SLOT(file_save_url()));
  file->insertSeparator (-1);

  file->insertItem(BarIcon("fileprint"), i18n("&Print..."),
                      this, SLOT(print()), KStdAccel::print());

  file->insertSeparator (-1);
  file->insertItem(i18n("&Mail..."),
                      this, SLOT(mail()) );
  file->insertSeparator (-1);
  file->insertItem(BarIcon("exit"), i18n("&Quit"),
            this,    SLOT(close()), KStdAccel::quit());

  edit->insertItem(i18n("Und&o"), this,
           SLOT(undo()), KStdAccel::undo());
  edit->insertItem(i18n("Re&do"), this,
           SLOT(redo()), KStdAccel::redo());
  edit->insertSeparator(-1);
  edit->insertItem(BarIcon("editcut"), i18n("C&ut"),
           this,     SLOT(cut()));
  edit->insertItem(BarIcon("editcopy"), i18n("&Copy"),
           this,     SLOT(copy()));
  edit->insertItem(BarIcon("editpaste"), i18n("&Paste"),
           this,     SLOT(paste()));
  edit->insertItem(i18n("Select &All"),
           this,     SLOT(select_all()));
  edit->insertSeparator(-1);
  edit->insertItem(i18n("&Insert File"),
           this,     SLOT(file_insert()));
  edit->insertItem(i18n("I&nsert Date"),
           this,     SLOT(insertDate()));
  edit->insertItem(i18n("Cl&ean Spaces"), this, SLOT( clean_space()));
  edit->insertSeparator(-1);
  edit->insertItem(BarIcon("find"), i18n("&Find..."),
           this,     SLOT(search()), KStdAccel::find());
  edit->insertItem(i18n("Find A&gain"),
           this,     SLOT(search_again()));
  edit->insertItem(i18n("&Replace"),
           this,     SLOT(replace()), KStdAccel::replace());
  edit->insertItem(BarIcon("spellcheck"), i18n("&Spellcheck..."),
           this, SLOT(spellcheck()));


  edit->insertSeparator(-1);
  edit->insertItem(i18n("&Goto Line..."),
           this, SLOT(gotoLine()));

  options->setCheckable(TRUE);
  toolID   = options->insertItem(i18n("Show &Toolbar"),
                 this,SLOT(toggleToolBar()));
  statusID = options->insertItem(i18n("Show St&atusbar"),
                 this,SLOT(toggleStatusBar()));
  options->insertSeparator(-1);
  options->insertItem(i18n("Save &Options"),
              this,     SLOT(save_options()));
  options->insertSeparator(-1);
  options->insertItem( i18n("&Configure %1...").arg(kapp->caption()),
               this, SLOT(customize()) );


  menuBar()->insertItem (i18n("&File"), file);
  menuBar()->insertItem (i18n("&Edit"), edit);
  menuBar()->insertItem (i18n("&Options"), options);
  menuBar()->insertSeparator(-1);
  QString about = i18n(""
    "KEdit %1\n\n"
    "Copyright 1997-98\n"
    "Bernd Johannes Wuebben\n"
    "wuebben@kde.org").arg(KEDITVERSION);
  menuBar()->insertItem(i18n("&Help"), helpMenu(about) );
}

void TopLevel::setupToolBar()
{
  QPixmap pixmap;

  pixmap = BarIcon("filenew2");
  toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()),
                this, SLOT(file_new()), TRUE,
                i18n("New Document"));

  pixmap = BarIcon("fileopen");
  toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()),
                this, SLOT(file_open()), TRUE,
                i18n("Open Document") );

  pixmap = BarIcon("filefloppy");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(file_save()), TRUE,
                i18n("Save Document") );

  pixmap = BarIcon("fileprint");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(print()), TRUE,
                i18n("Print Document") );

  toolBar(0)->insertSeparator();

  pixmap = BarIcon("editcopy");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(copy()), TRUE,
                i18n("Copy") );

  pixmap = BarIcon("editpaste");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(paste()), TRUE,
                i18n("Paste") );

  pixmap = BarIcon("editcut");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(cut()), TRUE,
                i18n("Cut") );

  toolBar(0)->insertSeparator();

  pixmap = BarIcon( "undo" );
  toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()),
                this, SLOT(undo()), true,
                i18n("Undo") );

  pixmap = BarIcon( "redo" );
  toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()),
                this, SLOT(redo()), true,
                i18n("Redo") );

  toolBar(0)->insertSeparator();

  pixmap = BarIcon("send");
  toolBar(0)->insertButton(pixmap, 0, SIGNAL(clicked()),
               this, SLOT(mail()), TRUE,
               i18n("Mail Document") );

  toolBar(0)->insertSeparator();

  pixmap = BarIcon("help");
  toolBar(0)->insertButton( pixmap, 0,SIGNAL(clicked()),
                this, SLOT(helpselected()), TRUE,
                i18n("Help") );

  toolBar(0)->setBarPos( KToolBar::Top );
}
VECHI: kedit.cpp

Cele doua metode sint inlocuite cu o metoda care realizeaza acelasi lucru (folosind mult mai putine linii de cod) -- setupActions.


void TopLevel::setupActions()
{
  // setup File menu
  KStdAction::openNew(this, SLOT(file_new()), actionCollection());
  KStdAction::open(this, SLOT(file_open()), actionCollection());
  recenter = KStdAction::openRecent(this,SLOT(openRecent(int)),
                                    actionCollection());
  KStdAction::save(this, SLOT(file_save()),actionCollection());
  KStdAction::saveAs(this, SLOT(file_save_as()), actionCollection());
  KStdAction::close(this, SLOT(file_close()), actionCollection());
  KStdAction::print(this, SLOT(print()), actionCollection());
  KStdAction::mail(this, SLOT(mail()), actionCollection());
  (void)new KAction(i18n("Open &URL..."), 0, this,SLOT(file_open_url()),
                         actionCollection(),"file_open_url");
  (void)new KAction(i18n("Save &To URL..."), 0, this,
                    SLOT(file_save_url()),actionCollection(),"save_to_url");
  KStdAction::quit(this, SLOT(close()), actionCollection());
  
  // setup edit menu
  KStdAction::undo(this, SLOT(undo()), actionCollection());
  KStdAction::redo(this, SLOT(redo()), actionCollection());
  KStdAction::cut(this, SLOT(cut()), actionCollection());
  KStdAction::copy(this, SLOT(copy()), actionCollection());
  KStdAction::paste(this, SLOT(paste()), actionCollection());
  KStdAction::selectAll(this, SLOT(select_all()), actionCollection());
  KStdAction::find(this, SLOT(search()), actionCollection());
  KStdAction::findNext(this, SLOT(search_again()), actionCollection());
  KStdAction::replace(this, SLOT(replace()), actionCollection());
  
  (void)new KAction(i18n("&Insert File"), 0, this, SLOT(file_insert()),
                    actionCollection(), "insert_file");
  (void)new KAction(i18n("I&nsert Date"), 0, this, SLOT(insertDate()),
                    actionCollection(), "insert_date");
  (void)new KAction(i18n("Cl&ean Spaces"), 0, this, SLOT(clean_space()),
                    actionCollection(), "clean_spaces");
  
  // setup Tools menu
  KStdAction::spelling(this, SLOT(spellcheck()), actionCollection());
  
  // setup Go menu
  KStdAction::gotoLine(this, SLOT(gotoLine()), actionCollection());
  
  // setup Settings menu
  KStdAction::showToolbar(this,SLOT(toggleToolBar()),actionCollection());
  KStdAction::showStatusbar(this,SLOT(toggleStatusBar()),actionCollection());
  
  KStdAction::saveOptions(this,SLOT(save_options()),actionCollection());
  KStdAction::preferences(this,SLOT(customize()),actionCollection());
  
  createGUI();
}
NOU: kedit.cpp



Traducere de Daniel Ionescu. Adaptare de Claudiu Costin.