Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

J'obtiens ceci: capturelancelothe1.th.png

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

rniamo a écrit :

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 smile mais il reste les deux autres.

Je reposte le screen:
image_731_capturelancelothe1.png

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 smile


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne