Exemplo n.º 1
0
void
userlist_select (session *sess, char *name)
{
	GtkTreeIter iter;
	GtkTreeView *treeview = GTK_TREE_VIEW (sess->gui->user_tree);
	GtkTreeModel *model = gtk_tree_view_get_model (treeview);
	GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
	struct User *row_user;

	if (gtk_tree_model_get_iter_first (model, &iter))
	{
		do
		{
			gtk_tree_model_get (model, &iter, COL_USER, &row_user, -1);
			if (sess->server->p_cmp (row_user->nick, name) == 0)
			{
				if (gtk_tree_selection_iter_is_selected (selection, &iter))
					gtk_tree_selection_unselect_iter (selection, &iter);
				else
					gtk_tree_selection_select_iter (selection, &iter);

				/* and make sure it's visible */
				scroll_to_iter (&iter, treeview, model);
				return;
			}
		}
		while (gtk_tree_model_iter_next (model, &iter));
	}
}
Exemplo n.º 2
0
LIBGLADE_SIGNAL_FUNC void ChangeSaturationABGRValue(GtkWidget *menuitem, gpointer user_data)
{
  int data;
  if (strcmp(glade_get_widget_name(menuitem), "menuRPlus") == 0) {
    data = 0x0001;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuRMinus") == 0) {
    data = 0x0000;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuGPlus") == 0) {
    data = 0x0101;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuGMinus") == 0) {
    data = 0x0100;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuBPlus") == 0) {
    data = 0x0201;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuBMinus") == 0) {
    data = 0x0200;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuAPlus") == 0) {
    data = 0x0301;
  } else if (strcmp(glade_get_widget_name(menuitem), "menuAMinus") == 0) {
    data = 0x0300;
  }
  int type = (data >> 8) & 0xFF;
  bool plus = data & 1 ? true : false;
  gchar *buf;
  DWORD sat;
  BYTE v;
  DWORD mask, mask1, mask2;
  mask1 = 0xFFFFFF00;
  mask1 <<= type*8;
  mask2 = 0x00FFFFFF;
  mask2 >>= (3-type)*8;
  mask = mask1 | mask2;
  int max = actor->GetNumSprites(actor->curAct, actor->curPat);
  GtkTreeView *table = (GtkTreeView *)glade_xml_get_widget(windowXML, "table");
  GtkTreeModel *model = gtk_tree_view_get_model(table);
  GtkTreeSelection *selection = gtk_tree_view_get_selection(table);
  GtkTreeIter iter;

  if (gtk_tree_model_get_iter_first(model, &iter) == FALSE)  return;
  for (int i=0; i<max; i++) {
    if (gtk_tree_selection_iter_is_selected(selection, &iter)) {
      gtk_tree_model_get(model, &iter, SAT_COLUMN, &buf, -1);
      // AABBGGRR
      sat = HexToDWORD(buf);
      v = (BYTE)((sat & (~mask)) >> (type*8));
      if (plus) {
        v = SaturateByte5(v, true);
      } else {
        v = SaturateByte5(v, false);
      }
      sat &= mask;
      sat |= v << (type*8);
      sprintf(buf, "%08X", sat);
      SetTableFromEdit(buf, i, SAT_COLUMN);
      // iter is broken
      if (gtk_tree_model_get_iter_first(model, &iter) == FALSE)  return;
      for (int j=0; j<i; j++)  gtk_tree_model_iter_next(model, &iter);
    }
    if (gtk_tree_model_iter_next(model, &iter) == FALSE)  break;
  }
Exemplo n.º 3
0
Php::Value GtkTreeSelection_::iter_is_selected(Php::Parameters &parameters)
{
	Php::Value object_iter = parameters[0];
	GtkTreeIter_ *phpgtk_iter = (GtkTreeIter_ *)object_iter.implementation();
	GtkTreeIter iter = phpgtk_iter->get_instance();

	gboolean ret = gtk_tree_selection_iter_is_selected (GTK_TREE_SELECTION(instance), &iter);

	return ret;
}
Exemplo n.º 4
0
bool gTree::rowSelected(char *key)
{
	GtkTreeSelection *sel;
	gTreeRow *row=(gTreeRow*)g_hash_table_lookup(datakey,(gconstpointer)key);
	if (!row) return false;
	
	sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
	if (!sel) return false;
	return gtk_tree_selection_iter_is_selected(sel,row->dataiter);
	
}
Exemplo n.º 5
0
bool wxListBox::IsSelected( int n ) const
{
    wxCHECK_MSG( m_treeview != NULL, false, wxT("invalid listbox") );

    GtkTreeSelection* selection = gtk_tree_view_get_selection(m_treeview);

    GtkTreeIter iter;
    wxCHECK_MSG( GTKGetIteratorFor(n, &iter), false, wxT("Invalid index") );

    return gtk_tree_selection_iter_is_selected(selection, &iter) != 0;
}
Exemplo n.º 6
0
static void
pkg_window_label_data_func (GtkTreeViewColumn *column,
                            GtkCellRenderer   *cell,
                            GtkTreeModel      *model,
                            GtkTreeIter       *iter,
                            gpointer           user_data)
{
	PkgWindowPrivate *priv;
	PkgWindow *window = user_data;
	GtkTreeSelection *selection;
	gchar *title;
	gchar *subtitle;
	gchar *markup;
	gchar color[12] = { 0 };
	GtkStateType state = GTK_STATE_NORMAL;

	g_return_if_fail(PKG_IS_WINDOW(window));

	priv = window->priv;
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->treeview));
	if (gtk_tree_selection_iter_is_selected(selection, iter)) {
		state = GTK_STATE_SELECTED;
	}
	gtk_tree_model_get(model, iter,
	                   COLUMN_TITLE, &title,
	                   COLUMN_SUBTITLE, &subtitle, -1);
	if (!title) {
		g_object_set(cell,
		             "markup",
		             _("<span size=\"smaller\"><i>Loading ...</i></span>"),
		             NULL);
		return;
	}

	pkg_util_get_mix_color(GTK_WIDGET(window), state, color, sizeof(color));

	if (title && !subtitle) {
		markup = g_markup_printf_escaped("<span size=\"smaller\">"
		                                 "<b>%s</b>"
		                                 "</span>",
		                                 title);
	} else {
		markup = g_markup_printf_escaped("<span size=\"smaller\">"
		                                 "<b>%s</b>\n"
		                                 "<span color=\"%s\">%s</span>"
		                                 "</span>",
		                                 title, color, STR_OR_EMPTY(subtitle));
	}
	g_object_set(cell, "markup", markup, NULL);
	g_free(markup);
}
Exemplo n.º 7
0
static int
banlist_unban_inner (gpointer none, banlist_info *banl, int mode_num)
{
	session *sess = banl->sess;
	GtkTreeModel *model;
	GtkTreeSelection *sel;
	GtkTreeIter iter;
	char tbuf[2048];
	char **masks, *mask, *type;
	int num_sel, i;


	/* grab the list of selected items */
	model = GTK_TREE_MODEL (get_store (sess));
	sel = gtk_tree_view_get_selection (get_view (sess));

	if (!gtk_tree_model_get_iter_first (model, &iter))
		return 0;

	masks = g_malloc (sizeof (char *) * banl->line_ct);
	num_sel = 0;
	do
	{
		if (gtk_tree_selection_iter_is_selected (sel, &iter))
		{
			/* Get the mask part of this selected line */
			gtk_tree_model_get (model, &iter, TYPE_COLUMN, &type, MASK_COLUMN, &mask, -1);

			/* If it's the wrong type of mask, just continue */
			if (strcmp (_(modes[mode_num].type), type) != 0)
				continue;

			/* Otherwise add it to our array of mask pointers */
			masks[num_sel++] = g_strdup (mask);
			g_free (mask);
			g_free (type);
		}
	}
	while (gtk_tree_model_iter_next (model, &iter));

	/* and send to server */
	if (num_sel)
		send_channel_modes (sess, tbuf, masks, 0, num_sel, '-', modes[mode_num].letter, 0);

	/* now free everything */
	for (i=0; i < num_sel; i++)
		g_free (masks[i]);
	g_free (masks);

	return num_sel;
}
Exemplo n.º 8
0
std::vector<std::string>
userlist_selection_list (GtkWidget *widget)
{
	GtkTreeIter iter;
	GtkTreeView *treeview = GTK_TREE_VIEW(widget);
	GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);
	GtkTreeModel *model = gtk_tree_view_get_model (treeview);

	/* first, count the number of selections */
	int num_sel = 0;
	if (gtk_tree_model_get_iter_first (model, &iter))
	{
		do
		{
			if (gtk_tree_selection_iter_is_selected (selection, &iter))
				num_sel++;
		}
		while (gtk_tree_model_iter_next (model, &iter));
	}

	std::vector<std::string> nicks;
	if (num_sel < 1)
		return nicks;

	gtk_tree_model_get_iter_first (model, &iter);
	do
	{
		if (gtk_tree_selection_iter_is_selected (selection, &iter))
		{
			struct User *user;
			gtk_tree_model_get (model, &iter, COL_USER, &user, -1);
			nicks.emplace_back(user->nick);
		}
	}
	while (gtk_tree_model_iter_next (model, &iter));

	return nicks;
}
Exemplo n.º 9
0
static int find_current_selection(void)
{
	int i;

	for (i = 0; i < MAX_ITEMS; i++)
	{
		if (gtk_tree_selection_iter_is_selected(selection, &treeiters[i]))
		{
			return i;
		}
	}

	return -1;
}
Exemplo n.º 10
0
void edit_button_clicked_cb(GtkWidget *widget, gpointer data) {
	struct add_data *ad = (struct add_data *) data;
	GtkTreeIter iter,temp_iter;
	GtkTreeModel *model;
	gboolean valid;
	int index,nindices;
	gchar *element;
	double weight;
	char buffer[512];
	
	//get selection
	//the olde switcharooooo
	if (gtk_tree_selection_get_selected(ad->select, &model, &iter)) {
		valid = gtk_tree_model_get_iter_first(model, &temp_iter);
		index = 0;
		nindices = 0;
		while(valid) {
			if (gtk_tree_selection_iter_is_selected(ad->select, &temp_iter)) {
#if DEBUG == 1
				fprintf(stdout,"Index: %i\n",nindices);
#endif
				index = nindices;
			}
			nindices++;
			valid = gtk_tree_model_iter_next(model, &temp_iter);
		}
		//get data from selected
		gtk_tree_model_get(model, &iter, SYMBOL_COLUMN,  &element, WEIGHT_COLUMN, &weight,  -1 );

		//put it in dialog
#if DEBUG == 1
		fprintf(stdout,"Editing element: %s and weight: %lf\n",element, weight);
#endif
		gtk_widget_set_sensitive(ad->cw->okButton,TRUE);
		gtk_entry_set_editable(GTK_ENTRY(ad->cw->compoundEntry), FALSE);
		ad->cw->kind = CW_EDIT;
		sprintf(buffer,"%g", weight);
		gtk_entry_set_text(GTK_ENTRY(ad->cw->compoundEntry), element);
		g_free(element);
		gtk_entry_set_text(GTK_ENTRY(ad->cw->weightEntry), buffer);
		ad->cw->index = index;

		gtk_widget_show_all(ad->cw->dialog);
	}

	return;
}
Exemplo n.º 11
0
/****************************************************************
  Key press for destination
*****************************************************************/
static gboolean dst_key_press_callback(GtkWidget *w, GdkEventKey *ev,
				       gpointer data)
{
  GtkTreeModel *model;
  struct worklist_data *ptr;

  ptr = data;
  model = GTK_TREE_MODEL(ptr->dst);

  if (ev->keyval == GDK_KEY_Delete) {
    GtkTreeIter it, it_next;
    bool deleted = FALSE;

    if (gtk_tree_model_get_iter_first(model, &it)) {
      bool more;

      do {
	it_next = it;
	more = gtk_tree_model_iter_next(model, &it_next);

	if (gtk_tree_selection_iter_is_selected(ptr->dst_selection, &it)) {
	  gtk_list_store_remove(GTK_LIST_STORE(model), &it);
	  deleted = TRUE;
	}
	it = it_next;

      } while (more);
    }

    if (deleted) {
      commit_worklist(ptr);
    }
    return TRUE;

  } else if ((ev->state & GDK_MOD1_MASK) && ev->keyval == GDK_KEY_Up) {
    queue_bubble_up(ptr);
    return TRUE;

  } else if ((ev->state & GDK_MOD1_MASK) && ev->keyval == GDK_KEY_Down) {
    queue_bubble_down(ptr);
    return TRUE;

  } else {
    return FALSE;
  }
}
Exemplo n.º 12
0
static void
toggle_selection_window (GdkWindow *window)
{
    GtkTreeSelection *selection;
    GtkTreeIter iter;

    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));

    if (window != NULL &&
            find_window (window, &iter))
    {
        if (gtk_tree_selection_iter_is_selected (selection, &iter))
            gtk_tree_selection_unselect_iter (selection,  &iter);
        else
            gtk_tree_selection_select_iter (selection,  &iter);
    }
}
Exemplo n.º 13
0
void remove_button_clicked_cb(GtkWidget *widget, gpointer data) {
	struct add_data *ad = (struct add_data *) data;
	GtkTreeIter iter,temp_iter;
	GtkTreeModel *model;
	gboolean valid;
	int index,nindices;
	int i;
	char buffer[512];

	if (gtk_tree_selection_get_selected(ad->select, &model, &iter)) {
		valid = gtk_tree_model_get_iter_first(model, &temp_iter);
		index = 0;
		nindices = 0;
		while(valid) {
			if (gtk_tree_selection_iter_is_selected(ad->select, &temp_iter)) {
#if DEBUG == 1
				fprintf(stdout,"Index: %i\n",nindices);
#endif
				index = nindices;
			}
			nindices++;
			valid = gtk_tree_model_iter_next(model, &temp_iter);
		}

		for (i = index ; i < nindices ; i++) {
			(*(ad->cw->lw->my_layer))->weight[i] =(*(ad->cw->lw->my_layer))->weight[i+1];
			(*(ad->cw->lw->my_layer))->Z[i] =(*(ad->cw->lw->my_layer))->Z[i+1];
		}
		(*(ad->cw->lw->my_layer))->weight = (double *) realloc((*(ad->cw->lw->my_layer))->weight, sizeof(double)*((*(ad->cw->lw->my_layer))->n_elements-1));
		(*(ad->cw->lw->my_layer))->Z = (int *) realloc((*(ad->cw->lw->my_layer))->Z, sizeof(int)*((*(ad->cw->lw->my_layer))->n_elements-1));
		(*(ad->cw->lw->my_layer))->n_elements--;
		gtk_list_store_remove(ad->store, &iter);
		sprintf(buffer,"%g", xmi_sum_double((*(ad->cw->lw->my_layer))->weight,(*(ad->cw->lw->my_layer))->n_elements )*100.0);
		gtk_entry_set_text(GTK_ENTRY(ad->cw->lw->sumEntry), buffer);
		if ((*(ad->cw->lw->my_layer))->n_elements == 0)
			gtk_widget_set_sensitive(ad->cw->lw->okButton, FALSE);
		else{
			//select next line if available
			if (index == nindices -1)
				gtk_tree_selection_select_path(ad->select,gtk_tree_path_new_from_indices(nindices-2,-1));
			else 
				gtk_tree_selection_select_path(ad->select,gtk_tree_path_new_from_indices(index,-1));

		}
	}
}
Exemplo n.º 14
0
void GetSelectedTableItem(int *sel)
{
  GtkTreeView *table = (GtkTreeView *)glade_xml_get_widget(windowXML, "table");
  GtkTreeModel *model = gtk_tree_view_get_model(table);
  GtkTreeSelection *selection = gtk_tree_view_get_selection(table);
  GtkTreeIter iter;

  if (gtk_tree_model_get_iter_first(model, &iter) == FALSE)  return;
  int i=0, j=0;
  do {
    if (gtk_tree_selection_iter_is_selected(selection, &iter)) {
      *(sel + j) = i;
      j++;
    }
    i++;
  } while (gtk_tree_model_iter_next(model, &iter));
}
Exemplo n.º 15
0
static void
futz_row (void)
{
    gint i;
    GtkTreePath *path;
    GtkTreeIter iter;
    GtkTreeIter iter2;

    i = g_rand_int_range (grand, 0,
                          gtk_tree_model_iter_n_children (model, NULL));
    path = gtk_tree_path_new ();
    gtk_tree_path_append_index (path, i);
    gtk_tree_model_get_iter (model, &iter, path);
    gtk_tree_path_free (path);

    if (gtk_tree_selection_iter_is_selected (selection, &iter))
        return;
    switch (g_rand_int_range (grand, 0, 3))
    {
    case 0:
        /* insert */
        gtk_list_store_insert_after (GTK_LIST_STORE (model),
                                     &iter2, &iter);
        gtk_list_store_set (GTK_LIST_STORE (model), &iter2,
                            TEXT_COLUMN, words[g_rand_int_range (grand, 0, NUM_WORDS)],
                            -1);
        break;
    case 1:
        /* delete */
        if (gtk_tree_model_iter_n_children (model, NULL) == 0)
            return;
        gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
        break;
    case 2:
        /* modify */
        return;
        if (gtk_tree_model_iter_n_children (model, NULL) == 0)
            return;
        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                            TEXT_COLUMN, words[g_rand_int_range (grand, 0, NUM_WORDS)],
                            -1);
        break;
    }
}
Exemplo n.º 16
0
static void
ft_manager_remove_file_from_model (EmpathyFTManager *manager,
                                   EmpathyFTHandler *handler)
{
  GtkTreeRowReference *row_ref;
  GtkTreeSelection *selection;
  GtkTreePath *path = NULL;
  GtkTreeIter iter;
  gboolean update_selection;
  EmpathyFTManagerPriv *priv = GET_PRIV (manager);

  row_ref = ft_manager_get_row_from_handler (manager, handler);
  g_return_if_fail (row_ref);

  DEBUG ("Removing file transfer from window: contact=%s, filename=%s",
      empathy_contact_get_alias (empathy_ft_handler_get_contact (handler)),
      empathy_ft_handler_get_filename (handler));

  /* Get the iter from the row_ref */
  path = gtk_tree_row_reference_get_path (row_ref);
  gtk_tree_model_get_iter (priv->model, &iter, path);
  gtk_tree_path_free (path);

  /* We have to update the selection only if we are removing the selected row */
  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview));
  update_selection = gtk_tree_selection_iter_is_selected (selection, &iter);

  /* Remove tp_file's row. After that iter points to the next row */
  if (!gtk_list_store_remove (GTK_LIST_STORE (priv->model), &iter))
    {
      gint n_row;

      /* There is no next row, set iter to the last row */
      n_row = gtk_tree_model_iter_n_children (priv->model, NULL);
      if (n_row > 0)
        gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, n_row - 1);
      else
        update_selection = FALSE;
    }

  if (update_selection)
    gtk_tree_selection_select_iter (selection, &iter);
}
Exemplo n.º 17
0
static gboolean
update_field(gpointer data)
{
    ShellFieldUpdate	*fu = (ShellFieldUpdate *) data;

    /* if the entry is still selected, update it */
    if (fu->entry->selected && fu->entry->fieldfunc) {
        gchar		*value = fu->entry->fieldfunc(fu->field_name);
        GtkTreeIter	*iter = g_hash_table_lookup(update_tbl, fu->field_name);

        /* this function is also used to feed the load graph when ViewType =
           SHELL_VIEW_LOAD_GRAPH */
        if (fu->loadgraph && shell->view_type == SHELL_VIEW_LOAD_GRAPH) {
            GtkTreeSelection *ts;

            ts = gtk_tree_view_get_selection(GTK_TREE_VIEW
                                             (shell->info->view));

            if (iter && gtk_tree_selection_iter_is_selected(ts, iter)) {
                load_graph_update(shell->loadgraph, atoi(value));
            }

            g_free(value);

            return TRUE;
        }

        if (iter) {
            GtkTreeStore *store = GTK_TREE_STORE(shell->info->model);

            gtk_tree_store_set(store, iter, INFO_TREE_COL_VALUE, value, -1);
            g_free(value);

            return TRUE;
        }
    }

    /* otherwise, cleanup and destroy the timeout */
    g_free(fu->field_name);
    g_free(fu);

    return FALSE;
}
Exemplo n.º 18
0
void
item_list_view_remove_item (ItemListView *ilv, itemPtr item)
{
	GtkTreeIter	*iter;

	g_assert (NULL != item);
	iter = g_hash_table_lookup (ilv->priv->item_id_to_iter, GUINT_TO_POINTER (item->id));
	if (iter) {
		/* Using the GtkTreeIter check if it is currently selected. If yes,
		   scroll down by one in the sorted GtkTreeView to ensure something
		   is selected after removing the GtkTreeIter */
		if (gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (ilv->priv->treeview), iter))
			ui_common_treeview_move_cursor (ilv->priv->treeview, 1);
	
		gtk_tree_store_remove (GTK_TREE_STORE (gtk_tree_view_get_model (ilv->priv->treeview)), iter);
		g_hash_table_remove (ilv->priv->item_id_to_iter, GUINT_TO_POINTER (item->id));
	} else {
		g_warning ("Fatal: item to be removed not found in iter lookup hash!");
	}
}
Exemplo n.º 19
0
void DeleteHashes(GtkWidget *empty)
{
	GtkTreeSelection *selection;
	
	int i;
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gui.hash.tree));
	
	for (i = db.hashes.size(); i--;)
	{
		if (gtk_tree_selection_iter_is_selected(selection, &gui.hash.iter[i]))
		{
			gtk_list_store_remove(gui.hash.store, &gui.hash.iter[i]);
			UpdateHashIters(i);
			db.hashes.erase(db.hashes.begin()+i);
			
			db.n_hashes--;
		}
	}
	return;
}
Exemplo n.º 20
0
void
on_button_config_remove_dir_clicked(GtkButton *unused_button,
	gpointer unused_udata)
{
	GtkTreeView *tv;
	GtkTreeModel *model;
	GtkTreeIter iter;
	GtkTreeSelection *selection;
	pslist_t *sl, *pl_dirs = NULL;
	char *dirs;

	(void) unused_button;
	(void) unused_udata;

	tv = GTK_TREE_VIEW(gui_dlg_prefs_lookup("treeview_shared_dirs"));
	model = gtk_tree_view_get_model(tv);

	if (!gtk_tree_model_get_iter_first(model, &iter))
		return;

	/* Regenerate the string property holding a list of paths */
	selection = gtk_tree_view_get_selection(tv);

	do {
		char *pathname = NULL;

		/* Skip items selected for removal */
		if (gtk_tree_selection_iter_is_selected(selection, &iter))
			continue;

		gtk_tree_model_get(model, &iter, 0, &pathname, (-1));
		pl_dirs = pslist_prepend(pl_dirs, pathname);
	} while (gtk_tree_model_iter_next(model, &iter));

	dirs = dirlist_to_string(pl_dirs);
	gnet_prop_set_string(PROP_SHARED_DIRS_PATHS, dirs);
	HFREE_NULL(dirs);

	PSLIST_FOREACH(pl_dirs, sl) {
		G_FREE_NULL(sl->data);
	}
Exemplo n.º 21
0
void fm_folder_view_select_invert(FmFolderView* fv)
{
    switch(fv->mode)
    {
    case FM_FV_LIST_VIEW:
        {
            GtkTreeSelection *tree_sel;
            GtkTreeIter it;
            if(!gtk_tree_model_get_iter_first(fv->model, &it))
                return;
            tree_sel = gtk_tree_view_get_selection((GtkTreeView*)fv->view);
            do
            {
                if(gtk_tree_selection_iter_is_selected(tree_sel, &it))
                    gtk_tree_selection_unselect_iter(tree_sel, &it);
                else
                    gtk_tree_selection_select_iter(tree_sel, &it);
            }while( gtk_tree_model_iter_next(fv->model, &it ));
            break;
        }
    case FM_FV_ICON_VIEW:
    case FM_FV_COMPACT_VIEW:
    case FM_FV_THUMBNAIL_VIEW:
        {
            GtkTreePath* path;
            int i, n;
            n = gtk_tree_model_iter_n_children(fv->model, NULL);
            if(n == 0)
                return;
            path = gtk_tree_path_new_first();
            for( i=0; i<n; ++i, gtk_tree_path_next(path) )
            {
                if ( exo_icon_view_path_is_selected((ExoIconView*)fv->view, path))
                    exo_icon_view_unselect_path((ExoIconView*)fv->view, path);
                else
                    exo_icon_view_select_path((ExoIconView*)fv->view, path);
            }
            break;
        }
    }
}
Exemplo n.º 22
0
static void
gimp_component_editor_active_changed (GimpImage           *image,
                                      GimpChannelType      channel,
                                      GimpComponentEditor *editor)
{
  GtkTreeIter iter;

  if (gimp_component_editor_get_iter (editor, channel, &iter))
    {
      gboolean active = gimp_image_get_component_active (image, channel);

      if (gtk_tree_selection_iter_is_selected (editor->selection, &iter) !=
          active)
        {
          if (active)
            gtk_tree_selection_select_iter (editor->selection, &iter);
          else
            gtk_tree_selection_unselect_iter (editor->selection, &iter);
        }
    }
}
Exemplo n.º 23
0
void
on_button_config_remove_dir_clicked(GtkButton *unused_button,
	gpointer unused_udata)
{
	GtkTreeView *tv;
	GtkTreeModel *model;
	GtkTreeIter iter;
	GtkTreeSelection *selection;
	str_t *s;

	(void) unused_button;
	(void) unused_udata;

	tv = GTK_TREE_VIEW(gui_dlg_prefs_lookup("treeview_shared_dirs"));
	model = gtk_tree_view_get_model(tv);

	if (!gtk_tree_model_get_iter_first(model, &iter))
		return;

	/* Regenerate the string property holding a list of paths */
	selection = gtk_tree_view_get_selection(tv);
	s = str_new(0);

	do {
		gchar *dir = NULL;

		/* Skip items selected for removal */
		if (gtk_tree_selection_iter_is_selected(selection, &iter))
			continue;

		gtk_tree_model_get(model, &iter, 0, &dir, (-1));
		if (str_len(s) > 0)
			str_putc(s, ':');
		str_cat(s, dir);
		G_FREE_NULL(dir);
	} while (gtk_tree_model_iter_next(model, &iter));

	gnet_prop_set_string(PROP_SHARED_DIRS_PATHS, str_2c(s));
	str_destroy(s);
}
Exemplo n.º 24
0
static GSList *
treeview_get_selected (GtkTreeModel *model, GtkTreeSelection *sel, int column)
{
	GtkTreeIter iter;
	GSList *list = NULL;
	void *ptr;

	if (gtk_tree_model_get_iter_first (model, &iter))
	{
		do
		{
			if (gtk_tree_selection_iter_is_selected (sel, &iter))
			{
				gtk_tree_model_get (model, &iter, column, &ptr, -1);
				list = g_slist_prepend (list, ptr);
			}
		}
		while (gtk_tree_model_iter_next (model, &iter));
	}

	return g_slist_reverse (list);
}
Exemplo n.º 25
0
int wxListBox::GetSelections( wxArrayInt& aSelections ) const
{
    wxCHECK_MSG( m_treeview != NULL, wxNOT_FOUND, wxT("invalid listbox") );

    aSelections.Empty();

    int i = 0;
    GtkTreeIter iter;
    GtkTreeSelection* selection = gtk_tree_view_get_selection(m_treeview);

    if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(m_liststore), &iter))
    { //gtk_tree_selection_get_selected_rows is GTK 2.2+ so iter instead
        do
        {
            if (gtk_tree_selection_iter_is_selected(selection, &iter))
                aSelections.Add(i);

            i++;
        } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(m_liststore), &iter));
    }

    return aSelections.GetCount();
}
Exemplo n.º 26
0
/* 
 * gets tree row reference for an unsected row at the same depth
 */
GtkTreeRowReference* get_unselected_sibling(GtkTreePath *path)
{
	GtkTreeRowReference *sibling = NULL;
	
	GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));

	/* move down find first unselected sibling */
	GtkTreeIter titer;
	gtk_tree_model_get_iter(model, &titer, path);
	while (gtk_tree_model_iter_next(model, &titer))
	{
		if (!gtk_tree_selection_iter_is_selected(selection, &titer))
		{
			GtkTreePath *sibling_path = gtk_tree_model_get_path(model, &titer);
			sibling = gtk_tree_row_reference_new(model, sibling_path);
			gtk_tree_path_free(sibling_path);
			break;
		}
	}

	if (!sibling)
	{
		/* move up find first unselected sibling */
		GtkTreePath *sibling_path = gtk_tree_path_copy(path);
		while (gtk_tree_path_prev(sibling_path))
		{
			if (!gtk_tree_selection_path_is_selected(selection, sibling_path))
			{
				sibling = gtk_tree_row_reference_new(model, sibling_path);
				break;
			}
		}
		gtk_tree_path_free(sibling_path);
	}

	return sibling;
}
Exemplo n.º 27
0
static void
selection_changed(GwyCoordsView *view,
                  GtkTreeSelection *selection)
{
    CoordsView *priv = view->priv;
    // Not having coords can occur during destruction.
    if (priv->sync_shapes_to_view || !priv->shapes_selection || !priv->coords)
        return;

    guint n = gwy_coords_size(priv->coords);
    gint *indices = g_slice_alloc(sizeof(gint)*n);
    guint len = 0;
    for (guint i = 0; i < n; i++) {
        GtkTreeIter iter;
        // We know that this is actually very efficient.
        gwy_list_store_get_iter(priv->store, i, &iter);
        if (gtk_tree_selection_iter_is_selected(selection, &iter))
            indices[len++] =  i;
    }
    priv->sync_view_to_shapes = TRUE;
    gwy_int_set_update(priv->shapes_selection, indices, len);
    priv->sync_view_to_shapes = FALSE;
    g_slice_free1(sizeof(gint)*n, indices);
}
Exemplo n.º 28
0
/*
 * key pressed event
 */
static gboolean on_key_pressed(GtkWidget *widget, GdkEvent *event, gpointer user_data)
{
	guint keyval = ((GdkEventKey*)event)->keyval;
	GtkTreeSelection *selection;
	GList *rows;

	/* do not process event is page is readonly (debug is running) */
	if (readonly)
		return FALSE;

	/* get selected rows */
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
	rows = gtk_tree_selection_get_selected_rows(selection, &model);
	rows = g_list_sort(rows, (GCompareFunc)gtk_tree_path_compare);

	if (keyval == GDK_Delete && rows && g_list_length(rows))
	{
		GList *breaks, *iter;
		GtkTreeRowReference *new_selection = NULL;
		GtkTreePath *first_path = (GtkTreePath*)rows->data;

		/* "delete selected rows" */

		/* get new selection */
		if (gtk_tree_path_get_depth(first_path) > 1)
		{
			new_selection = get_unselected_sibling(first_path);
		}
		if (!new_selection)
		{
			GtkTreePath *file_path = gtk_tree_path_copy(first_path);
			if (gtk_tree_path_get_depth(file_path) > 1)
			{
				gtk_tree_path_up(file_path);
			}
			new_selection = get_unselected_sibling(file_path);
			gtk_tree_path_free(file_path);
		}
		
		/* collect GList of breakpoints to remove
		if file row is met - add all unselected breaks to the list as well */
		breaks = NULL;
		for (iter = rows; iter; iter = iter->next)
		{
			GtkTreePath *path = (GtkTreePath*)iter->data;
			GtkTreeIter titer;
			
			gtk_tree_model_get_iter(model, &titer, path);
			
			if (1 == gtk_tree_path_get_depth(path))
			{
				GtkTreeIter citer;
				gtk_tree_model_iter_children(model, &citer, &titer);
				
				do
				{
					if (!gtk_tree_selection_iter_is_selected(selection, &citer))
					{
						gchar *file = NULL;
						gint line;
						breakpoint *bp;

						gtk_tree_model_get(model, &titer, FILEPATH, &file, -1);
						gtk_tree_model_get(model, &citer, LINE, &line, -1);

						bp = breaks_lookup_breakpoint(file, line);
						
						breaks = g_list_append(breaks, bp);
						
						g_free(file);
					}
				}
				while(gtk_tree_model_iter_next(model, &citer));
			}
			else
			{
				GtkTreeIter piter;
				gchar *file = NULL;
				gint line;
				breakpoint *bp;

				gtk_tree_model_iter_parent(model, &piter, &titer);
				
				gtk_tree_model_get(model, &piter, FILEPATH, &file, -1);

				gtk_tree_model_get(model, &titer, LINE, &line, -1);

				bp = breaks_lookup_breakpoint(file, line);
				
				breaks = g_list_append(breaks, bp);
				
				g_free(file);
			}
		}
		
		if (1 == g_list_length(breaks))
		{
			breakpoint *bp = (breakpoint*)breaks->data;
			g_list_free(breaks);
			breaks_remove(bp->file, bp->line);
		}
		else
		{
			breaks_remove_list(breaks);
		}

		if (new_selection)
		{
			/* get path to select */
			GtkTreePath *path = NULL;
			path = gtk_tree_row_reference_get_path(new_selection);

			gtk_tree_selection_select_path(selection, path);
			gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widget), path, NULL, TRUE, 0.5, 0.5);
			gtk_tree_path_free(path);

			gtk_tree_row_reference_free(new_selection);
		}
	}

	/* free rows list */
	g_list_foreach (rows, (GFunc)gtk_tree_path_free, NULL);
	g_list_free (rows);

	return FALSE;
}
Exemplo n.º 29
0
static GList *select_from_list (GtkWindow *parent, GList *list, const gchar *title, const gchar *msg )
{
    GtkTreeIter iter;
    GtkCellRenderer *renderer;
    GtkWidget *view;
    gchar *latlon_string;
    int column_runner;

    GtkWidget *dialog = gtk_dialog_new_with_buttons (title,
                        parent,
                        GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                        GTK_STOCK_CANCEL,
                        GTK_RESPONSE_REJECT,
                        GTK_STOCK_OK,
                        GTK_RESPONSE_ACCEPT,
                        NULL);
    /* When something is selected then OK */
    gtk_dialog_set_default_response ( GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT );
    GtkWidget *response_w = NULL;
#if GTK_CHECK_VERSION (2, 20, 0)
    /* Default to not apply - as initially nothing is selected! */
    response_w = gtk_dialog_get_widget_for_response ( GTK_DIALOG(dialog), GTK_RESPONSE_REJECT );
#endif
    GtkWidget *label = gtk_label_new ( msg );
    GtkTreeStore *store = gtk_tree_store_new ( 6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN );
    GList *list_runner = list;
    while (list_runner) {
        gpx_meta_data_t *gpx_meta_data = (gpx_meta_data_t *)list_runner->data;
        // To keep display compact three digits of precision for lat/lon should be plenty
        latlon_string = g_strdup_printf("(%.3f,%.3f)", gpx_meta_data->ll.lat, gpx_meta_data->ll.lon);
        gtk_tree_store_append(store, &iter, NULL);
        gtk_tree_store_set ( store, &iter,
                             0, gpx_meta_data->name,
                             1, gpx_meta_data->desc,
                             2, gpx_meta_data->timestamp,
                             3, latlon_string,
                             4, gpx_meta_data->vis,
                             5, gpx_meta_data->in_current_view,
                             -1 );
        list_runner = g_list_next ( list_runner );
        g_free ( latlon_string );
    }

    view = gtk_tree_view_new();
    renderer = gtk_cell_renderer_text_new();
    column_runner = 0;
    GtkTreeViewColumn *column;

    column = gtk_tree_view_column_new_with_attributes ( _("Name"), renderer, "text", column_runner, NULL);
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    column_runner++;
    column = gtk_tree_view_column_new_with_attributes ( _("Description"), renderer, "text", column_runner, NULL);
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    column_runner++;
    column = gtk_tree_view_column_new_with_attributes ( _("Time"), renderer, "text", column_runner, NULL);
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    column_runner++;
    column = gtk_tree_view_column_new_with_attributes ( _("Lat/Lon"), renderer, "text", column_runner, NULL);
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    column_runner++;
    column = gtk_tree_view_column_new_with_attributes ( _("Privacy"), renderer, "text", column_runner, NULL); // AKA Visibility
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    GtkCellRenderer *renderer_toggle = gtk_cell_renderer_toggle_new ();
    g_object_set (G_OBJECT (renderer_toggle), "activatable", FALSE, NULL); // No user action - value is just for display
    column_runner++;
    column = gtk_tree_view_column_new_with_attributes ( _("Within Current View"), renderer_toggle, "active", column_runner, NULL);
    gtk_tree_view_column_set_sort_column_id (column, column_runner);
    gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);

    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(store));
    gtk_tree_selection_set_mode( gtk_tree_view_get_selection(GTK_TREE_VIEW(view)), GTK_SELECTION_MULTIPLE );
    g_object_unref(store);

    GtkWidget *scrolledwindow = gtk_scrolled_window_new ( NULL, NULL );
    gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC );
    gtk_container_add ( GTK_CONTAINER(scrolledwindow), view );

    gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), label, FALSE, FALSE, 0);
    gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), scrolledwindow, TRUE, TRUE, 0);

    // Ensure a reasonable number of items are shown, but let the width be automatically sized
    gtk_widget_set_size_request ( dialog, -1, 400) ;
    gtk_widget_show_all ( dialog );

    if ( response_w )
        gtk_widget_grab_focus ( response_w );

    while ( gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT ) {

        // Possibily not the fastest method but we don't have thousands of entries to process...
        GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
        GList *selected = NULL;

        //  because we don't store the full data in the gtk model, we have to scan & look it up
        if ( gtk_tree_model_get_iter_first( GTK_TREE_MODEL(store), &iter) ) {
            do {
                if ( gtk_tree_selection_iter_is_selected ( selection, &iter ) ) {
                    // For every selected item,
                    // compare the name from the displayed view to every gpx entry to find the gpx this selection represents
                    gchar* name;
                    gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 0, &name, -1 );
                    // I believe the name of these items to be always unique
                    list_runner = list;
                    while (list_runner) {
                        if ( !strcmp ( ((gpx_meta_data_t*)list_runner->data)->name, name ) ) {
                            gpx_meta_data_t *copied = copy_gpx_meta_data_t (list_runner->data);
                            selected = g_list_prepend (selected, copied);
                            break;
                        }
                        list_runner = g_list_next ( list_runner );
                    }
                }
            }
            while ( gtk_tree_model_iter_next ( GTK_TREE_MODEL(store), &iter ) );
        }

        if ( selected ) {
            gtk_widget_destroy ( dialog );
            return selected;
        }
        a_dialog_error_msg(parent, _("Nothing was selected"));
    }
    gtk_widget_destroy ( dialog );
    return NULL;
}
Exemplo n.º 30
0
/****************************************************************
  Return whether current itree item is selected 
*****************************************************************/
gboolean itree_is_selected(GtkTreeSelection *selection, ITree *it)
{
  return gtk_tree_selection_iter_is_selected(selection, &it->it);
}