Example #1
0
static int
select_list(expression_type parent_type,
            struct selection *selection,
            const freesasa_structure *structure,
            const expression *expr)
{
    int resr, resl;
    expression *left, *right;

    if (expr == NULL)
        return fail_msg("NULL expression");

    left = expr->left;
    right = expr->right;

    switch(expr->type) {
    case E_PLUS:
        if (left == NULL || right == NULL)
            return fail_msg("NULL expression");
        resl = select_list(parent_type, selection, structure, left);
        resr = select_list(parent_type, selection, structure, right);
        if (resl == FREESASA_WARN || resr == FREESASA_WARN)
            return FREESASA_WARN;
        break;
    case E_RANGE:
        if (left == NULL || right == NULL)
            return fail_msg("NULL expression");
        return select_range(E_RANGE, parent_type, selection, structure, left, right);
    case E_RANGE_OPEN_L:
        if (left != NULL || right == NULL)
            return fail_msg("NULL expression");
        return select_range(E_RANGE_OPEN_L, parent_type, selection, structure, left, right);
    case E_RANGE_OPEN_R:
        if (left == NULL || right != NULL)
            return fail_msg("NULL expression");
        return select_range(E_RANGE_OPEN_R, parent_type, selection, structure, left, right);
    case E_ID:
    case E_NUMBER:
        if (is_valid_id(parent_type, expr) == FREESASA_SUCCESS)
            select_id(parent_type, selection, structure, expr->value);
        else return freesasa_warn("select: %s: '%s' invalid %s",
                                  e_str(parent_type), expr->value, e_str(expr->type));
        break;
    default:
        return freesasa_fail("select: parse error (expression: '%s %s')",
                             e_str(parent_type), e_str(expr->type));
    }
    return FREESASA_SUCCESS;
}
static void
ensure_anchor_selected (Movement *mv)
{
  GtkTextBuffer *buffer;
  GtkTextMark *selection_mark;
  GtkTextMark *insert_mark;
  GtkTextIter anchor_begin;
  GtkTextIter anchor_end;
  GtkTextIter insert_iter;
  GtkTextIter selection_iter;
  GtkTextMark *selection_anchor_begin;
  GtkTextMark *selection_anchor_end;

  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (mv->self));

  selection_anchor_begin = gtk_text_buffer_get_mark (buffer, ANCHOR_BEGIN);
  selection_anchor_end = gtk_text_buffer_get_mark (buffer, ANCHOR_END);

  if (!selection_anchor_begin || !selection_anchor_end)
    return;

  gtk_text_buffer_get_iter_at_mark (buffer, &anchor_begin, selection_anchor_begin);
  gtk_text_buffer_get_iter_at_mark (buffer, &anchor_end, selection_anchor_end);

  insert_mark = gtk_text_buffer_get_insert (buffer);
  gtk_text_buffer_get_iter_at_mark (buffer, &insert_iter, insert_mark);

  selection_mark = gtk_text_buffer_get_selection_bound (buffer);
  gtk_text_buffer_get_iter_at_mark (buffer, &selection_iter, selection_mark);

  if ((gtk_text_iter_compare (&selection_iter, &anchor_end) < 0) &&
      (gtk_text_iter_compare (&insert_iter, &anchor_end) < 0))
    {
      if (gtk_text_iter_compare (&insert_iter, &selection_iter) < 0)
        select_range (mv, &insert_iter, &anchor_end);
      else
        select_range (mv, &anchor_end, &selection_iter);
    }
  else if ((gtk_text_iter_compare (&selection_iter, &anchor_begin) > 0) &&
           (gtk_text_iter_compare (&insert_iter, &anchor_begin) > 0))
    {
      if (gtk_text_iter_compare (&insert_iter, &selection_iter) < 0)
        select_range (mv, &anchor_begin, &selection_iter);
      else
        select_range (mv, &insert_iter, &anchor_begin);
    }
}
static void
etsm_real_move_selection_end (ETreeSelectionModel *etsm,
                              gint row)
{
	ETreePath end_path;
	gint start;

	end_path = e_tree_table_adapter_node_at_row (etsm->priv->etta, row);
	g_return_if_fail (end_path);

	start = e_tree_table_adapter_row_of_node (
		etsm->priv->etta, etsm->priv->start_path);
	clear_selection (etsm);
	select_range (etsm, start, row);
}
Example #4
0
void FindBar::on_find_next_clicked() {
    if(!window_.current_buffer()) {
        return;
    }

    auto buf = window_.current_buffer()->buffer();

    auto start = buf->get_iter_at_mark(buf->get_insert());

    auto text = unicode(find_entry_->get_text().c_str());

    locate_matches(text);

    auto next = find_next_match(start);
    last_selected_match_ = next;

    if(next > -1) {
        auto match = matches_[next];
        buf->select_range(match.first, match.second);
        window_.current_buffer()->view().scroll_to(match.first);
    }
}
Example #5
0
bool verifyFlashMemory(int moduleNumber, FILE *rbtFile, bool simulate, bool verbose)
{
  unsigned long vmeaddr, vme_virt_addr;
  volatile int *p_addr;
  char c_input[MAXLEN];
  int i, j;
  int len;
  int l_word;
  intptr_t fbase;
  int data;
  int bits = 0;
  int err = 0;
  int line = 0;
  int l_count = 0;
  //    printf("\nverifying flash memory\n");
  printlog("verifing flash memory", true, !quiet);
  vmeaddr = moduleNumber * MODULE_LENGTH  ;
  vme_virt_addr  = (unsigned long)openvme((void *)vmeaddr, VME_LENGTH, verbose);
  fbase = vme_virt_addr + FLASHBASE;
  p_addr = (volatile int *)fbase;
  select_range(vme_virt_addr, 0+RANGENUMBER, verbose);
  rewind(rbtFile);

  fgets(c_input,MAXLEN,rbtFile);
  fgets(c_input,MAXLEN,rbtFile);
  // design name
  fgets(c_input,MAXLEN,rbtFile);
  printlog("file information:", true, verbose);
  printlog(c_input, true, verbose);
  //    printf("%s",c_input);
  // architecture name
  fgets(c_input,MAXLEN,rbtFile);
  printlog(c_input, true, verbose);
  //    printf("%s",c_input);
  // part
  fgets(c_input,MAXLEN,rbtFile);
  printlog(c_input, true, verbose);
  //    printf("%s",c_input);
  // date
  fgets(c_input,MAXLEN,rbtFile);
  printlog(c_input, true, verbose);
  //    printf("%s",c_input);
  // bits
  fgets(c_input,MAXLEN,rbtFile);
  printlog(c_input, true, verbose);
  //    printf("%s",c_input);

  l_count = 0;

  //    printf("addr = %x\n",p_addr);
  if (!quiet && !verbose) {
    printf("\n");
  }
  while(fgets(c_input, MAXLEN,rbtFile) != NULL) {
    len = strlen(c_input) -1;
    //      printf("%s",c_input);

    line++;
    if((line % 10000) == 0) {
      if (verbose) {
        //          printf("line %d ",line);
        //          if (verbose) printf("time: %f clocks\n", (int) time(NULL) - timestamp); //timestamp = (int) clock();
      } else {
        if (!quiet) {
          int i;
          printf("\r");
          for (i = 0; i < line / 10000; i++) {
            printf(">");
          }
          for (i = line / 10000; i < 38; i++) {
            printf("-");
          }
          fflush(stdout);
        }
      }
    }
    for(i=0; i<len/8; i++) {
      l_word = 0;
      for(j=0; j<8; j++) {
        //              printf("%c ",c_input[j+8*i]);
        if(c_input[(7-j)+8*i] == '1') {
          l_word += (1<<j);
        }
        bits++;
      }
      //          printf("word = %x\n",l_word);
      //            prog_flash((int)p_addr,l_word);
      data = ntohl(*p_addr) & 0xff;
      if(data != l_word) {
        //          printf("ERROR: offset %x, written %x read %x\n",l_count,
        //                 l_word,data);
        err++;
      }
      //      if(err > 100)goto err_exit;

      p_addr++;
      l_count++;
      if(l_count == RANGELIMIT) {
        //          range++;
        select_range(vme_virt_addr, 1, verbose);
        p_addr = (int *) fbase;
      }
    }
  }
  //  if (!quiet && !verbose) printf("\n");
  //
  //    printf("File %s verified, %d bits, %d bytes\n", fileName, bits, l_count);
  closevme(verbose);
  // err_exit:
  //     return_controller(vme_virt_addr,vme_len);
  //    exit(1);

  if (err == 0) {
    return true;
  } else {
    return false;
  }
}
Example #6
0
void writeFlashMemory(int moduleNumber, FILE *rbtFile, bool simulate, bool verbose)
{
  int i, j;
  int len;
  int l_word;
  int bits = 0;
  char c_input[MAXLEN];
  volatile int *p_addr;
  int l_count = 0;
  unsigned long vmeaddr, vme_virt_addr;
  int line;
  line = 0;
  printlog("writing new program to flash memory", true, !quiet);

  vmeaddr = moduleNumber * MODULE_LENGTH  ;
  //    vme_len = 0x1000000;
  //    vme_am = 0x09;

  vme_virt_addr = (unsigned long)openvme((void *)vmeaddr, VME_LENGTH, verbose);
  intptr_t fbase = vme_virt_addr + FLASHBASE;
  p_addr = (int *) fbase;
  select_range(vme_virt_addr, 0+RANGENUMBER, verbose);
  // read header

  fgets(c_input,MAXLEN,rbtFile);
  fgets(c_input,MAXLEN,rbtFile);
  // design name
  fgets(c_input,MAXLEN,rbtFile);
  //    printf("%s",c_input);
  // architecture name
  fgets(c_input,MAXLEN,rbtFile);
  //    printf("%s",c_input);
  // part
  fgets(c_input,MAXLEN,rbtFile);
  //    printf("%s",c_input);
  // date
  fgets(c_input,MAXLEN,rbtFile);
  //    printf("%s",c_input);
  // bits
  fgets(c_input,MAXLEN,rbtFile);
  //    printf("%s",c_input);

  l_count = 0;
  //    printf("addr = %x\n",p_addr);
  if (!quiet && !verbose) {
    printf("\n");
  }
  while(fgets(c_input, MAXLEN,rbtFile) != NULL) {
    len = strlen(c_input) -1;
    //      printf("%s",c_input);

    line++;
    if((line % 10000) == 0) {
      if (verbose) {
        //          printf("line %d ",line);
        //          if (verbose) printf("time: %f clocks\n", (int) time(NULL) - timestamp); //timestamp = (int) clock();
      } else {
        if (!quiet) {
          int i;
          printf("\r");
          for (i = 0; i < line / 10000; i++) {
            printf(">");
          }
          for (i = line / 10000; i < 38; i++) {
            printf("-");
          }
          fflush(stdout);
        }
      }
    }
    for(i=0; i<len/8; i++) {
      l_word = 0;
      for(j=0; j<8; j++) {
        //              printf("%c ",c_input[j+8*i]);
        if(c_input[(7-j)+8*i] == '1') {
          l_word += (1<<j);
        }
        bits++;
      }
      //          printf("word = %x\n",l_word);
      if (!simulate) {
        prog_flash((intptr_t)p_addr, l_word, verbose);
      }
      p_addr++;
      l_count++;
      if(l_count == RANGELIMIT) {
        //          range++;
        select_range(vme_virt_addr, 1+RANGENUMBER, verbose);
        p_addr = (int *) fbase;
        /*int loopCounter = 0;
          int val = 0;
          range++;
          if (verbose) printf("selecting next range \n");

          while ((val != range + 1 + 64) && (loopCounter < 10))
          {
          val = select_range(vme_virt_addr, range + 1, verbose);
          loopCounter++;
          if (val != range + 1 + 64)
          {
          read_array(fbase);
          closevme(verbose);
          vme_virt_addr = (unsigned long)openvme((void *)vmeaddr,vme_len, verbose);
          fbase = vme_virt_addr + FLASHBASE;
          p_addr = (int *) fbase;
          }
          }*/

        //select_range(vme_virt_addr,range, verbose);
        //vme_virt_addr = saveSelectRange(vme_virt_addr, (void *)vmeaddr,vme_len, range + 1, verbose);
        //p_addr = (int *)fbase;
      }
    }
  }
  //  if (!quiet && !verbose) printf("\n");
  //    if (verbose) printf("File %s loaded, %d bits, %d bytes\n",fileName,bits,l_count);
  read_array(fbase);
  closevme(verbose);
}
Example #7
0
void eraseFlashMemory(int moduleNumber, bool simulate, bool verbose)
{
  int i;
  int status;
  bool errorOccured = true;
  int loopCounter = 0;
  unsigned long vmeaddr;
  unsigned long vme_virt_addr;
  int fbase;

  printlog("erasing flash memory", true, !quiet);
  while (errorOccured && (loopCounter < MAXLOOPS)) {
    loopCounter++;
    printlog("attempt #: ", true, verbose);
    printlogInt(loopCounter, verbose);
    errorOccured = false;
    vmeaddr = moduleNumber * MODULE_LENGTH  ;
    vme_virt_addr = (unsigned long) openvme((void *)vmeaddr, VME_LENGTH, verbose);
    fbase = vme_virt_addr + FLASHBASE;
    select_range(vme_virt_addr, 0+RANGENUMBER, verbose);
    for (i = 0; i <= 7; i++) {
      printlog("block #: ", true, verbose);
      printlogInt(i, verbose);
      if (!simulate) {
        status = erase_block(fbase, i, verbose);
      } else {
        status = 0;
      }
      if (status == 0) {
        printlog(" successfully erased", false, verbose);
      } else {
        printlog(" can\'t be erased", false, verbose);
        errorOccured = true;
      }
    }

    if (!errorOccured) {
      select_range(vme_virt_addr, 1+RANGENUMBER, verbose);
      for (i = 0; i <= 7; i++) {
        printlog("block #: ", true, verbose);
        printlogInt(i, verbose);
        if (!simulate) {
          status = erase_block(fbase, i, verbose);
        } else {
          status = 0;
        }
        if (status == 0) {
          printlog(" successfully erased", false, verbose);
        } else {
          printlog(" can\'t be erased", false, verbose);
          errorOccured = true;
        }
      }
    }
    read_array(fbase);
    closevme(verbose);
    sleep(2);
  }
  if(errorOccured) {
    printlog("Error erasing flash memory, aborting", true, verbose);
    closeLog(verbose);
    exit(1);
  }

}
int Fl_ToggleTree::handle(int event) {
  //  printf("event: %d\n",event);
  static Fl_ToggleNode* prev = 0;
  switch (event) {
  case FL_ENTER:
    return 1;
  case FL_RELEASE: {
      if (edit_input_->visible()) {
        end_edit();
      }
      int depth;
      int cy;
      Fl_ToggleNode* tnode = (Fl_ToggleNode*) Fl_Tree::find(Fl::event_y(), depth, cy);
      if (Fl::event_x() < x() + depth*16 + 16) {
        if (tnode->opened_) {
          current_ = tnode;
          state_ = FL_TOGGLE_OPENED;
          do_callback();
          close(tnode);
        } else {
          current_ = tnode;
          state_ = FL_TOGGLE_CLOSED;
          do_callback();
          open(tnode);
        }
        return 1;
      } else {
        if (Fl::event_state(FL_SHIFT)) {
          if (prev == 0) prev = tnode;
          select_range(prev, tnode, 1);
          current_ = 0;
          state_ = FL_TOGGLE_SELECT;
          do_callback();
        } else if (Fl::event_state(FL_CTRL)) {
          if (!tnode->selected_)
            select_range(tnode, tnode, Fl::event_state(FL_CTRL));
          else {
            tnode->selected_ = 0;
            tnode->changed_ = 1;
            tnode = 0;
          }
          current_ = 0;
          state_ = FL_TOGGLE_SELECT;
          do_callback();
        } else {
          select_range(tnode, tnode, 0);
          state_ = Fl::event_clicks() ? FL_TOGGLE_HIT : FL_TOGGLE_SELECT;
          if (tnode == current_ && state_ == FL_TOGGLE_SELECT) {
            state_ = FL_TOGGLE_RESELECT;
          }
          current_ = tnode;
          if (state_ == FL_TOGGLE_RESELECT && edit_on_reselect_) {
            edit(tnode, x() + depth*16 + label_offset_, cy);
          }

          do_callback();
        }
        damaged_ = 0;
        damage(FL_DAMAGE_CHILD);
        prev = tnode;
        
      }

    }
    return 1;
    break;
  }
    return 1;
}
static void
ide_source_view_movements_previous_line (Movement *mv)
{
  GtkTextBuffer *buffer;
  gboolean has_selection;
  guint line;
  guint offset = 0;

  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (mv->self));

  /* check for linewise */
  has_selection = !gtk_text_iter_equal (&mv->insert, &mv->selection) || !mv->exclusive;

  line = gtk_text_iter_get_line (&mv->insert);

  if ((*mv->target_offset) > 0)
    offset = *mv->target_offset;

  if (line == 0)
    return;

  /*
   * If we have a whole line selected (from say `V`), then we need to swap the cursor and
   * selection. This feels to me like a slight bit of a hack.  There may be cause to actually have
   * a selection mode and know the type of selection (line vs individual characters).
   */
  if (is_single_line_selection (&mv->insert, &mv->selection))
    {
      if (gtk_text_iter_compare (&mv->insert, &mv->selection) > 0)
        gtk_text_iter_order (&mv->insert, &mv->selection);
      gtk_text_iter_set_line (&mv->insert, gtk_text_iter_get_line (&mv->insert) - 1);
      select_range (mv, &mv->insert, &mv->selection);
      ensure_anchor_selected (mv);
      return;
    }

  if (is_single_char_selection (&mv->insert, &mv->selection))
    {
      if (gtk_text_iter_compare (&mv->insert, &mv->selection) > 0)
        {
          if (offset)
            --offset;
          *mv->target_offset = offset;
        }
    }

  gtk_text_buffer_get_iter_at_line (buffer, &mv->insert, line - 1);
  if ((line - 1) == gtk_text_iter_get_line (&mv->insert))
    {
      for (; offset; offset--)
        if (!gtk_text_iter_ends_line (&mv->insert))
          if (!gtk_text_iter_forward_char (&mv->insert))
            break;

      if (has_selection)
        {
          if (gtk_text_iter_equal (&mv->insert, &mv->selection))
            gtk_text_iter_backward_char (&mv->insert);
          select_range (mv, &mv->insert, &mv->selection);
          ensure_anchor_selected (mv);
        }
      else
        gtk_text_buffer_select_range (buffer, &mv->insert, &mv->insert);
    }

  /* make sure selection/insert are up to date */
  if (!gtk_text_buffer_get_has_selection (buffer))
    mv->selection = mv->insert;
}