Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  testcombo.c

  Sprache: C
 

/* testcombo.c
 * Copyright (C) 2003  Kristian Rietveld
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 */

#include <gtk/gtk.h>

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

G_GNUC_BEGIN_IGNORE_DEPRECATIONS

/**
 * oh yes, this test app surely has a lot of ugly code
 */


/* blaat */
static GtkTreeModel *
create_tree_blaat (void)
{
        GtkWidget *cellview;
        GtkTreeIter iter, iter2;
        GtkTreeStore *store;

        cellview = gtk_cell_view_new ();

 store = gtk_tree_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter,
                            0"dialog-warning",
                            1"dialog-warning",
       2FALSE,
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"process-stop",
                            1"process-stop",
       2FALSE,
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"document-new",
                            1"document-new",
       2FALSE,
                            -1);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter,
                            0"edit-clear",
                            1"edit-clear",
       2FALSE,
                            -1);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter,
                            0"document-open",
                            1"document-open",
       2FALSE,
                            -1);

        g_object_unref (g_object_ref_sink (cellview));

        return GTK_TREE_MODEL (store);
}

static GtkTreeModel *
create_empty_list_blaat (void)
{
        GtkWidget *cellview;
        GtkTreeIter iter;
        GtkListStore *store;

        cellview = gtk_cell_view_new ();

        store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"dialog-warning",
                            1"dialog-warning",
                            -1);

        g_object_unref (g_object_ref_sink (cellview));

        return GTK_TREE_MODEL (store);
}

static void
populate_list_blaat (gpointer data)
{
  GtkComboBox *combo_box = GTK_COMBO_BOX (data);
  GtkListStore *store;
  GtkWidget *cellview;
  GtkTreeIter iter;
  
  store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));

  gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);

  if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter))
    return;

  cellview = gtk_cell_view_new ();
  
  gtk_list_store_append (store, &iter);          
  gtk_list_store_set (store, &iter,
        0"process-stop",
        1"process-stop",
        -1);
  
  gtk_list_store_append (store, &iter);          
  gtk_list_store_set (store, &iter,
        0"document-new",
        1"document-new",
        -1);
  
  gtk_list_store_append (store, &iter);
  gtk_list_store_set (store, &iter,
        0"edit-clear",
        1"edit-clear",
        -1);
  
  gtk_list_store_append (store, &iter);
  gtk_list_store_set (store, &iter,
        0, NULL,
        1"separator",
        -1);
  
  gtk_list_store_append (store, &iter);
  gtk_list_store_set (store, &iter,
        0"document-open",
        1"document-open",
        -1);
  
  g_object_unref (g_object_ref_sink (cellview));
}

static GtkTreeModel *
create_list_blaat (void)
{
        GtkWidget *cellview;
        GtkTreeIter iter;
        GtkListStore *store;

        cellview = gtk_cell_view_new ();

        store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"dialog-warning",
                            1"dialog-warning",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"process-stop",
                            1"process-stop",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"document-new",
                            1"document-new",
                            -1);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"edit-clear",
                            1"edit-clear",
                            -1);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0, NULL,
                            1"separator",
                            -1);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"document-open",
                            1"document-open",
                            -1);

        g_object_unref (g_object_ref_sink (cellview));

        return GTK_TREE_MODEL (store);
}


static GtkTreeModel *
create_list_long (void)
{
        GtkTreeIter iter;
        GtkListStore *store;

        store = gtk_list_store_new (1, G_TYPE_STRING);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"here is some long long text that grows out of the combo's allocation",
                            -1);


        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"with at least a few of these rows",
                            -1);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"so that we can get some ellipsized text here",
                            -1);

        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"and see the combo box menu being allocated without any constraints",
                            -1);

        return GTK_TREE_MODEL (store);
}

static GtkTreeModel *
create_food_list (void)
{
        GtkTreeIter iter;
        GtkListStore *store;

        store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
        gtk_list_store_append (store, &iter);
        gtk_list_store_set (store, &iter,
                            0"Pepperoni",
                            1"Pizza",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"Cheese",
                            1"Burger",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"Pineapple",
                            1"Milkshake",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"Orange",
                            1"Soda",
                            -1);

        gtk_list_store_append (store, &iter);          
        gtk_list_store_set (store, &iter,
                            0"Club",
                            1"Sandwich",
                            -1);

        return GTK_TREE_MODEL (store);
}


/* blaat */
static GtkTreeModel *
create_phylogenetic_tree (void)
{
        GtkTreeIter iter, iter2, iter3;
        GtkTreeStore *store;

 store = gtk_tree_store_new (1,G_TYPE_STRING);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter,
                            0"Eubacteria",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Aquifecales",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Thermotogales",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Thermodesulfobacterium",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Thermus-Deinococcus group",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Chloroflecales",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Cyanobacteria",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Firmicutes",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Leptospirillium Group",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Synergistes",
                            -1);
        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Chlorobium-Flavobacteria group",
                            -1);
        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Chlamydia-Verrucomicrobia group",
                            -1);

        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"Verrucomicrobia",
                            -1);
        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"Chlamydia",
                            -1);

        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Flexistipes",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Fibrobacter group",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"spirocheteus",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Proteobacteria",
                            -1);


        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"alpha",
                            -1);


        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"beta",
                            -1);


        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"delta ",
                            -1);


        gtk_tree_store_append (store, &iter3, &iter2);          
        gtk_tree_store_set (store, &iter3,
                            0"epsilon",
                            -1);


        gtk_tree_store_append (store, &iter3, &iter2);  
        gtk_tree_store_set (store, &iter3,
                            0"gamma ",
                            -1);


        gtk_tree_store_append (store, &iter, NULL);          
        gtk_tree_store_set (store, &iter,
                            0"Eukaryotes",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Metazoa",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Bilateria",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Myxozoa",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Cnidaria",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Ctenophora",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Placozoa",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Porifera",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"choanoflagellates",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Fungi",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Microsporidia",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Aleveolates",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Stramenopiles",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Rhodophyta",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Viridaeplantae",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"crytomonads et al",
                            -1);


        gtk_tree_store_append (store, &iter, NULL);          
        gtk_tree_store_set (store, &iter,
                            0"Archaea ",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Korarchaeota",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Crenarchaeota",
                            -1);


        gtk_tree_store_append (store, &iter2, &iter);          
        gtk_tree_store_set (store, &iter2,
                            0"Buryarchaeota",
                            -1);

        return GTK_TREE_MODEL (store);
}


/* blaat */
static GtkTreeModel *
create_capital_tree (void)
{
        GtkTreeIter iter, iter2;
        GtkTreeStore *store;

 store = gtk_tree_store_new (1, G_TYPE_STRING);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"A - B", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Albany", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Annapolis", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Atlanta", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Augusta", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Austin", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Baton Rouge", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Bismarck", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Boise", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Boston", -1);

        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"C - D", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Carson City", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Charleston", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Cheyenne", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Columbia", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Columbus", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Concord", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Denver", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Des Moines", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Dover", -1);


        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"E - J", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Frankfort", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Harrisburg", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Hartford", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Helena", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Honolulu", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Indianapolis", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Jackson", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Jefferson City", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Juneau", -1);


        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"K - O", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Lansing", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Lincoln", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Little Rock", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Madison", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Montgomery", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Montpelier", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Nashville", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Oklahoma City", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Olympia", -1);


        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"P - S", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Phoenix", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Pierre", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Providence", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Raleigh", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Richmond", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Sacramento", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Salem", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Salt Lake City", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Santa Fe", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Springfield", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"St. Paul", -1);


        gtk_tree_store_append (store, &iter, NULL);
        gtk_tree_store_set (store, &iter, 0"T - Z", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Tallahassee", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Topeka", -1);

        gtk_tree_store_append (store, &iter2, &iter);
        gtk_tree_store_set (store, &iter2, 0"Trenton", -1);

        return GTK_TREE_MODEL (store);
}

static void
capital_sensitive (GtkCellLayout   *cell_layout,
     GtkCellRenderer *cell,
     GtkTreeModel    *tree_model,
     GtkTreeIter     *iter,
     gpointer         data)
{
  gboolean sensitive;

  sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);

  g_object_set (cell, "sensitive", sensitive, NULL);
}

static gboolean
capital_animation (gpointer data)
{
  static int insert_count = 0;
  GtkTreeModel *model = GTK_TREE_MODEL (data);
  GtkTreePath *path;
  GtkTreeIter iter, parent;

  switch (insert_count % 8)
    {
    case 0:
      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, NULL, 0);
      gtk_tree_store_set (GTK_TREE_STORE (model), 
     &iter,
     0"Europe", -1);
      break;

    case 1:
      path = gtk_tree_path_new_from_indices (0, -1);
      gtk_tree_model_get_iter (model, &parent, path);
      gtk_tree_path_free (path);
      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 0);
      gtk_tree_store_set (GTK_TREE_STORE (model), 
     &iter,
     0"Berlin", -1);
      break;

    case 2:
      path = gtk_tree_path_new_from_indices (0, -1);
      gtk_tree_model_get_iter (model, &parent, path);
      gtk_tree_path_free (path);
      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 1);
      gtk_tree_store_set (GTK_TREE_STORE (model), 
     &iter,
     0"London", -1);
      break;

    case 3:
      path = gtk_tree_path_new_from_indices (0, -1);
      gtk_tree_model_get_iter (model, &parent, path);
      gtk_tree_path_free (path);
      gtk_tree_store_insert (GTK_TREE_STORE (model), &iter, &parent, 2);
      gtk_tree_store_set (GTK_TREE_STORE (model), 
     &iter,
     0"Paris", -1);
      break;

    case 4:
      path = gtk_tree_path_new_from_indices (02, -1);
      gtk_tree_model_get_iter (model, &iter, path);
      gtk_tree_path_free (path);
      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
      break;

    case 5:
      path = gtk_tree_path_new_from_indices (01, -1);
      gtk_tree_model_get_iter (model, &iter, path);
      gtk_tree_path_free (path);
      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
      break;

    case 6:
      path = gtk_tree_path_new_from_indices (00, -1);
      gtk_tree_model_get_iter (model, &iter, path);
      gtk_tree_path_free (path);
      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
      break;

    case 7:
      path = gtk_tree_path_new_from_indices (0, -1);
      gtk_tree_model_get_iter (model, &iter, path);
      gtk_tree_path_free (path);
      gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
      break;

    default: ;

    }
  insert_count++;

  return G_SOURCE_CONTINUE;
}

static void
setup_combo_entry (GtkComboBoxText *combo)
{
  gtk_combo_box_text_append_text (combo,
       "dum de dum");
  gtk_combo_box_text_append_text (combo,
       "la la la");
  gtk_combo_box_text_append_text (combo,
       "la la la dum de dum la la la la la la boom de da la la");
  gtk_combo_box_text_append_text (combo,
       "bloop");
  gtk_combo_box_text_append_text (combo,
       "bleep");
  gtk_combo_box_text_append_text (combo,
       "klaas");
  gtk_combo_box_text_append_text (combo,
       "klaas0");
  gtk_combo_box_text_append_text (combo,
       "klaas1");
  gtk_combo_box_text_append_text (combo,
       "klaas2");
  gtk_combo_box_text_append_text (combo,
       "klaas3");
  gtk_combo_box_text_append_text (combo,
       "klaas4");
  gtk_combo_box_text_append_text (combo,
       "klaas5");
  gtk_combo_box_text_append_text (combo,
       "klaas6");
  gtk_combo_box_text_append_text (combo,
       "klaas7");
  gtk_combo_box_text_append_text (combo,
       "klaas8");
  gtk_combo_box_text_append_text (combo,
       "klaas9");
  gtk_combo_box_text_append_text (combo,
       "klaasa");
  gtk_combo_box_text_append_text (combo,
       "klaasb");
  gtk_combo_box_text_append_text (combo,
       "klaasc");
  gtk_combo_box_text_append_text (combo,
       "klaasd");
  gtk_combo_box_text_append_text (combo,
       "klaase");
  gtk_combo_box_text_append_text (combo,
       "klaasf");
  gtk_combo_box_text_append_text (combo,
       "klaas10");
  gtk_combo_box_text_append_text (combo,
       "klaas11");
  gtk_combo_box_text_append_text (combo,
       "klaas12");
}

static void
set_sensitive (GtkCellLayout   *cell_layout,
        GtkCellRenderer *cell,
        GtkTreeModel    *tree_model,
        GtkTreeIter     *iter,
        gpointer         data)
{
  GtkTreePath *path;
  int *indices;
  gboolean sensitive;

  path = gtk_tree_model_get_path (tree_model, iter);
  indices = gtk_tree_path_get_indices (path);
  sensitive = indices[0] != 1;
  gtk_tree_path_free (path);

  g_object_set (cell, "sensitive", sensitive, NULL);
}

static gboolean
is_separator (GtkTreeModel *model,
       GtkTreeIter  *iter,
       gpointer      data)
{
  GtkTreePath *path;
  gboolean result;

  path = gtk_tree_model_get_path (model, iter);
  result = gtk_tree_path_get_indices (path)[0] == 4;
  gtk_tree_path_free (path);

  return result;
  
}

static void
displayed_row_changed (GtkComboBox *combo,
                       GtkCellView *cell)
{
  int row;
  GtkTreePath *path;

  row = gtk_combo_box_get_active (combo);
  path = gtk_tree_path_new_from_indices (row, -1);
  gtk_cell_view_set_displayed_row (cell, path);
  gtk_tree_path_free (path);
}

static void
quit_cb (GtkWidget *widget,
         gpointer   data)
{
  gboolean *done = data;

  *done = TRUE;

  g_main_context_wakeup (NULL);
}

int
main (int argc, char **argv)
{
        GtkWidget *window, *cellview, *mainbox;
        GtkWidget *combobox, *comboboxtext;
        GtkWidget *tmp, *boom;
        GtkCellRenderer *renderer;
        GtkTreeModel *model;
 GtkTreePath *path;
 GtkTreeIter iter;
 GtkCellArea *area;
        char *text;
        int i;
        gboolean done = FALSE;
        guint capital_animation_id;

        gtk_init ();

 if (g_getenv ("RTL"))
   gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);

        window = gtk_window_new ();
        g_signal_connect (window, "destroy", G_CALLBACK (quit_cb), &done);

        mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
        gtk_window_set_child (GTK_WINDOW (window), mainbox);

        /* GtkCellView */
        tmp = gtk_frame_new ("GtkCellView");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        cellview = gtk_cell_view_new ();
        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
                                    renderer,
                                    FALSE);
        g_object_set (renderer, "icon-name""dialog-warning", NULL);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview),
                                    renderer,
                                    TRUE);
        g_object_set (renderer, "text""la la la", NULL);
        gtk_box_append (GTK_BOX (boom), cellview);

        /* GtkComboBox list */
        tmp = gtk_frame_new ("GtkComboBox (list)");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_list_blaat ();
        combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    FALSE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "icon-name"0,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"1,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);
 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
           is_separator, NULL, NULL);

        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

        /* GtkComboBox dynamic list */
        tmp = gtk_frame_new ("GtkComboBox (dynamic list)");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_empty_list_blaat ();
        combobox = gtk_combo_box_new_with_model (model);
 g_signal_connect (combobox, "notify::popup-shown"
     G_CALLBACK (populate_list_blaat), combobox);

        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    FALSE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "icon-name"0,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"1,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);
 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox),
           is_separator, NULL, NULL);

        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

        /* GtkComboBox custom entry */
        tmp = gtk_frame_new ("GtkComboBox (custom)");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_list_blaat ();
        combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    FALSE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "icon-name"0,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"1,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);
 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), 
           is_separator, NULL, NULL);
      
        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

        tmp = gtk_cell_view_new ();
        gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer,
                                        "text"1,
                                        NULL);
        displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp));
        g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp);

        gtk_combo_box_set_child (GTK_COMBO_BOX (combobox), tmp);

        /* GtkComboBox tree */
        tmp = gtk_frame_new ("GtkComboBox (tree)");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_tree_blaat ();
        combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

        renderer = gtk_cell_renderer_pixbuf_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    FALSE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "icon-name"0,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"1,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         set_sensitive,
         NULL, NULL);
 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), 
           is_separator, NULL, NULL);
      
        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

        /* GtkComboBox (grid mode) */
        tmp = gtk_frame_new ("GtkComboBox (grid mode)");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);


        /* GtkComboBoxEntry */
        tmp = gtk_frame_new ("GtkComboBox with entry");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        comboboxtext = gtk_combo_box_text_new_with_entry ();
        setup_combo_entry (GTK_COMBO_BOX_TEXT (comboboxtext));
        gtk_box_append (GTK_BOX (boom), comboboxtext);


        /* Phylogenetic tree */
        tmp = gtk_frame_new ("What are you ?");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_phylogenetic_tree ();
        combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"0,
                                        NULL);

        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

        /* Capitals */
        tmp = gtk_frame_new ("Where are you ?");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_capital_tree ();
 combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);
        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
                                    renderer,
                                    TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"0,
                                        NULL);
 gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox),
         renderer,
         capital_sensitive,
         NULL, NULL);
 path = gtk_tree_path_new_from_indices (08, -1);
 gtk_tree_model_get_iter (model, &iter, path);
 gtk_tree_path_free (path);
        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter);

 capital_animation_id = g_timeout_add (1000, (GSourceFunc) capital_animation, model);

        /* Aligned Food */
        tmp = gtk_frame_new ("Hungry ?");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

        model = create_food_list ();
 combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);

 area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox));

        renderer = gtk_cell_renderer_text_new ();
 gtk_cell_area_add_with_properties (area, renderer, 
        "align"TRUE
        "expand"TRUE
        NULL);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"0,
                                        NULL);

        renderer = gtk_cell_renderer_text_new ();
 gtk_cell_area_add_with_properties (area, renderer, 
        "align"TRUE
        "expand"TRUE
        NULL);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"1,
                                        NULL);

        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);

 /* Ellipsizing growing combos */
        tmp = gtk_frame_new ("Unconstrained Menu");
        gtk_box_append (GTK_BOX (mainbox), tmp);

        boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_frame_set_child (GTK_FRAME (tmp), boom);

 model = create_list_long ();
 combobox = gtk_combo_box_new_with_model (model);
        g_object_unref (model);
        gtk_box_append (GTK_BOX (boom), combobox);
        renderer = gtk_cell_renderer_text_new ();
 g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);

        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE);
        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
                                        "text"0, NULL);
        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0);
 gtk_combo_box_set_popup_fixed_width (GTK_COMBO_BOX (combobox), FALSE);

        tmp = gtk_frame_new ("Looong");
        gtk_box_append (GTK_BOX (mainbox), tmp);
        combobox = gtk_combo_box_text_new ();
        for (i = 0; i < 200; i++)
          {
            text = g_strdup_printf ("Item %d", i);
            gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combobox), text);
            g_free (text);
          }
        gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 53);
        gtk_frame_set_child (GTK_FRAME (tmp), combobox);

        gtk_window_present (GTK_WINDOW (window));

        while (!done)
          g_main_context_iteration (NULL, TRUE);

        g_clear_handle_id (&capital_animation_id, g_source_remove);

        return 0;
}

Messung V0.5 in Prozent
C=99 H=93 G=95

¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet am  2026-07-03) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik