Пример #1
0
void select_line_inside_window(void)
{
	if (g_list_position(lines, selected_line) < g_list_position(lines, first_line))
		select_line(first_line);
	else if (g_list_position(lines, selected_line) > g_list_position(lines, last_line))
		select_line(last_line);
}
Пример #2
0
static void
scan_start (unsigned int timestamp)
{
  ScanState *state = scan_state();
  switch (state->timer_state)
    {
    case SCAN_IDLE:
      state->timer_state = SCAN_LINES;
      state->scan_column = 0;
      state->scan_row = 0;
      g_timeout_add_full (G_PRIORITY_HIGH_IDLE, 600, increment_scan, state, NULL);
      select_line (state->scan_row);
      break;
    case SCAN_LINES_DONE:
      state->timer_state = SCAN_KEYS;
      g_timeout_add_full (G_PRIORITY_HIGH_IDLE, 600, increment_scan, state, NULL);
      deselect_line (state->scan_row);
      select_key (state->scan_row, state->scan_column);
      break;
    case SCAN_KEYS_DONE:
      gtk_button_clicked (buttons[state->scan_row][state->scan_column]);
      deselect_key (state->scan_row, state->scan_column);
      state->timer_state = SCAN_IDLE;
      break;
    default:
      g_print("unexpected state for 'scan start'\n");
    }
}
Пример #3
0
static gboolean
increment_scan (gpointer data)
{
  ScanState *state = (ScanState *) data;
  int max_columns;
  switch (state->timer_state)
    {  
      case SCAN_IDLE: 
/* happens if switch-break occurs before the timer fires, after SCAN_KEYS_DONE*/
          return FALSE;
      case SCAN_LINES:
          deselect_line (state->scan_row);
          state->scan_row = (++state->scan_row < MAX_ROWS) ? state->scan_row : 0;
          select_line (state->scan_row);
          g_print ("line %d\n", state->scan_row);
	  break;
      case SCAN_KEYS:
          deselect_key (state->scan_row, state->scan_column);
	  if (state->scan_row == MAX_ROWS-1) max_columns = 2;
	  else max_columns = MAX_COLUMNS; /* last row has only two keys */
          state->scan_column = (++state->scan_column < max_columns) ? state->scan_column : 0;
          select_key (state->scan_row, state->scan_column);
          g_print ("row %d\n", state->scan_column);
	  break;
      case SCAN_LINES_DONE:
      case SCAN_KEYS_DONE:
	  return FALSE;
    }
  return TRUE;
}
Пример #4
0
void displayNextLine() {
  // First things first: latch in the values we clocked in
  // last time.

  PORTC |= SH_BIT_OE; // Turn off the LED drivers (inverted)
  PORTC |= SH_BIT_LE;  // latch the shift register
  PORTC &= ~SH_BIT_LE; // un-latch

  // Pick our line
  select_line();

  PORTC &= ~SH_BIT_OE; // Turn the LED drivers back on.


  // Great, that's done, now we can prepare the next line

  // interlace lines, probably looks better.

  g_line+=2;

  if(g_line==LED_LINES) {
    g_line=1;
  }

  // on to the next brightness level.

  if(g_line>LED_LINES) {
    g_line=0;
    g_level++;

    if (g_level>=BRIGHTNESS_LEVELS) {
      g_level=0;
    }

    // Change the timer frequency to give us a better range of brightness
    // When it's linear the brightness levels got more same-y toward the top

    if (g_level < 6)
      OCR1A = 100;
    else if (g_level < 11)
      OCR1A = 200;
    else
      OCR1A = 300;
  }

  g_circle++;

  if (g_circle == CIRCLE) {
    // It appears we've completed a whole frame! Now's the time to decide
    // if we're going to switch buffers.

    buffer_status[g_bufCurr] = BUFFER_CLEAN;
    buffer_status[g_bufNext] = BUFFER_BUSY;
    g_bufCurr = g_bufNext;
  }

  // Send stuff out the shift register.
  shift_24_bit();
}
Пример #5
0
void select_previous_line_by_first_letter(char letter)
{
	GList *line_ptr;

	for (line_ptr = g_list_previous(selected_line); line_ptr != NULL;
			line_ptr = g_list_previous(line_ptr)) {
		if (FILE(NODE(line_ptr))->name[0] == letter) {
			select_line(line_ptr);
			return;
		}
	}
}
static void
gutter_renderer_activate (GtkSourceGutterRenderer *renderer,
                          GtkTextIter             *iter,
                          GdkRectangle            *rect,
                          GdkEvent                *event)
{
	GtkSourceGutterRendererLines *lines;

	lines = GTK_SOURCE_GUTTER_RENDERER_LINES (renderer);

	if (event->type == GDK_BUTTON_PRESS && (event->button.button == 1))
	{
		GtkTextBuffer *buffer;

		buffer = get_buffer (lines);

		if ((event->button.state & GDK_CONTROL_MASK) != 0)
		{
			/* Single click + Ctrl -> select the line */
			select_line (lines, iter);
		}
		else if ((event->button.state & GDK_SHIFT_MASK) != 0)
		{
			/* Single click + Shift -> extended current
			   selection to include the clicked line */
			extend_selection_to_line (lines, iter);
		}
		else
		{
			gtk_text_buffer_place_cursor (buffer, iter);
		}
	}
	else if (event->type == GDK_2BUTTON_PRESS && (event->button.button == 1))
	{
		select_line (lines, iter);
	}
}
Пример #7
0
void select_file(GNode *file)
{
	select_line(FILE(file)->line);
}