⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abookmarkview.c

📁 linux手机下的电话本源码(是contact的上层)
💻 C
📖 第 1 页 / 共 2 页
字号:
              last = gtk_tree_model_get_path (model, &child_iter);            }          }          gtk_tree_view_set_cursor (treeview, last, NULL, FALSE);          gtk_tree_path_free (last);        }      }    }    gtk_tree_path_free (path);    return result;  }  else if (event->keyval == GDK_Down)  {    GtkTreePath *path = NULL;    GtkTreeViewColumn *col = NULL;    GtkTreeModel *model = NULL;    gboolean result = FALSE;    gtk_tree_view_get_cursor (treeview, &path, &col);    model = gtk_tree_view_get_model (treeview);    if (model)    {      GtkTreeIter iter;      if (gtk_tree_model_iter_nth_child          (model, &iter, NULL,           gtk_tree_model_iter_n_children (model, NULL) - 1))      {        GtkTreePath *last = NULL;        last = gtk_tree_model_get_path (model, &iter);        if (gtk_tree_view_row_expanded (treeview, last))        {          GtkTreeIter child_iter;          if (gtk_tree_model_iter_nth_child              (model, &child_iter, &iter,               gtk_tree_model_iter_n_children (model, &iter) - 1))          {            gtk_tree_path_free (last);            last = gtk_tree_model_get_path (model, &child_iter);          }        }        result = !gtk_tree_path_compare (path, last);        if (result)        {          GtkTreePath *first = NULL;          first = gtk_tree_path_new_first ();          gtk_tree_view_set_cursor (treeview, first, NULL, FALSE);          gtk_tree_path_free (first);        }        gtk_tree_path_free (last);      }    }    gtk_tree_path_free (path);    return result;  }  if (!event->state && event->string &&      (isalpha (event->string[0]) || isalnum (event->string[0])))  {    if (!GTK_WIDGET_HAS_FOCUS (view->search_entry))    {      GdkEvent *new_event;      gtk_widget_grab_focus (view->search_entry);      new_event = gdk_event_copy ((GdkEvent *) event);      ((GdkEventKey *) new_event)->window = view->search_entry->window;      gtk_widget_event (view->search_entry, new_event);      return FALSE;    }  }  return FALSE;}voidabook_markview_string_cell_data_func (GtkTreeViewColumn *col,                                      GtkCellRenderer *cell,                                      GtkTreeModel *model,                                      GtkTreeIter *iter, GtkTreeView *view){  GtkTreeIter parent_iter;  if (gtk_tree_model_iter_parent (model, &parent_iter, iter))  {    gchar *origtxt = NULL;    gchar *markuptxt = NULL;    gtk_tree_model_get (GTK_TREE_MODEL (model),                        iter, COL_MV_STRING, &origtxt, -1);//              g_print("%s(): entering, str = %s\n", __FUNCTION__, origtxt);    if (TRUE)    {      GtkTreePath *curr_path = NULL;      GtkTreePath *cursor_path = NULL;      GtkTreeViewColumn *unused = NULL;      gtk_tree_view_get_cursor (view, &cursor_path, &unused);      curr_path = gtk_tree_model_get_path (model, iter);      if (gtk_tree_path_compare (curr_path, cursor_path) == 0)      {        markuptxt =          g_strdup_printf ("<span color=\"White\" style=\"italic\">%s</span>",                           origtxt);      }      else      {        markuptxt =          g_strdup_printf ("<span color=\"Blue\" style=\"italic\">%s</span>",                           origtxt);      }      gtk_tree_path_free (curr_path);      gtk_tree_path_free (cursor_path);    }    g_object_set (G_OBJECT (cell), "markup", markuptxt, NULL);    g_free (markuptxt);    g_free (origtxt);  }#if 1  else  {    GtkTreePath *path = NULL;    GtkTreePath *first = NULL;    path = gtk_tree_model_get_path (model, iter);    first = gtk_tree_path_new_first ();    if (path && first && !gtk_tree_path_compare (path, first))    {      gchar *origtxt = NULL;      gboolean active;      gtk_tree_model_get (GTK_TREE_MODEL (model),                          iter,                          COL_MV_STRING, &origtxt, COL_MV_CHECK, &active, -1);      //              g_print("%s(): entering, str = %s\n", __FUNCTION__, origtxt);      if (active)      {        gchar *markuptxt = NULL;        markuptxt = g_strdup_printf ("<span color=\"Red\">%s</span>", origtxt);        g_object_set (G_OBJECT (cell), "markup", markuptxt, NULL);        g_free (markuptxt);      }      g_free (origtxt);    }    gtk_tree_path_free (path);    gtk_tree_path_free (first);  }#endif  return;}gbooleanabook_markview_focus_in_event_cb (GtkWidget *widget, GdkEventFocus *event,                                  gpointer user_data){  ABookMarkView *view = (ABookMarkView *) widget;  gtk_widget_grab_focus (view->treeview);  return FALSE;}static voidabook_markview_init (ABookMarkView *view){  GtkTreeViewColumn *col;  GtkCellRenderer *renderer;  GtkTreeIter iter;  GtkWidget *vbox = NULL;  view->scroll_window = gtk_auto_scrolled_window_new ();  view->treestore = gtk_tree_store_new (NUM_MV_COLS,                                        G_TYPE_STRING,                                        G_TYPE_STRING,                                        G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF);  gtk_tree_store_append (view->treestore, &iter, NULL);  gtk_tree_store_set (view->treestore, &iter,                      COL_MV_STRING, "Select All", COL_MV_CHECK, FALSE, -1);  view->treeview = gtk_tree_view_new ();  /* column check */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "Check");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  renderer = gtk_cell_renderer_toggle_new ();  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_tree_view_column_add_attribute (col, renderer, "active", COL_MV_CHECK);  g_signal_connect (G_OBJECT (renderer), "toggled",                    G_CALLBACK (abook_markview_toggled_cb), view->treeview);  /* column string */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "String");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  gtk_tree_view_column_set_clickable (col, FALSE);  renderer = gtk_cell_renderer_text_new ();  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_cell_renderer_set_fixed_size (renderer, 110, -1);  g_object_set (G_OBJECT (renderer), "ypad", 5, NULL);  gtk_tree_view_column_add_attribute (col, renderer, "text", COL_MV_STRING);  gtk_tree_view_set_expander_column (GTK_TREE_VIEW (view->treeview), col);  gtk_tree_view_column_set_cell_data_func (col, renderer,                                           (GtkTreeCellDataFunc)                                           abook_markview_string_cell_data_func,                                           view->treeview, NULL);  /* column picture */  col = gtk_tree_view_column_new ();  gtk_tree_view_column_set_title (col, "Picutre");  gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col);  gtk_tree_view_column_set_clickable (col, FALSE);  renderer = gtk_cell_renderer_pixbuf_new ();  gtk_tree_view_column_pack_start (col, renderer, TRUE);  gtk_tree_view_column_add_attribute (col, renderer, "pixbuf", COL_MV_PIC);  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view->treeview), FALSE);  gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view->treeview), FALSE);  g_signal_connect (G_OBJECT (view->treeview), "key-press-event",                    G_CALLBACK (abook_markview_treeview_key_press_event_cb),                    view);  gtk_tree_view_set_model (GTK_TREE_VIEW (view->treeview),                           GTK_TREE_MODEL (view->treestore));  g_object_unref (view->treestore);  view->scroll_window = gtk_auto_scrolled_window_new ();  gtk_auto_scrolled_window_add (GTK_AUTO_SCROLLED_WINDOW (view->scroll_window),                                view->treeview);  view->search_entry = gtk_entry_new ();//      g_signal_connect(G_OBJECT(view->search_entry), "key_press_event", G_CALLBACK(abook_listview_entry_key_press_event_cb), view);  vbox = gtk_vbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (vbox), view->scroll_window, TRUE, TRUE, 0);  if (TRUE)  {    GtkWidget *hbox = NULL;    GtkWidget *search_icon = NULL;    hbox = gtk_hbox_new (FALSE, 0);    if (TRUE)    {      gchar *picpath = NULL;      picpath = g_build_filename (abook_env_get_picpath (), "search.png", NULL);      search_icon = gtk_image_new_from_file (picpath);    }    gtk_box_pack_start (GTK_BOX (hbox), search_icon, FALSE, FALSE, 5);    gtk_box_pack_start (GTK_BOX (hbox), view->search_entry, TRUE, TRUE, 0);    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);  }  if (TRUE)  {    GtkWidget *eventbox = NULL;    eventbox = gtk_event_box_new ();    GTK_WIDGET_SET_FLAGS (eventbox, GTK_CAN_FOCUS);    gtk_widget_set_events (eventbox, GDK_ALL_EVENTS_MASK);    gtk_event_box_set_above_child (GTK_EVENT_BOX (eventbox), FALSE);    gtk_event_box_set_visible_window (GTK_EVENT_BOX (eventbox), FALSE);    gtk_container_add (GTK_CONTAINER (eventbox), vbox);    gtk_container_add (GTK_CONTAINER (view), eventbox);//              g_signal_connect(G_OBJECT(view), "key-press-event", G_CALLBACK(abook_listview_key_press_event_cb), NULL);  }  GTK_WIDGET_SET_FLAGS (view, GTK_CAN_FOCUS);  g_signal_connect (G_OBJECT (view), "focus-in-event",                    G_CALLBACK (abook_markview_focus_in_event_cb), NULL);  view->status = MARK_VIEW_STATUS_CANCEL;  return;}GtkWidget *abook_markview_new (void){  return g_object_new (ABOOK_TYPE_MARKVIEW, NULL);}GtkTreeStore *abook_markview_get_model (ABookMarkView *view){  if (view->treestore)  {    g_object_ref (view->treestore);  }  return view->treestore;}GtkWidget *abook_markview_get_view (ABookMarkView *view){  if (view->treeview)  {    g_object_ref (view->treeview);  }  return view->treeview;}voidabook_markview_update (ABookMarkView *view){  GtkTreePath *path = NULL;  path = gtk_tree_path_new_first ();  gtk_tree_view_set_cursor (GTK_TREE_VIEW (view->treeview), path, NULL, TRUE);  gtk_tree_path_free (path);  return;}/* vi:ts=2:nowrap:ai:expandtab*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -