示例#1
0
文件: gtk.c 项目: TheSLinux-forks/uim
static void
candwin_update(gchar **str)
{
  int index, need_hilite;
  sscanf(str[1], "%d", &index);
  sscanf(str[2], "%d", &need_hilite);
  cwin->need_hilite = (need_hilite == 1) ? TRUE : FALSE;

  uim_cand_win_gtk_set_index(cwin, index);
}
示例#2
0
void
uim_cand_win_horizontal_gtk_set_page(UIMCandWinHorizontalGtk *horizontal_cwin, gint page)
{
  guint len, new_page;
  gint new_index;
  UIMCandWinGtk *cwin;

  g_return_if_fail(UIM_IS_CAND_WIN_HORIZONTAL_GTK(horizontal_cwin));
  cwin = UIM_CAND_WIN_GTK(horizontal_cwin);
  g_return_if_fail(cwin->stores);

  len = cwin->stores->len;
  g_return_if_fail(len);

  if (page < 0)
    new_page = len - 1;
  else if (page >= (gint) len)
    new_page = 0;
  else
    new_page = page;

  update_table_button(horizontal_cwin, new_page);
#if GTK_CHECK_VERSION(3, 4, 0)
  show_table(GTK_GRID(cwin->view), horizontal_cwin->buttons);
#else
  show_table(GTK_TABLE(cwin->view), horizontal_cwin->buttons);
#endif

  cwin->page_index = new_page;

  if (cwin->display_limit) {
    if (cwin->candidate_index >= 0)
      new_index
        = (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit);
    else
      new_index = -1;
  } else {
    new_index = cwin->candidate_index;
  }

  if (new_index >= (gint) cwin->nr_candidates)
    new_index = cwin->nr_candidates - 1;

  /* check if (cwin->candidate_index != new_index) ?? */
  uim_cand_win_gtk_set_index(cwin, new_index);
}
示例#3
0
文件: gtk.c 项目: TheSLinux-forks/uim
/* copied from uim-cand-win-gtk.c */
static void
uim_cand_win_gtk_set_page(UIMCandidateWindow *cwin, gint page)
{
  guint len, new_page;
  gint new_index;

  g_return_if_fail(UIM_IS_CANDIDATE_WINDOW(cwin));
  g_return_if_fail(cwin->stores);

  len = cwin->stores->len;
  g_return_if_fail(len);

  if (page < 0)
    new_page = len - 1;
  else if (page >= (gint) len)
    new_page = 0;
  else
    new_page = page;

  if (cwin->stores->pdata[new_page]) {
    gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
                            GTK_TREE_MODEL(cwin->stores->pdata[new_page]));
  }

  cwin->page_index = new_page;

  if (cwin->display_limit) {
    if (cwin->candidate_index >= 0)
      new_index
	= (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit);
    else
      new_index = -1;
  } else {
    new_index = cwin->candidate_index;
  }

  if (new_index >= (gint) cwin->nr_candidates)
    new_index = cwin->nr_candidates - 1;

 /* shrink the window */
  gtk_window_resize(GTK_WINDOW(cwin), CANDWIN_DEFAULT_WIDTH, 1);

  cwin->need_page_update = FALSE; /* avoid infinite loop with set_index() */
  uim_cand_win_gtk_set_index(cwin, new_index);
}
示例#4
0
static void
uim_cand_win_gtk_real_set_page(UIMCandWinGtk *cwin, gint page)
{
    guint len, new_page;
    gint new_index;

    g_return_if_fail(UIM_IS_CAND_WIN_GTK(cwin));
    g_return_if_fail(cwin->stores);

    len = cwin->stores->len;
    g_return_if_fail(len);

    if (page < 0)
        new_page = len - 1;
    else if (page >= (gint) len)
        new_page = 0;
    else
        new_page = page;

    /* XXX: change to call virtual update_view()
    gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
    		  GTK_TREE_MODEL(cwin->stores->pdata[new_page]));
    */

    cwin->page_index = new_page;

    if (cwin->display_limit) {
        if (cwin->candidate_index >= 0)
            new_index
                = (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit);
        else
            new_index = -1;
    } else {
        new_index = cwin->candidate_index;
    }

    if (new_index >= (gint) cwin->nr_candidates)
        new_index = cwin->nr_candidates - 1;

    uim_cand_win_gtk_set_index(cwin, new_index);
}
示例#5
0
void
uim_cand_win_vertical_gtk_set_page(UIMCandWinVerticalGtk *vertical_cwin, gint page)
{
  guint len, new_page;
  gint new_index;
  UIMCandWinGtk *cwin;

  g_return_if_fail(UIM_IS_CAND_WIN_VERTICAL_GTK(vertical_cwin));
  cwin = UIM_CAND_WIN_GTK(vertical_cwin);
  g_return_if_fail(cwin->stores);

  len = cwin->stores->len;
  g_return_if_fail(len);

  if (page < 0)
    new_page = len - 1;
  else if (page >= (gint) len)
    new_page = 0;
  else
    new_page = page;

  gtk_tree_view_set_model(GTK_TREE_VIEW(cwin->view),
			  GTK_TREE_MODEL(cwin->stores->pdata[new_page]));

  cwin->page_index = new_page;

  if (cwin->display_limit) {
    if (cwin->candidate_index >= 0)
      new_index
        = (new_page * cwin->display_limit) + (cwin->candidate_index % cwin->display_limit);
    else
      new_index = -1;
  } else {
    new_index = cwin->candidate_index;
  }

  if (new_index >= (gint) cwin->nr_candidates)
    new_index = cwin->nr_candidates - 1;

  uim_cand_win_gtk_set_index(cwin, new_index);
}