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

📄 gsegyensembleselect.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 2 页
字号:
        private->restart_animation = FALSE;        private->time_elapsed = 0;        g_timer_start (private->animation_timer);        g_idle_add (g_segy_ensemble_select_animate, (gpointer)self);        private->animation_timeout_source = 0;        return FALSE;    }    private->time_elapsed = g_timer_elapsed (private->animation_timer, NULL);    if (private->block_selection || private->time_elapsed < private->animation_delay / 1000.0) {        if (0 == private->animation_timeout_source) {            private->animation_timeout_source = g_timeout_add (MIN_ANIMATION_DELAY, g_segy_ensemble_select_animate, (gpointer)self);            return FALSE;        } else            return TRUE;    }    private->time_elapsed -= private->animation_delay / 1000.0;    if (private->time_elapsed < 0)        private->time_elapsed = 0;    gboolean result;    g_timer_start (private->animation_timer);    if (private->forward_animation)        result = g_segy_ensemble_select_next_ensemble (self);    else        result = g_segy_ensemble_select_previous_ensemble (self);    if (FALSE == result) {        private->stop_animation = TRUE;        g_timer_stop (private->animation_timer);        gdk_threads_enter ();        gtk_widget_set_sensitive (private->stop_ensemble_button, FALSE);        gdk_threads_leave ();    } else if (0 == private->animation_timeout_source) {        private->animation_timeout_source = g_timeout_add (MIN_ANIMATION_DELAY, g_segy_ensemble_select_animate, (gpointer)self);        return FALSE;    }    return result;}static void g_segy_ensemble_select_start_animation (GSEGYEnsembleSelect *self) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    if (private->stop_animation) {        private->stop_animation = FALSE;        gtk_widget_set_sensitive (private->stop_ensemble_button, TRUE);        private->time_elapsed = 0;        g_timer_start (private->animation_timer);        g_idle_add (g_segy_ensemble_select_animate, (gpointer)self);    } else {        private->stop_animation = FALSE;        private->restart_animation = TRUE;    }}static void g_segy_ensemble_select_backward_animation_handler (GtkWidget *widget, gpointer data) {    GSEGYEnsembleSelect *self = G_SEGY_ENSEMBLE_SELECT (data);    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    private->forward_animation = FALSE;    g_segy_ensemble_select_start_animation (self);}static void g_segy_ensemble_select_forward_animation_handler (GtkWidget *widget, gpointer data) {    GSEGYEnsembleSelect *self = G_SEGY_ENSEMBLE_SELECT (data);    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    private->forward_animation = TRUE;    g_segy_ensemble_select_start_animation (self);}static void g_segy_ensemble_select_stop_animation_handler (GtkWidget *widget, gpointer data) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (G_SEGY_ENSEMBLE_SELECT (data));    private->stop_animation = TRUE;}void g_segy_ensemble_select_stop_animation (GSEGYEnsembleSelect *self) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    private->stop_animation = TRUE;}static void g_segy_ensemble_select_list_selection_handler (GtkTreeView *treeview, gpointer data) {    GSEGYEnsembleSelect *self = G_SEGY_ENSEMBLE_SELECT (data);    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    if (FALSE == private->block_selection) {        g_segy_ensemble_select_get_selection (self);        g_segy_ensemble_select_ensemble_select_signal (self);    }}static void g_segy_ensemble_select_animation_delay_handler (GtkWidget *widget, gpointer data) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (G_SEGY_ENSEMBLE_SELECT (data));    private->animation_delay = gtk_range_get_value (GTK_RANGE (widget));    if (FALSE == private->stop_animation)        private->restart_animation = TRUE;}void g_segy_ensemble_select_reset (GSEGYEnsembleSelect *self) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    private->list_selection = 0;    if (private->stop_animation)        g_segy_ensemble_select_set_selection (self);}void g_segy_ensemble_select_set_title (GSEGYEnsembleSelect *self, const gchar *text) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    gtk_tree_view_column_set_title (gtk_tree_view_get_column (GTK_TREE_VIEW (private->tree_view), 0), text);}GtkWidget* g_segy_ensemble_select_get_main_widget (GSEGYEnsembleSelect *self) {    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (self);    if (NULL == private->vbox) {        private->handle = gtk_handle_box_new ();        gtk_handle_box_set_shadow_type (GTK_HANDLE_BOX (private->handle), GTK_SHADOW_IN);        gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (private->handle), GTK_POS_TOP);        gtk_handle_box_set_snap_edge (GTK_HANDLE_BOX (private->handle), GTK_POS_LEFT);        gtk_container_set_border_width (GTK_CONTAINER (private->handle), 5);        private->ensemble_select_tips = gtk_tooltips_new ();        g_object_ref (G_OBJECT (private->ensemble_select_tips));        gtk_object_sink (GTK_OBJECT (private->ensemble_select_tips));        private->vbox = gtk_vbox_new (FALSE, 3);        gtk_container_add (GTK_CONTAINER (private->handle), private->vbox);        private->scrolled_window = gtk_scrolled_window_new (NULL, NULL);        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->scrolled_window), GTK_SHADOW_IN);        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->scrolled_window),                                        GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);        gtk_widget_set_size_request (GTK_WIDGET (private->scrolled_window), 20, 400);        gtk_box_pack_start (GTK_BOX (private->vbox), private->scrolled_window, TRUE, TRUE, 0);        private->tree_view = gtk_tree_view_new ();        gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (private->tree_view), TRUE);        gtk_tree_view_set_reorderable (GTK_TREE_VIEW (private->tree_view), FALSE);        gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (private->tree_view)),                                     GTK_SELECTION_SINGLE);        private->ensemble_cell_renderer = gtk_cell_renderer_text_new ();        g_object_set (G_OBJECT (private->ensemble_cell_renderer), "xalign", 1.0, "xpad", 5, NULL);        gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (private->tree_view),                                                     -1, "Ensemble", private->ensemble_cell_renderer,                                                     "text", 0, NULL);        gtk_tree_view_column_set_alignment (gtk_tree_view_get_column (GTK_TREE_VIEW (private->tree_view), 0), 0.97);        private->ensemble_list_store = gtk_list_store_new (1, G_TYPE_STRING);        GtkTreeIter iter;        guint i;        for (i = 0; i < private->labels->len; i++) {            gtk_list_store_append (private->ensemble_list_store, &iter);            gtk_list_store_set (private->ensemble_list_store, &iter, 0,                                (const gchar*)g_ptr_array_index (private->labels, i), -1);        }        gtk_tree_view_set_model (GTK_TREE_VIEW (private->tree_view), GTK_TREE_MODEL (private->ensemble_list_store));        gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (private->tree_view), FALSE);        gtk_container_add (GTK_CONTAINER (private->scrolled_window), private->tree_view);        gtk_signal_connect (GTK_OBJECT (private->tree_view), "cursor-changed",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_list_selection_handler),                            (gpointer)G_OBJECT (self));        private->animation_delay_frame = gtk_frame_new (_("Animation delay"));        gtk_box_pack_start (GTK_BOX (private->vbox), private->animation_delay_frame, FALSE, FALSE, 2);        private->animation_delay_vbox = gtk_vbox_new (TRUE, 3);        gtk_container_set_border_width (GTK_CONTAINER (private->animation_delay_vbox), 2);        gtk_container_add (GTK_CONTAINER (private->animation_delay_frame), private->animation_delay_vbox);        private->animation_delay_scale = gtk_hscale_new_with_range (MIN_ANIMATION_DELAY, MIN_ANIMATION_DELAY * 20, MIN_ANIMATION_DELAY);        gtk_scale_set_draw_value (GTK_SCALE (private->animation_delay_scale), FALSE);        gtk_box_pack_start (GTK_BOX (private->animation_delay_vbox), private->animation_delay_scale, FALSE, FALSE, 2);        gtk_signal_connect (GTK_OBJECT (private->animation_delay_scale), "value_changed",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_animation_delay_handler),                            (gpointer)G_OBJECT (self));        private->hbox = gtk_hbox_new (FALSE, 3);        gtk_box_pack_start (GTK_BOX (private->vbox), private->hbox, FALSE, FALSE, 0);        private->backward_ensemble_button = gtk_button_new ();#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION <= 4        private->backward_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_GOTO_FIRST, GTK_ICON_SIZE_MENU);#else        private->backward_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_MEDIA_REWIND, GTK_ICON_SIZE_MENU);#endif        gtk_container_add (GTK_CONTAINER (private->backward_ensemble_button), private->backward_ensemble_icon);        gtk_box_pack_start (GTK_BOX (private->hbox), private->backward_ensemble_button, FALSE, FALSE, 0);        gtk_signal_connect (GTK_OBJECT (private->backward_ensemble_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_backward_animation_handler),                            (gpointer)G_OBJECT (self));        gtk_tooltips_set_tip (GTK_TOOLTIPS (private->ensemble_select_tips), private->backward_ensemble_button,                              _("Animate backward"),                              _("This button activates the backward"                                "animation of ensembles."));        private->previous_ensemble_button = gtk_button_new ();#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION <= 4        private->previous_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_MENU);#else        private->previous_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS, GTK_ICON_SIZE_MENU);#endif        gtk_container_add (GTK_CONTAINER (private->previous_ensemble_button), private->previous_ensemble_icon);        gtk_box_pack_start (GTK_BOX (private->hbox), private->previous_ensemble_button, FALSE, FALSE, 0);        gtk_signal_connect (GTK_OBJECT (private->previous_ensemble_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_previous_ensemble_handler),                            (gpointer)G_OBJECT (self));        gtk_tooltips_set_tip (GTK_TOOLTIPS (private->ensemble_select_tips), private->previous_ensemble_button,                              _("Previous ensemble"),                              _("This button selects the previous ensemble."));        private->stop_ensemble_button = gtk_button_new ();#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION <= 4        private->stop_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_STOP, GTK_ICON_SIZE_MENU);#else        private->stop_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_MEDIA_STOP, GTK_ICON_SIZE_MENU);#endif        gtk_container_add (GTK_CONTAINER (private->stop_ensemble_button), private->stop_ensemble_icon);        gtk_box_pack_start (GTK_BOX (private->hbox), private->stop_ensemble_button, FALSE, FALSE, 0);        gtk_widget_set_sensitive (private->stop_ensemble_button, FALSE);        gtk_signal_connect (GTK_OBJECT (private->stop_ensemble_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_stop_animation_handler),                            (gpointer)G_OBJECT (self));        gtk_tooltips_set_tip (GTK_TOOLTIPS (private->ensemble_select_tips), private->stop_ensemble_button,                              _("Stop animation"),                              _("This button stops the animation."));        private->next_ensemble_button = gtk_button_new ();#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION <= 4        private->next_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_MENU);#else        private->next_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_MEDIA_NEXT, GTK_ICON_SIZE_MENU);#endif        gtk_container_add (GTK_CONTAINER (private->next_ensemble_button), private->next_ensemble_icon);        gtk_box_pack_start (GTK_BOX (private->hbox), private->next_ensemble_button, FALSE, FALSE, 0);        gtk_signal_connect (GTK_OBJECT (private->next_ensemble_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_next_ensemble_handler),                            (gpointer)G_OBJECT (self));        gtk_tooltips_set_tip (GTK_TOOLTIPS (private->ensemble_select_tips), private->next_ensemble_button,                              _("Next ensemble"),                              _("This button selects the next ensemble."));        private->forward_ensemble_button = gtk_button_new ();#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION <= 4        private->forward_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_GOTO_LAST, GTK_ICON_SIZE_MENU);#else        private->forward_ensemble_icon = gtk_image_new_from_stock (GTK_STOCK_MEDIA_FORWARD, GTK_ICON_SIZE_MENU);#endif        gtk_container_add (GTK_CONTAINER (private->forward_ensemble_button), private->forward_ensemble_icon);        gtk_box_pack_start (GTK_BOX (private->hbox), private->forward_ensemble_button, FALSE, FALSE, 0);        gtk_signal_connect (GTK_OBJECT (private->forward_ensemble_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_ensemble_select_forward_animation_handler),                            (gpointer)G_OBJECT (self));        gtk_tooltips_set_tip (GTK_TOOLTIPS (private->ensemble_select_tips), private->forward_ensemble_button,                              _("Animate forward"),                              _("This button activates the forward"                                "animation of ensembles."));        gtk_widget_show_all (private->handle);    }    return private->handle;}GSEGYEnsembleSelect* g_segy_ensemble_select_new (GPtrArray *labels) {    GSEGYEnsembleSelect *new_ensemble_select = G_SEGY_ENSEMBLE_SELECT (g_object_new (G_SEGY_TYPE_ENSEMBLE_SELECT, NULL));    GSEGYEnsembleSelectPrivate *private = G_SEGY_ENSEMBLE_SELECT_GET_PRIVATE (new_ensemble_select);    private->labels = labels;    return new_ensemble_select;}

⌨️ 快捷键说明

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