Pages : 1
#1 Le 23/08/2008, à 22:10
- tiky
Gtk::Button et Gtk::Notebook
Bonsoir, j'ai un problème sur une interface graphique en gtkmm. Je voudrais rajouter des boutons de fermeture sur les onglets d'un notebook ( comme dans gnome-terminal par exemple ) mais je ne parviens pas à obtenir le même rendu.
Je voudrais retirer le cadre bleu qui montre la page courante, réduire la taille du bouton au minimum et retirer l'espace entre l'image et le bord du bouton ( set_border_width n'a aucun effet ). Enfin arranger le focus.
Voici le code actuel:
Gtk::HBox * p_tab = manage( new Gtk::HBox );
Gtk::Label * p_tabLabel = manage( new Gtk::Label( name ) );
p_tab->pack_start( *p_tabLabel, true, true, 0 );
Gtk::Button * p_closeButton = manage( new Gtk::Button() );
Gtk::Image * p_closeImage = manage( new Gtk::Image::Image( Gtk::Stock::CLOSE,
Gtk::IconSize( Gtk::ICON_SIZE_MENU ) ) );
p_closeButton->add( *p_closeImage );
p_closeButton->set_size_request( 20, 20 );
p_closeButton->signal_clicked().connect( sigc::mem_fun( *this,
&MainWindow::on_action_close_diagram ) );
p_tab->pack_start( *p_closeButton, true, true, 0 );
m_Notebook.append_page( *pScrolledWindow, *p_tab );
Merci de votre aide.
Dernière modification par tiky (Le 23/08/2008, à 22:11)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#2 Le 23/08/2008, à 22:15
- rniamo
Re : Gtk::Button et Gtk::Notebook
le screen est out
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#3 Le 23/08/2008, à 22:17
- tiky
Re : Gtk::Button et Gtk::Notebook
le screen est out
Il marche chez moi !
Dernière modification par tiky (Le 23/08/2008, à 22:21)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#4 Le 23/08/2008, à 22:20
- rniamo
Re : Gtk::Button et Gtk::Notebook
pas ici. Bon je suppose que ton problème est que tu n'as pas enlevé le relief du bouton (cherche RELIEF_NONE)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#5 Le 23/08/2008, à 22:26
- tiky
Re : Gtk::Button et Gtk::Notebook
RELIEF_NONE retire le problème avec le focus, merci mais il reste les deux autres.
NB: Ce screen date d'avant la correction avec RELIEF_NONE.
Dernière modification par tiky (Le 23/08/2008, à 22:26)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#6 Le 23/08/2008, à 22:28
- rniamo
Re : Gtk::Button et Gtk::Notebook
là je le vois, merci.
pour le cadre bleu ça doit être une fonctionset_active ou quelquechose comme ça. Pour la taille diminue la taille du stock.
edit :
void set_show_border (bool show_border=true)
Sets whether a bevel will be drawn around the notebook pages.
Dernière modification par rniamo (Le 23/08/2008, à 22:34)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#7 Le 23/08/2008, à 22:36
- tiky
Re : Gtk::Button et Gtk::Notebook
Le problème n'est pas la taille de l'icône mais l'espace entre elle et les bords du bouton ( il n'y a pas d'espace dans gnome-terminal et l'icône fait la même taille ). Il n'y a pas de set_active.
Edit:
J'ai déjà essayé set_show_border, sans résultat.
Dernière modification par tiky (Le 23/08/2008, à 22:37)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#8 Le 23/08/2008, à 22:38
- rniamo
Re : Gtk::Button et Gtk::Notebook
le problème est la taille du bouton => de l'image => du stock, non ?
t'as un mini-code compilable vite fait ?
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#9 Le 23/08/2008, à 22:45
- tiky
Re : Gtk::Button et Gtk::Notebook
J'ai pas de mini-code, le projet est tout récent mais il est déjà divisé en plusieurs fichiers. Le problème vient pas de la taille du stock.
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#10 Le 23/08/2008, à 22:51
- tiky
Re : Gtk::Button et Gtk::Notebook
#include <gtkmm.h>
#include <iostream>
int main( int argc, char ** argv )
{
Gtk::Main kit( argc, argv );
Gtk::Window mw;
Gtk::Notebook m_Notebook;
Gtk::HBox * p_tab = manage( new Gtk::HBox );
Gtk::Label * p_tabLabel = manage( new Gtk::Label( name ) );
p_tab->pack_start( *p_tabLabel, true, true, 0 );
Gtk::Button * p_closeButton = manage( new Gtk::Button() );
Gtk::Image * p_closeImage = manage( new Gtk::Image::Image( Gtk::Stock::CLOSE,
Gtk::IconSize( Gtk::ICON_SIZE_MENU ) ) );
p_closeButton->add( *p_closeImage );
p_closeButton->set_size_request( 20, 20 );
Gtk::Label * p_Widget = manage( new Gtk::Label( "test" ) );
m_Notebook.append_page( *p_Widget, *p_tab );
mw.add( m_Notebook );
mw.show_all_children();
Gtk::Main::run( mw );
return 0;
}
Nb: J'ai pas compilé ce code, il va sûrement nécessité des petites corrections.
Dernière modification par tiky (Le 23/08/2008, à 22:53)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#11 Le 23/08/2008, à 22:54
- rniamo
Re : Gtk::Button et Gtk::Notebook
si t'as pas trouvé je regarde demain (je n'ai plus de batterie)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#12 Le 24/08/2008, à 10:36
- rniamo
Re : Gtk::Button et Gtk::Notebook
NB : j'ai mis des images dans les onglets.
Je pense que t'as besoin que de ça :
Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU,larg,haut);
close_button.set_size_request(larg+4,haut);
code complet :
#include <gtkmm.h>
#include <iostream>
using namespace Gtk;
int main( int argc, char ** argv )
{
Main kit( argc, argv );
Window mw;
Glib::ustring name1("tab 1");
Glib::ustring name2("tab 2");
Image l("DSC00826.JPG");
Image l2("DSC00825.JPG");
Notebook m_Notebook;
// widget du tab_label
HBox hbox(false,0);
Label label(name1);
label.set_alignment(0.0,0.5);
label.set_padding(0,0);
label.set_ellipsize(Pango::ELLIPSIZE_END);
label.set_single_line_mode(true);
hbox.pack_start(label);
Button close_button;
Image image(Gtk::Stock::CLOSE,Gtk::ICON_SIZE_MENU);
int larg=0,haut=0;
close_button.add(image);
close_button.set_alignment(0.5,0.5);
close_button.set_focus_on_click(false);
close_button.set_relief(Gtk::RELIEF_NONE);
close_button.set_tooltip_text("Close tab");
Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU,larg,haut);
close_button.set_size_request(larg+4,haut);
hbox.pack_start(close_button,false,false,0);
// ajout au notebook
m_Notebook.append_page(l,hbox);
m_Notebook.set_tab_label_packing(l,true,true,PACK_START);
hbox.show_all();
// 2eme onglet
HBox hbox2(false,0);
Label label2(name2);
label2.set_alignment(0.0,0.5);
label2.set_padding(0,0);
label2.set_ellipsize(Pango::ELLIPSIZE_END);
label2.set_single_line_mode(true);
hbox2.pack_start(label2);
Button close_button2;
Image image2(Gtk::Stock::CLOSE,Gtk::ICON_SIZE_MENU);
close_button2.add(image2);
close_button2.set_alignment(0.5,0.5);
close_button2.set_focus_on_click(false);
close_button2.set_relief(Gtk::RELIEF_NONE);
close_button2.set_tooltip_text("Close tab");
Gtk::IconSize::lookup(Gtk::ICON_SIZE_MENU,larg,haut);
close_button2.set_size_request(larg+4,haut);
hbox2.pack_start(close_button2,false,false,0);
// ajout au notebook
m_Notebook.append_page(l2,hbox2);
m_Notebook.set_tab_label_packing(l2,true,true,PACK_START);
hbox2.show_all();
mw.add(m_Notebook);
mw.show_all();
Main::run( mw );
return EXIT_SUCCESS;
}
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#13 Le 25/08/2008, à 01:00
- tiky
Re : Gtk::Button et Gtk::Notebook
J'ai trouvé la solution ici http://coding.debuntu.org/python-gtk-how-customize-size-button-notebook-tab-label ! Merci de ton aide
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
Pages : 1