Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

FLTK menuBar ...

[es] :: C/C++ programiranje :: FLTK menuBar ...

[ Pregleda: 3309 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dado_k
Varaždin

Član broj: 57122
Poruke: 300
*.cmu.carnet.hr.

ICQ: 326865106
Sajt: radim baš novi sajt u ph..


Profil

icon FLTK menuBar ...16.01.2006. u 18:48 - pre 221 meseci
kako izraditi neki jednostavan MenuBar? ono da ima File pa onda da se otvore dodatne opcije save bla bla... dokumentacija mi ne pomaže--
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..31.216.81.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: FLTK menuBar ...17.01.2006. u 09:19 - pre 221 meseci
Imaš gotov primer u "test" direktorijumu FLTK-ovog sors-stabla. Dakle, skini FLTK sors paket, raspakuj, i pogledaj primere iz pomenutog direktorijuma (ima ih puno).

Evo koda iz menubar.cxx fajla koji se takođe nalazi u "test" folderu:
Code:

// Use compat header for Fl_Menu_Item
#include <FL/Fl_Menu_Item.H>

#include <fltk/run.h>
#include <fltk/events.h>
#include <fltk/Output.h>
#include <fltk/Box.h>
#include <fltk/Window.h>
#include <fltk/MenuBar.h>
#include <fltk/ToggleButton.h>
#include <fltk/PopupMenu.h>
#include <fltk/Choice.h>
#include <fltk/Tooltip.h>
#include <fltk/draw.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

fltk::Window *window;

fltk::Menu* menus[4];

void test_cb(fltk::Widget* w, void*)
{
  fltk::Menu* mw = (fltk::Menu*)w;
  fltk::Widget* m = mw->item();
  if (!m)
    printf("NULL\n");
  else if (m->shortcut())
    printf("%s - %s\n", m->label(), fltk::key_name(m->shortcut()));
  else
    printf("%s\n", m->label());

  if (!strcmp("item 77", m->label())) {
    if (mw->find("button")) mw->replace("button", "Spitzak");
    else mw->replace("Spitzak", "button");
    menus[0]->redraw();
  }

  m->do_callback();
}

void quit_cb(fltk::Widget*, void*) { exit(0); }

Fl_Menu_Item hugemenu[100];

Fl_Menu_Item menutable[] = {
  {"foo",0,0,0,FL_MENU_INACTIVE},
  {"&File",0,0,0,FL_SUBMENU},
    {"&Open",    fltk::ALT+'o', 0, 0, FL_MENU_INACTIVE},
    {"&Close",    0,    0},
    {"&Quit",    fltk::ALT+'q', quit_cb, 0, fltk::MENU_DIVIDER},
    {"shortcut",'a'},
    {"shortcut",fltk::SHIFT+'a'},
    {"shortcut",fltk::CTRL+'a'},
    {"shortcut",fltk::CTRL+fltk::SHIFT+'a'},
    {"shortcut",fltk::ALT+'a'},
    {"shortcut",fltk::ALT+fltk::SHIFT+'a'},
    {"shortcut",fltk::ALT+fltk::CTRL+'a'},
    {"shortcut",fltk::ALT+fltk::SHIFT+fltk::CTRL+'a', 0,0, fltk::MENU_DIVIDER},
    {"shortcut",fltk::ReturnKey},
    {"shortcut",fltk::CTRL+fltk::ReturnKey, 0,0, fltk::MENU_DIVIDER},
    {"shortcut",fltk::F1Key},
    {"shortcut",fltk::SHIFT+fltk::F1Key},
    {"shortcut",fltk::CTRL+fltk::F1Key},
    {"shortcut",fltk::SHIFT+fltk::CTRL+fltk::F1Key},
    {"shortcut",fltk::ALT+fltk::F1Key},
    {"shortcut",fltk::ALT+fltk::SHIFT+fltk::F1Key},
    {"shortcut",fltk::ALT+fltk::CTRL+fltk::F1Key},
    {"shortcut",fltk::ALT+fltk::SHIFT+fltk::CTRL+fltk::F1Key, 0,0, fltk::MENU_DIVIDER},
    {"&Submenus", fltk::ALT+'S',    0, (void*)"Submenu1", FL_SUBMENU},
      {"A very long menu item"},
      {"&submenu",fltk::CTRL+'S',    0, (void*)"submenu2", FL_SUBMENU},
    {"item 1"},
    {"item 2"},
    {"item 3"},
    {"item 4"},
    {0},
      {"after submenu"},
      {0},
    {0},
  {"&Edit",0,0,0,FL_SUBMENU},
    {"Undo",    fltk::ALT+'z',    0},
    {"Redo",    fltk::ALT+'r',    0, 0, fltk::MENU_DIVIDER},
    {"Cut",    fltk::ALT+'x',    0},
    {"Copy",    fltk::ALT+'c',    0},
    {"Paste",    fltk::ALT+'v',    0},
    {"Inactive",fltk::ALT+'d',    0, 0, FL_MENU_INACTIVE},
    {"Clear",    0,    0, 0, fltk::MENU_DIVIDER},
    {"Invisible",fltk::ALT+'e',    0, 0, FL_MENU_INVISIBLE},
    {"Preferences",0,    0},
    {"Size",    0,    0},
    {0},
  {"&Checkbox",0,0,0,FL_SUBMENU},
    {"&Alpha",    0,    0, (void *)1, fltk::MENU_TOGGLE|FL_MENU_VALUE},
    {"&Beta",    0,    0, (void *)2, fltk::MENU_TOGGLE},
    {"&Gamma",    0,    0, (void *)3, fltk::MENU_TOGGLE},
    {"&Delta",    0,    0, (void *)4, fltk::MENU_TOGGLE|FL_MENU_VALUE},
    {"&Epsilon",0,    0, (void *)5, fltk::MENU_TOGGLE},
    {"&Pi",    0,    0, (void *)6, fltk::MENU_TOGGLE},
    {"&Mu",    0,    0, (void *)7, fltk::MENU_TOGGLE|fltk::MENU_DIVIDER},
    {"Red",    0,    0, (void *)1, fltk::MENU_TOGGLE},
    {"Black",    0,    0, (void *)1, fltk::MENU_TOGGLE|fltk::MENU_DIVIDER},
    {"00",    0,    0, (void *)1, fltk::MENU_TOGGLE},
    {"000",    0,    0, (void *)1, fltk::MENU_TOGGLE},
    {0},
  {"&Radio",0,0,0,FL_SUBMENU},
    {"&Alpha",    0,    0, (void *)1, fltk::MENU_RADIO},
    {"&Beta",    0,    0, (void *)2, fltk::MENU_RADIO},
    {"&Gamma",    0,    0, (void *)3, fltk::MENU_RADIO},
    {"&Delta",    0,    0, (void *)4, fltk::MENU_RADIO|FL_MENU_VALUE},
    {"&Epsilon",0,    0, (void *)5, fltk::MENU_RADIO},
    {"&Pi",    0,    0, (void *)6, fltk::MENU_RADIO},
    {"&Mu",    0,    0, (void *)7, fltk::MENU_RADIO|fltk::MENU_DIVIDER},
    {"Red",    0,    0, (void *)1, fltk::MENU_RADIO},
    {"Black",    0,    0, (void *)1, fltk::MENU_RADIO|fltk::MENU_DIVIDER},
    {"00",    0,    0, (void *)1, fltk::MENU_RADIO},
    {"000",    0,    0, (void *)1, fltk::MENU_RADIO},
    {0},
  {"&Font",0,0,0,FL_SUBMENU},
    {"Normal",    0, 0},
    {"Bold",    0, 0},
    {"Italic",    0, 0},
    {"BoldItalic",0,0},
    {"Small",    0, 0},
    {"Large",    0, 0},
    {"Emboss",    0, 0},
    {"Engrave",    0, 0},
    {"Shadow",    0, 0},
    {"@->",    0, 0},
    {0},
  {"E&mpty",0,0,0,FL_SUBMENU},
    {0},
  {"&Inactive", 0,    0, 0, FL_MENU_INACTIVE|FL_SUBMENU},
    {"A very long menu item"},
    {"A very long menu item"},
    {0},
  {"Invisible",0,    0, 0, FL_MENU_INVISIBLE|FL_SUBMENU},
    {"A very long menu item"},
    {"A very long menu item"},
    {0},
  {"&Huge", 0, 0, (void*)hugemenu, FL_SUBMENU_POINTER},
  {"button",0, 0, 0, fltk::MENU_TOGGLE},
  {0}
};

Fl_Menu_Item pulldown[] = {
  {"Red",    fltk::ALT+'r'},
  {"Green",    fltk::ALT+'g'},
  {"Blue",    fltk::ALT+'b'},
  {"Strange",    fltk::ALT+'s'},
  {"&Charm",    fltk::ALT+'c'},
  {"Truth",    fltk::ALT+'t'},
  {"Beauty",    fltk::ALT+'b'},
  {0}
};

#define WIDTH 600
#define HEIGHT 22 //30 // use 25 for better Windoze look

int main(int argc, char **argv)
{
  for (int i=0; i<99; i++) {
    char buf[100];
    sprintf(buf,"item %d",i);
    hugemenu[i].text = strdup(buf);
  }

  fltk::Window window(WIDTH,400);
  window.color(fltk::WHITE);
  window.tooltip("Press right button\nfor a pop-up menu");
  window.begin();

  fltk::MenuBar menubar(0,0,WIDTH,HEIGHT); menubar.menu(menutable);
  menubar.find("&Font/Normal")->labelfont(fltk::HELVETICA);
  menubar.find("&Font/Bold")->labelfont(fltk::HELVETICA_BOLD);
  menubar.find("&Font/Italic")->labelfont(fltk::HELVETICA_ITALIC);
  menubar.find("&Font/BoldItalic")->labelfont(fltk::HELVETICA_BOLD_ITALIC);
  menubar.find("&Font/Small")->labelsize(10);
  menubar.find("&Font/Large")->labelsize(24);
  menubar.find("&Font/Emboss")->labeltype(fltk::EMBOSSED_LABEL);
  menubar.find("&Font/Engrave")->labeltype(fltk::ENGRAVED_LABEL);
  menubar.find("&Font/Shadow")->labeltype(fltk::SHADOW_LABEL);
  menubar.find("&Font/@->")->labeltype(fltk::SYMBOL_LABEL);
  menubar.find("&Checkbox/Red")->labelcolor(fltk::RED); // label text red
  menubar.find("&Checkbox/Red")->selection_textcolor(fltk::RED); // label text red when selected
  menubar.find("&Checkbox/Red")->textcolor(fltk::RED); // check mark red
  menubar.find("&Checkbox/Black")->labelcolor(fltk::BLACK);
  menubar.find("&Checkbox/Black")->selection_textcolor(fltk::BLACK);
  menubar.find("&Checkbox/Black")->textcolor(fltk::BLACK);
  menubar.find("&Radio/Red")->labelcolor(fltk::RED);
  menubar.find("&Radio/Red")->selection_textcolor(fltk::RED);
  menubar.find("&Radio/Red")->textcolor(fltk::RED);
  menubar.find("&Radio/Black")->labelcolor(fltk::BLACK);
  menubar.find("&Radio/Black")->selection_textcolor(fltk::BLACK);
  menubar.find("&Radio/Black")->textcolor(fltk::BLACK);
  //menubar.find("&Huge/item 69")->deactivate();
  menubar.callback(test_cb);
  menubar.tooltip("This is a menu bar");
  menus[0] = &menubar;

  fltk::PopupMenu mb1(100,100,120,25,"&menubutton"); mb1.menu(pulldown);
  mb1.callback(test_cb);
  mb1.tooltip("This is a menu button");
  menus[1] = &mb1;

  fltk::Choice ch(300,100,90,25,"&choice:"); ch.menu(pulldown);
  ch.callback(test_cb);
  ch.tooltip("This is a choice");
  menus[2] = &ch;

  fltk::PopupMenu mb(0,25,WIDTH,400-HEIGHT/*,"&popup"*/);
  mb.type(fltk::PopupMenu::POPUP3);
  mb.menu(menutable);
  mb.callback(test_cb);
  menus[3] = &mb;

  window.resizable(&mb);
  window.size_range(300,20);
  window.end();
  window.show(argc, argv);

  return fltk::run();
}


Ovo sve može i drugačije da se odradi...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

dado_k
Varaždin

Član broj: 57122
Poruke: 300
*.cmu.carnet.hr.

ICQ: 326865106
Sajt: radim baš novi sajt u ph..


Profil

icon Re: FLTK menuBar ...18.01.2006. u 17:46 - pre 221 meseci
da ali vidi ovo...

Code:
#include <fltk/Window.h>
#include <fltk/Widget.h>
#include <fltk/run.h>
#include <fltk/MenuBar.h>
using namespace fltk;

class prozor{
      public:
      int glavni();
      void oprogramu();
      };
      

int main(int argc, char **argv) {
    prozor wp;
    wp.glavni();
return 0;
}

int prozor::glavni(){
      Window *wp = new Window(300, 180);
      wp->begin();
      wp->resizable(wp);
       MenuBar* m = new MenuBar(0, 0, 512, 25);
       
    m->add("&File/&New File");
    m->add("&File/&Open File...");
    m->add("&File/_&Insert File...");
    m->add("&File/&Save File");
    
      wp->end();
      wp->show();
      return run();
      }

ovo dodaje menubar ali ne onakav kakav bi ja želio...
ovo ne spušta dolje dropdown meni već samo stavlja gore tipke...
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: FLTK menuBar ...19.01.2006. u 09:00 - pre 221 meseci
Proslo je dve godine odkada nisam koristio FLTK, ali ne bi trebao da imas neke posebne probleme.
FLTK ima sasvim solidnu dokumentaciju, pa ces se sigurno snaci. Evo danas sam ponovo instalirao FLTK i napravio kraci primer pomocu Fluida-a.
Ako radis sa Dev-Cpp skini DevPak od leke FLTK.NET

Test.h
Code:

// Dev-Cpp 4.9.9.2 with Mingw/GCC 3.4.2 + DevPak za FLTK + Fluid
// DevPak mozes skinuti sa lekinog sajta: http://www.fltk.net/files/devpak/FLTK1.DevPak

// generated by Fast Light User Interface Designer (fluid) version 1.0106

#ifndef Test_h
#define Test_h
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <stdlib.h>
#include <FL/Fl_Menu_Bar.H>
#include <FL/filename.H>
#include <FL/fl_ask.H>

class UserInterface {
public:
  Fl_Double_Window* make_window();
  Fl_Menu_Bar *mymenu;
  static Fl_Menu_Item menu_mymenu[];
  static Fl_Menu_Item *m_file;
  static Fl_Menu_Item *m_open;
private:
  inline void cb_m_open_i(Fl_Menu_*, void*);
  static void cb_m_open(Fl_Menu_*, void*);
public:
  static Fl_Menu_Item *m_exit;
private:
  inline void cb_m_exit_i(Fl_Menu_*, void*);
  static void cb_m_exit(Fl_Menu_*, void*);
public:
  static Fl_Menu_Item *m_help;
  static Fl_Menu_Item *m_mhelp;
private:
  inline void cb_m_mhelp_i(Fl_Menu_*, void*);
  static void cb_m_mhelp(Fl_Menu_*, void*);
};
int main(int argc, char *argv[]);
#endif

Test.cpp
Code:

// generated by Fast Light User Interface Designer (fluid) version 1.0106

#include "Test.h"

inline void UserInterface::cb_m_open_i(Fl_Menu_*, void*) {
  fl_message("Ovde treba kod za otvaranjer fajle,\nimas u dokumentaciji kako se to radi...");
}
void UserInterface::cb_m_open(Fl_Menu_* o, void* v) {
  ((UserInterface*)(o->parent()->user_data()))->cb_m_open_i(o,v);
}

inline void UserInterface::cb_m_exit_i(Fl_Menu_*, void*) {
  exit(0);
}
void UserInterface::cb_m_exit(Fl_Menu_* o, void* v) {
  ((UserInterface*)(o->parent()->user_data()))->cb_m_exit_i(o,v);
}

inline void UserInterface::cb_m_mhelp_i(Fl_Menu_*, void*) {
  fl_message("Pomagajte drugovi...");
}
void UserInterface::cb_m_mhelp(Fl_Menu_* o, void* v) {
  ((UserInterface*)(o->parent()->user_data()))->cb_m_mhelp_i(o,v);
}

Fl_Menu_Item UserInterface::menu_mymenu[] = {
 {"File", 0,  0, 0, 64, 0, 0, 14, 56},
 {"Open", 0,  (Fl_Callback*)UserInterface::cb_m_open, 0, 0, 0, 0, 14, 56},
 {"Exit", 0,  (Fl_Callback*)UserInterface::cb_m_exit, 0, 0, 0, 0, 14, 56},
 {0,0,0,0,0,0,0,0,0},
 {"Help", 0,  0, 0, 64, 0, 0, 14, 56},
 {"Help", 0,  (Fl_Callback*)UserInterface::cb_m_mhelp, 0, 0, 0, 0, 14, 56},
 {0,0,0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0,0,0}
};
Fl_Menu_Item* UserInterface::m_file = UserInterface::menu_mymenu + 0;
Fl_Menu_Item* UserInterface::m_open = UserInterface::menu_mymenu + 1;
Fl_Menu_Item* UserInterface::m_exit = UserInterface::menu_mymenu + 2;
Fl_Menu_Item* UserInterface::m_help = UserInterface::menu_mymenu + 4;
Fl_Menu_Item* UserInterface::m_mhelp = UserInterface::menu_mymenu + 5;

Fl_Double_Window* UserInterface::make_window() {
  Fl_Double_Window* w;
  { Fl_Double_Window* o = new Fl_Double_Window(243, 204, "My Window");
    w = o;
    o->box(FL_BORDER_BOX);
    o->user_data((void*)(this));
    { Fl_Menu_Bar* o = mymenu = new Fl_Menu_Bar(0, -5, 245, 25);
      o->menu(menu_mymenu);
    }
    o->show();
    o->end();
  }
  return w;
}

int main(int argc, char *argv[]) {
  UserInterface window;
    window.make_window();
    return Fl::run();
}

Koristi Fluid, jer olaksava rad....
 
Odgovor na temu

dado_k
Varaždin

Član broj: 57122
Poruke: 300
*.cmu.carnet.hr.

ICQ: 326865106
Sajt: radim baš novi sajt u ph..


Profil

icon Re: FLTK menuBar ...19.01.2006. u 13:16 - pre 221 meseci
da alito je primjer za 1.0 radi li to na 2?
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: FLTK menuBar ...19.01.2006. u 15:23 - pre 221 meseci
Citat:
da alito je primjer za 1.0 radi li to na 2?

Nece moci, ali...
Posto ja volim FLTK, skinuo sam FLTK2 i instalirao da vidim promene...
Ima nekih promen, i svidja mi se i dalje.
Evo ti istovetna verzija samo za FLTK2

Test2.h
Code:

// Dev-Cpp 4.9.9.2 with Mingw/GCC 3.4.2 + DevPak za FLTK + Fluid
// DevPak mozes skinuti sa lekinog sajta: http://www.fltk.net/files/devpak/FLTK1.DevPak
// prvo instaliraj: http://devpak.nu6.org/libpthread/libpthread-2.7.0.DevPak
// generated by Fast Light User Interface Designer (fluid) version 2.0100
#ifndef Test2_h
#define Test2_h
#include <fltk/Window.h>
#include <stdlib.h>
#include <fltk/MenuBar.h>
#include <fltk/ItemGroup.h>
#include <fltk/Item.h>
#include <fltk/ask.h>

class UserInterface  {
public:
  fltk::Window* make_window();
    fltk::MenuBar *mMenu;
      fltk::ItemGroup *m_file;
        fltk::Item *m_mOpen;
private:
        inline void cb_m_mOpen_i(fltk::Item*, void*);
        static void cb_m_mOpen(fltk::Item*, void*);
public:
        fltk::Item *m_mExit;
private:
        inline void cb_m_mExit_i(fltk::Item*, void*);
        static void cb_m_mExit(fltk::Item*, void*);
public:
      fltk::ItemGroup *m_help;
        fltk::Item *m_mHelp;
private:
        inline void cb_m_mHelp_i(fltk::Item*, void*);
        static void cb_m_mHelp(fltk::Item*, void*);
};
#endif


Test2.cxx
Code:

// generated by Fast Light User Interface Designer (fluid) version 2.0100
#include "Test2.h"

inline void UserInterface::cb_m_mOpen_i(fltk::Item*, void*) {
  fltk::message("Ovde treba kod za otvaranjer fajle,\nimas u dokumentaciji kako se to radi...");
}
void UserInterface::cb_m_mOpen(fltk::Item* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_m_mOpen_i(o,v);
}

inline void UserInterface::cb_m_mExit_i(fltk::Item*, void*) {
  exit(0);
}
void UserInterface::cb_m_mExit(fltk::Item* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_m_mExit_i(o,v);
}

inline void UserInterface::cb_m_mHelp_i(fltk::Item*, void*) {
  fltk::message("Pomagajte drugovi...");
}
void UserInterface::cb_m_mHelp(fltk::Item* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_m_mHelp_i(o,v);
}

fltk::Window* UserInterface::make_window() {
  fltk::Window* w;
   {fltk::Window* o = new fltk::Window(260, 174, "Test: FLTK 2");
    w = o;
    o->box(fltk::EMBOSSED_BOX);
    o->user_data((void*)(this));
    o->begin();
     {fltk::MenuBar* o = mMenu = new fltk::MenuBar(2, 2, 179, 19);
      o->begin();
       {fltk::ItemGroup* o = m_file = new fltk::ItemGroup("File");
        o->color((fltk::Color)0xe1e1e100);
        o->begin();
         {fltk::Item* o = m_mOpen = new fltk::Item("Open");
          o->callback((fltk::Callback*)cb_m_mOpen);
        }
         {fltk::Item* o = m_mExit = new fltk::Item("Exit");
          o->callback((fltk::Callback*)cb_m_mExit);
        }
        o->end();
      }
       {fltk::ItemGroup* o = m_help = new fltk::ItemGroup("Help");
        o->color((fltk::Color)0xe1e1e100);
        o->begin();
         {fltk::Item* o = m_mHelp = new fltk::Item("Upomoc");
          o->callback((fltk::Callback*)cb_m_mHelp);
        }
        o->end();
      }
      o->end();
    }
    o->end();
    o->show();
  }
  return  w;
}

#include <fltk/run.h>

int main (int argc, char **argv) {

  UserInterface window;
  window.make_window();
  return  fltk::run();
}

Uzivaj... evo i mala slicica..




[Ovu poruku je menjao idb dana 19.01.2006. u 16:26 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

[es] :: C/C++ programiranje :: FLTK menuBar ...

[ Pregleda: 3309 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.