File indexing completed on 2024-05-05 05:34:57
0001 /* 0002 this file is part of the oxygen gtk engine 0003 SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0004 0005 based on the Null Theme Engine for Gtk+. 0006 SPDX-FileCopyrightText: 2008 Robert Staudinger <robert.staudinger@gmail.com> 0007 0008 SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 #include "oxygensliderdemowidget.h" 0012 0013 #include <iostream> 0014 #include <string> 0015 0016 namespace Oxygen 0017 { 0018 0019 //____________________________________________________ 0020 SliderDemoWidget::SliderDemoWidget( void ) 0021 { 0022 0023 // main widget 0024 GtkWidget* mainWidget( gtk_hbox_new( false, 0 ) ); 0025 gtk_box_set_spacing( GTK_BOX( mainWidget ), 5 ); 0026 setWidget( mainWidget ); 0027 0028 // setup 0029 setName( "Sliders" ); 0030 setComments( "Shows the appearance of sliders, progress bars and scrollbars" ); 0031 setIconName( "measure" ); 0032 realize(); 0033 0034 // horizontal sliders 0035 { 0036 0037 // frame 0038 GtkWidget* frame( gtk_frame_new( "Horizontal" ) ); 0039 gtk_box_pack_start( GTK_BOX( mainWidget ), frame, true, true, 0 ); 0040 gtk_widget_show( frame ); 0041 0042 // container 0043 GtkWidget* box( gtk_vbox_new( false, 0 ) ); 0044 gtk_container_set_border_width( GTK_CONTAINER( box ), 5 ); 0045 gtk_box_set_spacing( GTK_BOX( box ), 2 ); 0046 gtk_widget_show( box ); 0047 gtk_container_add( GTK_CONTAINER( frame ), box ); 0048 0049 // scale 0050 _horizontalSliders._scale = gtk_hscale_new_with_range( 0, 100, 1 ); 0051 gtk_scale_set_draw_value( GTK_SCALE( _horizontalSliders._scale ), false ); 0052 gtk_box_pack_start( GTK_BOX( box ), _horizontalSliders._scale, false, true, 0 ); 0053 gtk_widget_show( _horizontalSliders._scale ); 0054 0055 0056 // progress entry 0057 _horizontalSliders._progressEntry = gtk_entry_new(); 0058 gtk_entry_set_text( GTK_ENTRY( _horizontalSliders._progressEntry ), "Progress Bar Entry" ); 0059 gtk_entry_set_progress_fraction( GTK_ENTRY( _horizontalSliders._progressEntry ), 0.25 ); 0060 gtk_box_pack_start( GTK_BOX( box ), _horizontalSliders._progressEntry, false, true, 0 ); 0061 gtk_widget_show( _horizontalSliders._progressEntry ); 0062 0063 // progress bar 0064 _horizontalSliders._progressBar = gtk_progress_bar_new(); 0065 #if GTK_CHECK_VERSION(3, 0, 0) 0066 gtk_orientable_set_orientation( GTK_ORIENTABLE( _horizontalSliders._progressBar ), GTK_ORIENTATION_HORIZONTAL ); 0067 #else 0068 gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR( _horizontalSliders._progressBar ), GTK_PROGRESS_LEFT_TO_RIGHT ); 0069 #endif 0070 0071 gtk_progress_set_show_text( GTK_PROGRESS( _horizontalSliders._progressBar ), true ); 0072 gtk_box_pack_start( GTK_BOX( box ), _horizontalSliders._progressBar, false, true, 0 ); 0073 gtk_widget_show( _horizontalSliders._progressBar ); 0074 0075 // pulse progressBar 0076 _pulseProgressBar = gtk_progress_bar_new(); 0077 #if GTK_CHECK_VERSION(3, 0, 0) 0078 gtk_orientable_set_orientation( GTK_ORIENTABLE( _pulseProgressBar ), GTK_ORIENTATION_HORIZONTAL ); 0079 #else 0080 gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR( _pulseProgressBar ), GTK_PROGRESS_LEFT_TO_RIGHT ); 0081 #endif 0082 0083 gtk_progress_bar_set_pulse_step( GTK_PROGRESS_BAR( _pulseProgressBar ), 0.01 ); 0084 gtk_box_pack_start( GTK_BOX( box ), _pulseProgressBar, false, true, 0 ); 0085 gtk_widget_show( _pulseProgressBar ); 0086 0087 // scrollbar 0088 GtkAdjustment* adjustment( GTK_ADJUSTMENT( gtk_adjustment_new( 25, 0, 110, 1, 1, 10 ) ) ); 0089 _horizontalSliders._scrollBar = gtk_hscrollbar_new( adjustment ); 0090 gtk_box_pack_start( GTK_BOX( box ), _horizontalSliders._scrollBar, false, true, 0 ); 0091 gtk_widget_show( _horizontalSliders._scrollBar ); 0092 0093 } 0094 0095 // vertical sliders 0096 { 0097 0098 // frame 0099 GtkWidget* frame( gtk_frame_new( "Vertical" ) ); 0100 gtk_box_pack_start( GTK_BOX( mainWidget ), frame, false, true, 0 ); 0101 gtk_widget_show( frame ); 0102 0103 // container 0104 GtkWidget* box( gtk_hbox_new( false, 0 ) ); 0105 gtk_container_set_border_width( GTK_CONTAINER( box ), 5 ); 0106 gtk_box_set_spacing( GTK_BOX( box ), 5 ); 0107 gtk_widget_show( box ); 0108 gtk_container_add( GTK_CONTAINER( frame ), box ); 0109 0110 // scale 0111 _verticalSliders._scale = gtk_vscale_new_with_range( 0, 100, 1 ); 0112 gtk_scale_set_draw_value( GTK_SCALE( _verticalSliders._scale ), false ); 0113 gtk_box_pack_start( GTK_BOX( box ), _verticalSliders._scale, false, true, 0 ); 0114 gtk_widget_show( _verticalSliders._scale ); 0115 0116 // progress bar 0117 _verticalSliders._progressBar = gtk_progress_bar_new(); 0118 #if GTK_CHECK_VERSION(3, 0, 0) 0119 gtk_orientable_set_orientation( GTK_ORIENTABLE( _verticalSliders._progressBar ), GTK_ORIENTATION_VERTICAL ); 0120 #else 0121 gtk_progress_bar_set_orientation( GTK_PROGRESS_BAR( _verticalSliders._progressBar ), GTK_PROGRESS_BOTTOM_TO_TOP ); 0122 #endif 0123 0124 gtk_progress_set_show_text( GTK_PROGRESS( _verticalSliders._progressBar ), true ); 0125 gtk_box_pack_start( GTK_BOX( box ), _verticalSliders._progressBar, false, true, 0 ); 0126 gtk_widget_show( _verticalSliders._progressBar ); 0127 0128 // scrollbar 0129 GtkAdjustment* adjustment( GTK_ADJUSTMENT( gtk_adjustment_new( 25, 0, 110, 1, 1, 10 ) ) ); 0130 _verticalSliders._scrollBar = gtk_vscrollbar_new( adjustment ); 0131 gtk_box_pack_start( GTK_BOX( box ), _verticalSliders._scrollBar, false, true, 0 ); 0132 gtk_widget_show( _verticalSliders._scrollBar ); 0133 0134 } 0135 0136 // connections 0137 connect( G_OBJECT( _horizontalSliders._scale ), "value-changed", GCallback( valueChanged ), this ); 0138 connect( G_OBJECT( _horizontalSliders._scrollBar ), "value-changed", GCallback( valueChanged ), this ); 0139 0140 connect( G_OBJECT( _verticalSliders._scale ), "value-changed", GCallback( valueChanged ), this ); 0141 connect( G_OBJECT( _verticalSliders._scrollBar ), "value-changed", GCallback( valueChanged ), this ); 0142 0143 // Initialize all 0144 gtk_range_set_value( GTK_RANGE( _verticalSliders._scale ), 25 ); 0145 } 0146 0147 //____________________________________________________ 0148 SliderDemoWidget::~SliderDemoWidget( void ) 0149 {} 0150 0151 //____________________________________________________ 0152 gboolean SliderDemoWidget::pulseProgressBar( gpointer pointer ) 0153 { 0154 SliderDemoWidget& demoWidget( *static_cast<SliderDemoWidget*>( pointer ) ); 0155 gtk_progress_bar_pulse( GTK_PROGRESS_BAR( demoWidget._pulseProgressBar ) ); 0156 return TRUE; 0157 } 0158 0159 //____________________________________________________ 0160 void SliderDemoWidget::valueChanged( GtkRange* range, gpointer pointer ) 0161 { 0162 const double value( gtk_range_get_value( range ) ); 0163 SliderDemoWidget& data( *static_cast<SliderDemoWidget*>( pointer ) ); 0164 data._horizontalSliders.setValue( value ); 0165 data._verticalSliders.setValue( value ); 0166 } 0167 0168 //____________________________________________________ 0169 void SliderDemoWidget::Sliders::setValue( const double& value ) const 0170 { 0171 gtk_range_set_value( GTK_RANGE( _scale ), value ); 0172 gtk_progress_bar_set_fraction( GTK_PROGRESS_BAR( _progressBar ), value/100 ); 0173 gtk_range_set_value( GTK_RANGE( _scrollBar ), value ); 0174 if( _progressEntry ) gtk_entry_set_progress_fraction( GTK_ENTRY( _progressEntry ), value/100 ); 0175 } 0176 0177 }