Combo-box with scrollbar as the COMBO-BOX in LibreOffice that have in the list of FONTS



COMBOBOX  with  SCROLLBAR



Excuse  me   for  my question  .................... I am creating a
combo-box with scrollbar with GTK 3.0 and VALA (gtk) ......... .as  the
 COMBO-BOX  in   LibreOffice that have  in the   list of FONTS ..........
 GTK  3.0   have  not a  COMBO-BOX   with scrollbar ................... You
.. I could give an example of  CODE written in GTK 3.0 or VALA (gtk) or a
 PyGtk  3.0 . a example     COMBO-BOX with SCROLLBAR ......... or spend a
link of  a  website  ,  where I can get an example   of  COMBO-BOX with
SCROLLBAR    ....

I wrote an in GTK 3.0 widgets.

If .  I  active   a    POPUP WINDOW   (POPUP WINDOW=MENU ) with a
TOGGLEBUTTON... when you clicked the button to close the window.

1). First   . The  TOGGLEBUTTON is   off    .  the  POPUP WINDOW   is
hidden .
2) Then recently .  I can close the window.
To here   all works fine.


But I can not do the same with the buttons on the maximize and minimize
WINDOW ...... I must achieve the same effect as the widgets  ,   POPUP MENU
 and   COMBO-BOX  ,   with  these events .


If I  you   can help , I'll be grateful  .

When  , you  have a  time. you can constestarme.

Best   regards   . Mariano.



I show  .  the code I've written in GTK 3.0.


///////////////////////////////////////////////////////


#include <gtk/gtk.h>


enum
{
   LIST_ITEM = 0,
   N_COLUMNS
};




static void  init_list(GtkWidget *list)

{

   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
   GtkListStore *store;

   renderer = gtk_cell_renderer_text_new();
   column = gtk_tree_view_column_new_with_attributes("List Items",
          renderer, "text", LIST_ITEM, NULL);
   gtk_tree_view_append_column(GTK_TREE_VIEW(list), column);

   store = gtk_list_store_new(N_COLUMNS, G_TYPE_STRING);

   gtk_tree_view_set_model(GTK_TREE_VIEW(list),
       GTK_TREE_MODEL(store));

   g_object_unref(store);

}




static void  add_to_list(GtkWidget *list, const gchar *str)

{
   GtkListStore *store;
   GtkTreeIter iter;

   store = GTK_LIST_STORE(gtk_tree_view_get_model
       (GTK_TREE_VIEW(list)));

   gtk_list_store_append(store, &iter);
   gtk_list_store_set(store, &iter, LIST_ITEM, str, -1);
}





////////////////////////////////
////////////////////////////////////////////


static void clicked1(GtkWindow *window, GdkEventButton *event, gpointer
buttonf)
{

   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);


}



static void loc1(GtkWindow *window, GdkEventButton *event, gpointer buttonf)

{


   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);


}




static void ponja2(GtkWindow *window, GdkEventButton *event, gpointer
buttonf)

{

    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(buttonf),FALSE);

}


/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////



void activado(GtkWidget *widget, gpointer window3)
{

  if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))

{


      gtk_widget_hide(window3);
      gtk_widget_show_all(window3);

 }

    else {

      gtk_window_iconify (GTK_WINDOW (window3) );
      gtk_widget_hide(window3);

  }


}




///////////////////////////////////////////////////////////////////////




void ventana_p(GtkWindow *window, GdkEvent *event, gpointer window3 )

{

   int x, y;
   char buf[10];
   x = event->configure.x;
   y = event->configure.y;
   sprintf(buf, "%d, %d", x, y);
   gtk_window_set_title(window3, buf);
   gtk_window_move ( GTK_WINDOW(window3), x+30, y+35 );



}

//////////////////////////////////////////////////////////////////////////


int main(int argc, char *argv[])

    {

    GtkWidget *window;
    GtkWidget *vbox2 ;
    GtkWidget *vbox11;
    GtkWidget *fixed;
    GtkWidget *buttonf;


    GtkWidget *vboxtext;
    GtkWidget *viewarea;

    GtkWidget *textview;
    GtkTextBuffer *buffer;




    GtkWidget *window3;
    GtkWidget *vboxw;
    GtkWidget *vboxs;
    GtkWidget *scrolled_window ;


    GtkWidget *list;
    GtkTreeSelection *selection;
    GtkWidget *label;




    gtk_init(&argc, &argv);





////////////////////////////// Ventana Popup  / Window Popup
 ///////////////////////////////


    window3 = gtk_window_new(GTK_WINDOW_POPUP);






    gtk_window_set_title(GTK_WINDOW(window3), "enter signal");
    gtk_widget_hide(window3);




    vboxw = gtk_hbox_new(FALSE, 0);

    gtk_container_set_border_width (GTK_CONTAINER (vboxw), 3);
    gtk_container_add(GTK_CONTAINER(window3), vboxw);
    gtk_widget_show (vboxw);


  /* This is the scrolled window to put the List widget inside */
    scrolled_window=gtk_scrolled_window_new(NULL, NULL);



    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
                                         GTK_POLICY_AUTOMATIC,
                 GTK_POLICY_AUTOMATIC);


    gtk_widget_set_size_request(scrolled_window,120, 300);



    gtk_box_pack_start(GTK_BOX(vboxw), scrolled_window , FALSE, FALSE, 0);

    gtk_widget_show(scrolled_window);





 //////////  ..............CONTENIDO  DE  NOTEBOOK  .........//////




    vboxs = gtk_vbox_new(FALSE, 0);



    gtk_scrolled_window_add_with_viewport(
GTK_SCROLLED_WINDOW(scrolled_window),vboxs);



    list = gtk_tree_view_new();
    gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list), FALSE);

    gtk_box_pack_start(GTK_BOX(vboxs), list, TRUE, TRUE, 0);



    init_list(list);
    add_to_list(list, "Ubuntu");
    add_to_list(list, "Mandriva");
    add_to_list(list, "Fedora");
    add_to_list(list, "Debian");
    add_to_list(list, "Linux MInt");
    add_to_list(list, "Tuquito");
    add_to_list(list, "Pupix");
    add_to_list(list, "Open Suse");
    add_to_list(list, "Kubuntu");
    add_to_list(list, "Xubuntu");

    add_to_list(list, "Trisquel");
    add_to_list(list, "Zorin");
    add_to_list(list, "Mageia");
    add_to_list(list, "Cebt OS");
    add_to_list(list, "Pardus");
    add_to_list(list, "Sabayon");


////////////////////////////////////////////////////////////////////////
///////////////////////// Ventana  Principal  //////////////////////


    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 530, 550);
    gtk_window_set_title(GTK_WINDOW(window), "Simple");


    gtk_window_set_transient_for(GTK_WINDOW (window3),GTK_WINDOW (window));




    gtk_widget_add_events(GTK_WIDGET(window), GDK_BUTTON_PRESS_MASK );

    gtk_widget_add_events(GTK_WIDGET(window),GDK_CONFIGURE );

    gtk_widget_add_events(GTK_WIDGET(window),GDK_FOCUS_CHANGE_MASK );



    gtk_widget_grab_focus (window);




    vbox2 =gtk_vbox_new(FALSE, 0);
    gtk_widget_show_all(vbox2);
    gtk_container_add(GTK_CONTAINER(window), vbox2);




    vbox11 = gtk_vbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox2), vbox11  , FALSE, FALSE, 0);


    fixed = gtk_fixed_new();

    gtk_container_add(GTK_CONTAINER(vbox11), fixed);



    buttonf = gtk_toggle_button_new_with_label("Buttonf");



    gtk_widget_set_size_request(buttonf, 80, 35);
    gtk_fixed_put(GTK_FIXED(fixed), buttonf, 30, 0);





//////////////////////////////  TEXTO
///////////////////////////////////////////////

    vboxtext = gtk_vbox_new(FALSE, 0);


    gtk_container_add(GTK_CONTAINER(vbox2), vboxtext);

    gtk_widget_set_size_request(vboxtext, 400, 400);

    viewarea=gtk_scrolled_window_new(NULL,NULL);
    gtk_box_pack_start(GTK_BOX(vboxtext),viewarea,TRUE,TRUE,0);
    gtk_widget_show(viewarea);




    textview = gtk_text_view_new();


    gtk_container_set_border_width(GTK_CONTAINER(   textview), 0);


    gtk_container_add(GTK_CONTAINER(viewarea),   textview);

    gtk_container_set_border_width(GTK_CONTAINER(viewarea), 2);



    gtk_widget_grab_focus(   textview);


    buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( textview));



//////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// llamada  de   ventana
////////////////////////////////

    g_signal_connect_swapped(window, "destroy",G_CALLBACK(gtk_main_quit),
window);


////////////////////////  toggle  button llamadas /////////////////////


    g_signal_connect(G_OBJECT(window), "configure-event",
G_CALLBACK(ventana_p),window3);



    g_signal_connect(buttonf, "toggled",  G_CALLBACK(activado),  window3);



    g_signal_connect(G_OBJECT(window), "button-press-event",
G_CALLBACK(ponja2), buttonf);



    g_signal_connect(G_OBJECT(window), "focus-out-event", G_CALLBACK(loc1),
buttonf );



    g_signal_connect (window, "delete_event", G_CALLBACK (clicked1),
buttonf);



    gtk_widget_show_all(window);


    gtk_main();



    return 0;



}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




http://fotos.subefotos.com/99fc8a169bccf1ec0d64e6f20f28bceao.png


http://fotos.subefotos.com/2bc5cf1b09be61059294ea212bf6f5d8o.png



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]