/* * 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); } } } }
void mark_matrix_zero(ww::Matrix<int>& m) { size_t r = 0; size_t c = 0; std::vector<bool> mark_row(m.rows(), false); std::vector<bool> mark_col(m.cols(), false); for (r = 0; r < m.rows(); ++ r) { for (c = 0; c < m.cols(); ++ c) { if (0 == m.get(r, c)) { mark_row[r] = true; mark_col[c] = true; } } } for (r = 0; r < m.rows(); ++ r) { for (c = 0; c < m.cols(); ++ c) { if (mark_col[c] || mark_row[r]) m.set(r, c, 0); } } }
void on_restore_remove_button_clicked(GtkButton *button, gpointer user_data) { int num_selected = g_list_length(restore->list->selection); int row; for (int i=0; i < num_selected; i++) { row = (int)(long int)g_list_nth_data(restore->list->selection, i); mark_row(row, false); } }