예제 #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
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);
        }
    }
}
예제 #3
0
파일: restore.c 프로젝트: halgandd/bacula
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);
   }
}