コード例 #1
0
ファイル: restore.c プロジェクト: halgandd/bacula
/*
 * User selected a row
 */
static void select_row_cb(GtkCList *item, gint row, gint column,
             GdkEventButton *event, Window *restore)
{
   char *file;
   char *marked = NULL;
   /* Column non-negative => double click */
   if (column >= 0) {
      gtk_clist_unselect_row(item, row, column);
      /* Double click on column 0 means to mark or unmark */
      if (column == 0) {
         gtk_clist_get_text(restore->list, row, CHECK_COLUMN, &marked);
         Dmsg1(200, "Marked=%s\n", marked);
         if (!marked || strcmp(marked, "x") != 0) {
            mark_row(row, true);
         } else {
            mark_row(row, false);
         }
      } else {
      /* Double clicking on directory means to move to it */
         int len;
         gtk_clist_get_text(item, row, FILE_COLUMN, &file);
         len = strlen(file);
         if (len > 0 && file[len-1] == '/') {
            /* Change to new directory */
            pm_strcpy(restore->path, restore->fname);
            if (*file == '*') {
               Mmsg(restore->fname, "%s%s", restore->path, file+1);
            } else {
               Mmsg(restore->fname, "%s%s", restore->path, file);
            }
            FillDirectory(restore->fname, restore);
         }
      }
   }
}
コード例 #2
0
ファイル: clist.c プロジェクト: CraneMTG/ScrapWars-2
void gtk_clist_remove(GtkCList *clist, gint row)
{
  if (row >= 0 && row < clist->rows) {
    GSList *dellink;
    GtkCListRow *delrow;
    int i;

    gtk_clist_unselect_row(clist, row, 0);
    dellink = g_slist_nth(clist->rowdata, row);
    delrow = (GtkCListRow *)dellink->data;
    for (i = 0; i < clist->cols; i++) {
      g_free(delrow->text[i]);
    }
    g_free(delrow->text);
    clist->rowdata = g_slist_remove_link(clist->rowdata, dellink);
    g_free(dellink);

    clist->rows = g_slist_length(clist->rowdata);

    if (GTK_WIDGET_REALIZED(GTK_WIDGET(clist))) {
      HWND hWnd = GTK_WIDGET(clist)->hWnd;

      SendMessage(hWnd, LB_DELETESTRING, (WPARAM)row, 0);
    }
  }
}
コード例 #3
0
ファイル: menu-items.c プロジェクト: GNOME/gftp
void 
selectallfiles (gpointer data)
{
  gftp_window_data * wdata;
  gftp_file * tempfle;
  GList *templist;
  int i;

  wdata = data;
  wdata->show_selected = 0;
  gtk_clist_freeze (GTK_CLIST (wdata->listbox));
  i = 0;
  templist = wdata->files;
  while (templist != NULL)
    {
      tempfle = (gftp_file *) templist->data;
      if (tempfle->shown)
	{
	  if (S_ISDIR (tempfle->st_mode))
	    gtk_clist_unselect_row (GTK_CLIST (wdata->listbox), i, 0);
	  else
	    gtk_clist_select_row (GTK_CLIST (wdata->listbox), i, 0);
          i++;
	}
      templist = templist->next;
    }
  gtk_clist_thaw (GTK_CLIST (wdata->listbox));
}
コード例 #4
0
ファイル: editlist.c プロジェクト: 94m3k1n9/hexchat
static void
editlist_gui_sort (GtkWidget * igad)
{
	int row;

	row = gtkutil_clist_selection (editlist_gui_list);
	if (row != -1)
		gtk_clist_unselect_row (GTK_CLIST (editlist_gui_list), row, 0);
	gtk_clist_sort (GTK_CLIST (editlist_gui_list));
}
コード例 #5
0
ファイル: gtk-missing.c プロジェクト: MrJoe/gtk-gnutella
/**
 * Fetch data from the selection of a clist. Returns a GSList containing
 * the user_data pointers from the selected rows. If allow_null is TRUE,
 * the returned list may contain NULL pointers. If cfn != NULL, it will
 * be used to determine whether two entries are equal and drop all duplicate
 * items from the result list. Using cfn will significantly increase runtime.
 */
GSList *
clist_collect_data(GtkCList *clist, gboolean allow_null, GCompareFunc cfn)
{
    GSList *result_list = NULL;
    GList *l;
    GSList *sl;
    GSList *to_unselect = NULL;

    g_assert(clist != NULL);

    /*
     * Collect the data of the selected rows.
     */
    for (l = clist->selection; l != NULL; l = g_list_next(l)) {
        gpointer data;
        gint row;

        row = GPOINTER_TO_INT(l->data);
        data = gtk_clist_get_row_data(clist, row);

        if ((data != NULL) || allow_null) {
            if (cfn != NULL) {
                if (g_slist_find_custom(result_list, data, cfn) != NULL) {
                    if (GUI_PROPERTY(gui_debug) >= 3) {
                        const gchar *name =
                            gtk_widget_get_name(GTK_WIDGET(clist));
                        printf("%s has duplicate data: %p\n",
                            (name != NULL) ? name : "<UNKNOWN>", data);
                    }
                    to_unselect =
						g_slist_prepend(to_unselect, GINT_TO_POINTER(row));
                    continue;
                }
            }
            result_list = g_slist_prepend(result_list, data);
            to_unselect = g_slist_prepend(to_unselect, GINT_TO_POINTER(row));
        } else {
            if (GUI_PROPERTY(gui_debug) >= 3) {
                const gchar *name = gtk_widget_get_name(GTK_WIDGET(clist));
                printf("%s contains NULL data in row %d\n",
                    (name != NULL) ? name : "<UNKNOWN>", row);
            }
        }
    }

    /*
     * Unselect the rows from which data has been sucessfully gathered.
     */
    for (sl = to_unselect; sl != NULL; sl = g_slist_next(sl))
        gtk_clist_unselect_row(clist, GPOINTER_TO_INT(sl->data), 0);

    g_slist_free(to_unselect);

    return result_list;
}
コード例 #6
0
ファイル: dccgui.c プロジェクト: UIKit0/picogui
static void
accept_chat_clicked (GtkWidget * wid, gpointer none)
{
	int row;
	struct DCC *dcc;

	row = gtkutil_clist_selection (dcccwin.list);
	if (row != -1)
	{
		dcc = gtk_clist_get_row_data (GTK_CLIST (dcccwin.list), row);
		gtk_clist_unselect_row (GTK_CLIST (dcccwin.list), row, 0);
		dcc_get (dcc);
	}
}
コード例 #7
0
ファイル: gnmenu.c プロジェクト: RandomCore/nethack-de
static void
ghack_menu_window_key(GtkWidget *menuWin, GdkEventKey *event, gpointer data)
{
	int i, numRows;
	menuItem* item;
	MenuWinType isMenu;

	isMenu = (MenuWinType) GPOINTER_TO_INT
		(gtk_object_get_data (GTK_OBJECT (menuWin), "isMenu"));

	if (isMenu == MenuMenu) {
		GtkWidget *clist;
		gint selection_mode;

		clist = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (menuWin), "clist"));
		g_assert (clist != NULL);
	numRows = GPOINTER_TO_INT
	    (gtk_object_get_data(GTK_OBJECT(clist), "numRows"));
	selection_mode = GPOINTER_TO_INT
	    (gtk_object_get_data (GTK_OBJECT(clist), "selection_mode"));
	for (i = 0; i <= numRows; ++i) {
	    item = (menuItem*) gtk_clist_get_row_data(GTK_CLIST(clist), i);
	    if (item == NULL) continue;
	    if (!strcmp(item->accelerator, "")) continue;

			if ( (!strcmp(item->accelerator, event->string)) ||
				 ((selection_mode == GTK_SELECTION_MULTIPLE) &&
						 (event->keyval == ','))) {
		if (item->selected) {
					gtk_clist_unselect_row( GTK_CLIST (clist), 
						item->itemNumber, 0);
					item->selected=FALSE;
		} else {
					gtk_clist_select_row( GTK_CLIST (clist), 
						item->itemNumber, 0);
		    if (gtk_clist_row_is_visible(GTK_CLIST(clist),
				item->itemNumber) != GTK_VISIBILITY_FULL)
			gtk_clist_moveto(GTK_CLIST(clist),
					 item->itemNumber, 0, 0.5, 0);
					item->selected=TRUE;
				}
			}
		}
	}
}
コード例 #8
0
void
on_bt_dbupdate_clicked                 (GtkButton       *button,
                                        gpointer         user_data)
{
  GtkWidget *widget;
  char *sat, *mode, *uplink, *downlink, *beacon;

  if(selectedrow < 0)
    return;

  widget = lookup_widget( dialog_dbedit, "tx_dbsat" );
  sat=(char *)gtk_entry_get_text(GTK_ENTRY(widget));
  widget = lookup_widget( dialog_dbedit, "tx_dbmode" );
  mode=(char *)gtk_entry_get_text(GTK_ENTRY(widget));
  widget = lookup_widget( dialog_dbedit, "tx_dbuplink" );
  uplink=(char *)gtk_entry_get_text(GTK_ENTRY(widget));
  widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" );
  downlink=(char *)gtk_entry_get_text(GTK_ENTRY(widget));
  widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" );
  beacon=(char *)gtk_entry_get_text(GTK_ENTRY(widget));

  widget=lookup_widget( dialog_dbedit, "clist_satdb" );
  gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 0, sat);
  gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 1, mode);
  gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 2, uplink);
  gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 3, downlink);
  gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 4, beacon);
  gtk_clist_unselect_row(GTK_CLIST(widget), selectedrow, 0);

  selectedrow=-1;

  widget = lookup_widget( dialog_dbedit, "tx_dbsat" );
  gtk_entry_set_text(GTK_ENTRY(widget), "");
  widget = lookup_widget( dialog_dbedit, "tx_dbmode" );
  gtk_entry_set_text(GTK_ENTRY(widget), "");
  widget = lookup_widget( dialog_dbedit, "tx_dbuplink" );
  gtk_entry_set_text(GTK_ENTRY(widget), "");
  widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" );
  gtk_entry_set_text(GTK_ENTRY(widget), "");
  widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" );
  gtk_entry_set_text(GTK_ENTRY(widget), "");

  save_sat_db();
}
コード例 #9
0
static void
cb_enter(GtkWidget *widget)
{
  gchar           *buf[CLIST_WIDTH];
  gint            i;

  i = 0;
  buf[i++] = gkrellm_gtk_entry_get_text(&label_entry);
  buf[i++] = gkrellm_gtk_entry_get_text(&peer_entry);
  buf[i++] = gkrellm_gtk_entry_get_text(&port_spin);
  buf[i++] = gkrellm_gtk_entry_get_text(&community_entry);
  buf[i++] = gkrellm_gtk_entry_get_text(&oid_entry);
  buf[i++] = gkrellm_gtk_entry_get_text(&unit_entry);
  buf[i++] = gkrellm_gtk_entry_get_text(&freq_spin);
  buf[i++] = gkrellm_gtk_entry_get_text(&div_spin);
  buf[i++] = GTK_TOGGLE_BUTTON(delta_button)->active ? "yes" : "no";
  buf[i++] = GTK_TOGGLE_BUTTON(scale_button)->active ? "yes" : "no";
  buf[i++] = "yes"; // GTK_TOGGLE_BUTTON(active_button)->active ? "yes" : "no";

  /* validate we have input */
  if (!*(buf[1]) || !*(buf[2]) || !*(buf[3]) || !*(buf[4]))
    {
      gkrellm_config_message_dialog("Entry Error",
				    "Peer, Port, Community and OID must be entered.");
      return;
    }
  if (selected_row >= 0)
    {
      for (i = 0; i < CLIST_WIDTH; ++i)
	gtk_clist_set_text(GTK_CLIST(reader_clist), selected_row, i, buf[i]);
      gtk_clist_unselect_row(GTK_CLIST(reader_clist), selected_row, 0);
      selected_row = -1;
    }
  else
    gtk_clist_append(GTK_CLIST(reader_clist), buf);
  reset_entries();
  list_modified = TRUE;
}