@ -1,13 +1,13 @@
# include "ubl-settings-video.h"
# include "ubl-utils.h"
// #include <xfconf/xfconf.h>
config videoconfig ;
void yon_on_plug_added ( GtkSocket * self , gpointer user_data ) {
}
void yon_on_plug_removed ( GtkSocket * self , gpointer user_data ) {
}
@ -17,24 +17,127 @@ void on_auto_choose_drivers(GtkWidget *self, widgets_dict *widgets){
gtk_widget_set_sensitive ( widgets - > mainDriverFailsafeNvidiaLabel , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverProprietaryDriverCombo , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverProprietaryDriverButton , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverProprietaryDriverLabel , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverFailsafeAMDCombo , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverFailsafeAMDLabel , ! state ) ;
gtk_widget_set_sensitive ( widgets - > mainDriverFailsafeNvidiaCombo , ! state ) ;
}
void on_manual_config_moniitors ( GtkWidget * self , widgets_dict * widgets ) {
int state = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( self ) ) ;
void on_closed_configuration ( GtkWidget * self , MonitorSettings * monitors ) {
gtk_widget_destroy ( monitors - > templateMonitorConfigurationWindow ) ;
}
void on_save_configuration_local ( GtkWidget * self ) {
gtk_widget_set_sensitive ( widgets - > mainMonitorVisualConfigurationBox , state ) ;
}
void on_save_configuration_global ( GtkWidget * self ) {
}
void on_load_configuration_local ( GtkWidget * self ) {
}
void on_load_configuration_global ( GtkWidget * self ) {
void on_closed_configuration ( GtkWidget * self , MonitorSettings * monitors ) {
gtk_widget_destroy ( monitors - > templateMonitorConfigurationWindow ) ;
}
void on_save_configuration ( GtkWidget self , MonitorSettings * monitors ) {
void on_ accept_monitor_settings( GtkWidget * self ) {
}
void on_check_optisun ( GtkWidget * self ) {
}
void on_check_primusrun ( GtkWidget * self ) {
}
void on_check_discrete_only ( GtkWidget * self ) {
}
void yon_parse_monitor ( dictionary * monitor , char * string_of_settings ) {
char * result = NULL ;
if ( ( strstr ( string_of_settings , " , " ) ) ) {
result = yon_char_divide_search ( string_of_settings , " , " , 1 ) ;
( ( monitorconfig * ) monitor - > data ) - > resolution = result ;
}
char * tmp = NULL ;
if ( tmp = strstr ( string_of_settings , " rotate: " ) ) ( ( monitorconfig * ) monitor - > data ) - > rotation = tmp ;
}
void yon_setup_config ( ) {
FILE * videoports = popen ( get_ports_command , " r " ) ;
char str [ 1000 ] ;
while ( fgets ( str , 1000 , videoports ) ) {
printf ( " %s \n " , str ) ;
char * strng = yon_char_divide_search ( str , " \n " , 0 ) ;
monitorconfig * monitor = malloc ( sizeof ( monitorconfig ) ) ;
monitor - > port = yon_char_new ( strng ) ;
if ( ! videoconfig . monitors ) {
videoconfig . monitors = yon_dictionary_create_with_data ( strng , monitor ) ; }
else {
videoconfig . monitors = yon_dictionary_create_with_data_connected ( videoconfig . monitors , strng , monitor ) ;
}
memset ( str , 0 , 1000 ) ;
}
char * command = load_drivers_local_command ;
dictionary * dct ;
for_dictionaries ( dct , videoconfig . monitors ) {
command = yon_char_get_augumented ( command , ( yon_char_get_augumented ( " XORG_MONITOR[ " , yon_char_get_augumented ( ( ( monitorconfig * ) dct - > data ) - > port , " ] " ) ) ) ) ;
}
FILE * local = popen ( command , " r " ) ;
char result [ 1000 ] ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
videoconfig . failsafenVidia = result ;
else videoconfig . failsafenVidia = NULL ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
videoconfig . failsafeATI = result ;
else videoconfig . failsafeATI = NULL ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
videoconfig . optirun = result ;
else videoconfig . optirun = NULL ;
memset ( result , 0 , 1000 ) ;
if ( fgets ( result , 1000 , local ) & & strcmp ( result , " (null) \n " ) ! = 0 )
videoconfig . primusrun = result ;
else videoconfig . primusrun = NULL ;
for_dictionaries ( dct , videoconfig . monitors ) {
fgets ( result , 1000 , local ) ;
if ( strcmp ( result , " (null) \n " ) ! = 0 ) {
char * curmonitor = strstr ( result , " = " ) + 1 ;
yon_parse_monitor ( dct , curmonitor ) ;
}
}
}
void on_apps_chooser_open ( GtkWidget * self , widgets_dict * widgets , int mode ) {
GtkBuilder * builder = gtk_builder_new_from_file ( glade_path ) ; \
// FILE *output=popen("");
printf ( " not implemented yet \n " ) ;
}
void yon_fill_ui ( widgets_dict * widgets ) {
if ( ! videoconfig . proprietary | | strstr ( videoconfig . proprietary , " \n " ) = = 0 )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > mainDriverProprietaryDriverCombo ) , 0 ) ;
if ( ! videoconfig . failsafenVidia | | strstr ( videoconfig . failsafenVidia , " \n " ) = = 0 )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > mainDriverFailsafeNvidiaCombo ) , 0 ) ;
if ( ! videoconfig . failsafeATI | | strstr ( videoconfig . failsafeATI , " \n " ) = = 0 )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > mainDriverFailsafeAMDCombo ) , 0 ) ;
if ( ! videoconfig . optirun | | strstr ( videoconfig . optirun , " \n " ) = = 0 )
gtk_entry_set_text ( GTK_ENTRY ( widgets - > mainExtraLaunchOptirunEntry ) , videoconfig . optirun ) ;
if ( ! videoconfig . primusrun | | strstr ( videoconfig . primusrun , " \n " ) = = 0 )
gtk_entry_set_text ( GTK_ENTRY ( widgets - > mainExtraLaunchPrismusunEntry ) , videoconfig . primusrun ) ;
if ( videoconfig . gapfix = = 0 )
gtk_combo_box_set_active ( GTK_COMBO_BOX ( widgets - > mainExtraFixGapCombo ) , 0 ) ;
}
void on_confugure_monitor_settings ( GtkWidget * self , MonitorSettings * settings ) {
@ -60,7 +163,7 @@ void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings){
monitors - > templateMonitorConfigurationSaveButton = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorConfigurationSaveButton " ) ) ;
g_signal_connect ( G_OBJECT ( monitors - > templateMonitorConfigurationCancelButton ) , " clicked " , G_CALLBACK ( on_closed_configuration ) , monitors ) ;
g_signal_connect ( G_OBJECT ( monitors - > templateMonitorConfigurationSaveButton ) , " clicked " , G_CALLBACK ( on_save_configuration ) , monitors ) ;
// g_signal_connect(G_OBJECT(monitors->templateMonitorConfigurationSaveButton), "clicked", G_CALLBACK(on_save_configuration), monitors);
// if (i!=0)
// gtk_radio_button_join_group(GTK_RADIO_BUTTON(monitors[i].templateMonitorConfigurationMainRadio),GTK_RADIO_BUTTON(monitors[i-1].templateMonitorConfigurationMainRadio));
@ -68,18 +171,24 @@ void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings){
gtk_label_set_text ( GTK_LABEL ( monitors - > templateMonitorConfigurationResolutionLabel ) , _ ( " Resolution (px): " ) ) ;
gtk_label_set_text ( GTK_LABEL ( monitors - > templateMonitorConfigurationFrequencyLabel ) , _ ( " Frequency (Hz): " ) ) ;
gtk_label_set_text ( GTK_LABEL ( monitors - > templateMonitorConfigurationRotationLabel ) , _ ( " Rotation: " ) ) ;
gtk_label_set_text ( GTK_LABEL ( monitors - > templateMonitorConfigurationDoNotSwitchOffLabel ) , _ ( " Do not switch display off " ) ) ;
// gtk_label_set_text(GTK_LABEL(monitors->templateMonitorConfigurationDoNotSwitchOffLabel),_("Do not switch display off"));
gtk_button_set_label ( GTK_BUTTON ( monitors - > templateMonitorConfigurationMainRadio ) , _ ( " Main monitor " ) ) ;
gtk_button_set_label ( GTK_BUTTON ( monitors - > templateMonitorConfigurationParameterLineCheck ) , _ ( " through parameter line: " ) ) ;
gtk_button_set_label ( GTK_BUTTON ( monitors - > templateMonitorConfigurationDoNotSwitchOffCheck ) , _ ( " DPMS off " ) ) ;
gtk_widget_show ( monitors - > templateMonitorConfigurationWindow ) ;
char * addln = NULL ;
if ( ! monitors - > curconfig | | ! ( ( monitorconfig * ) monitors - > curconfig - > data ) - > resolution ) addln = _ ( " Default Settings " ) ;
else addln = ( ( monitorconfig * ) monitors - > curconfig - > data ) - > resolution ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationResolutionCombo ) , addln ) ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationFrequencyCombo ) , _ ( " Default Settings " ) ) ;
gtk_combo_box_text_append_text ( GTK_COMBO_BOX_TEXT ( monitors - > templateMonitorConfigurationRotationCombo ) , _ ( " Default Settings " ) ) ;
}
MonitorSettings * yon_setup_monitor_settings ( ) {
int monitors_n = yon_check_for_monitors ( ) ;
MonitorSettings * monitors = NULL ;
monitors = malloc ( sizeof ( MonitorSettings ) * monitors_n ) ;
// videoconfig.videoconfig=videoconfig.videoconfig->first;
for ( int i = 0 ; i < monitors_n ; i + + ) {
GtkBuilder * builder = gtk_builder_new_from_file ( glade_path ) ;
monitors [ i ] . templateMonitorscreenOverlay = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorscreenOverlay " ) ) ;
@ -87,9 +196,16 @@ MonitorSettings *yon_setup_monitor_settings(){
monitors [ i ] . templateMonitorInfoNameLabel = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoNameLabel " ) ) ;
monitors [ i ] . templateMonitorInfoResolutionLabel = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoResolutionLabel " ) ) ;
monitors [ i ] . templateMonitorInfoConfigureButton = GTK_WIDGET ( gtk_builder_get_object ( builder , " templateMonitorInfoConfigureButton " ) ) ;
monitors [ i ] . curconfig = yon_dictionary_get_nth ( videoconfig . monitors , i ) ;
gtk_label_set_text ( GTK_LABEL ( monitors [ i ] . templateMonitorInfoNameLabel ) , yon_char_get_augumented ( " Monitor " , ( ( monitorconfig * ) monitors [ i ] . curconfig - > data ) - > port ) ) ;
char * res = yon_char_get_augumented ( ( ( monitorconfig * ) monitors [ i ] . curconfig - > data ) - > resolution , " " ) ;
if ( ! res ) res = _ ( " Default settings " ) ;
gtk_label_set_text ( GTK_LABEL ( monitors [ i ] . templateMonitorInfoResolutionLabel ) , res ) ;
gtk_overlay_add_overlay ( GTK_OVERLAY ( monitors [ i ] . templateMonitorscreenOverlay ) , monitors [ i ] . templateMonitorInfoBox ) ;
g_signal_connect ( G_OBJECT ( monitors [ i ] . templateMonitorInfoConfigureButton ) , " clicked " , G_CALLBACK ( on_confugure_monitor_settings ) , & monitors [ i ] ) ;
if ( videoconfig . monitors - > next )
videoconfig . monitors = videoconfig . monitors - > next ;
}
return monitors ;
}
@ -118,18 +234,24 @@ dictionary *yon_dictionary_pack_overlays(MonitorSettings *monitors, int size){
void yon_setup_widgets ( widgets_dict * widgets ) {
widgets - > builder = gtk_builder_new_from_file ( glade_path ) ;
widgets - > appsPackWindow = yon_gtk_builder_get_widget ( widgets - > builder , " appsPackWindow " ) ;
widgets - > appsPackBox = yon_gtk_builder_get_widget ( widgets - > builder , " appsPackBox " ) ;
widgets - > MainWindow = yon_gtk_builder_get_widget ( widgets - > builder , " MainWindow " ) ;
widgets - > headBox = yon_gtk_builder_get_widget ( widgets - > builder , " headBox " ) ;
widgets - > headInfoLabel = yon_gtk_builder_get_widget ( widgets - > builder , " headInfoLabel " ) ;
widgets - > mainPlugBox = yon_gtk_builder_get_widget ( widgets - > builder , " mainPlugBox " ) ;
widgets - > mainErrorBox = yon_gtk_builder_get_widget ( widgets - > builder , " mainErrorBox " ) ;
widgets - > mainHeadOverlay = yon_gtk_builder_get_widget ( widgets - > builder , " mainHeadOverlay " ) ;
widgets - > extraOptirunChooseAppsButton = yon_gtk_builder_get_widget ( widgets - > builder , " extraOptirunChooseAppsButton " ) ;
widgets - > extraPrimusunChooseAppsButton = yon_gtk_builder_get_widget ( widgets - > builder , " extraPrimusunChooseAppsButton " ) ;
widgets - > mainHeadBackgroundImage = yon_gtk_builder_get_widget ( widgets - > builder , " mainHeadBackgroundImage " ) ;
widgets - > mainDriverAutomaticallyChooseCheck = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverAutomaticallyChooseCheck " ) ;
widgets - > mainDriverProprietaryDriverLabel = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverProprietaryDriverLabel " ) ;
widgets - > mainDriverFailsafeNvidiaLabel = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverFailsafeNvidiaLabel " ) ;
widgets - > mainDriverFailsafeAMDLabel = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverFailsafeAMDLabel " ) ;
widgets - > mainDriverProprietaryDriverCombo = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverProprietaryDriverCombo " ) ;
widgets - > mainExtraFixGapCombo = yon_gtk_builder_get_widget ( widgets - > builder , " mainExtraFixGapCombo " ) ;
widgets - > mainDriverProprietaryDriverButton = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverProprietaryDriverButton " ) ;
widgets - > mainDriverFailsafeNvidiaCombo = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverFailsafeNvidiaCombo " ) ;
widgets - > mainDriverFailsafeAMDCombo = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverFailsafeAMDCombo " ) ;
widgets - > mainDriverFrameLabel = yon_gtk_builder_get_widget ( widgets - > builder , " mainDriverFrameLabel " ) ;
@ -182,7 +304,8 @@ void yon_setup_widgets(widgets_dict *widgets){
g_signal_connect ( G_OBJECT ( widgets - > mainDriverAutomaticallyChooseCheck ) , " toggled " , G_CALLBACK ( on_auto_choose_drivers ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > MainWindow ) , " destroy " , G_CALLBACK ( gtk_main_quit ) , NULL ) ;
g_signal_connect ( G_OBJECT ( widgets - > extraOptirunChooseAppsButton ) , " clicked " , G_CALLBACK ( on_apps_chooser_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > extraPrimusunChooseAppsButton ) , " clicked " , G_CALLBACK ( on_apps_chooser_open ) , widgets ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > headInfoLabel ) , _ ( " Video output configuration " ) ) ;
gtk_label_set_text ( GTK_LABEL ( widgets - > mainDriverProprietaryDriverLabel ) , _ ( " Proprietary driver: " ) ) ;
@ -213,15 +336,16 @@ void yon_setup_widgets(widgets_dict *widgets){
gtk_menu_item_set_label ( GTK_MENU_ITEM ( widgets - > mainHeaderSettingsAboutMenuItem ) , _ ( " About " ) ) ;
// gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchThroughButton),_("Change"));
yon_ubl_header_setup ( widgets - > mainHeadOverlay , widgets - > headBox , widgets - > mainHeadBackgroundImage , banner_path ) ;
// gtk_overlay_add_overlay(GTK_OVERLAY(widgets->mainHeadOverlay),widgets->headBox);
gtk_overlay_add_overlay ( GTK_OVERLAY ( widgets - > mainHeadOverlay ) , widgets - > headBox ) ;
gtk_image_set_from_file ( GTK_IMAGE ( widgets - > mainHeadBackgroundImage ) , banner_path ) ;
// gtk_image_set_from_file(GTK_IMAGE(widgets->mainHeadBackgroundImage),banner_path);
MonitorSettings * monitors = yon_setup_monitor_settings ( ) ;
widgets- > monitors = yon_dictionary_pack_monitors ( monitors , yon_check_for_monitors ( ) ) ;
videoconfig . monitors = yon_dictionary_pack_monitors ( monitors , yon_check_for_monitors ( ) ) ;
widgets - > overlays = yon_dictionary_pack_overlays ( monitors , yon_check_for_monitors ( ) ) ;
yon_dictionary_gtk_pack_start_multiple_widgets ( widgets - > overlays , widgets - > mainMonitorVisualConfigurationBox , 0 , 0 , 0 ) ;
// yon_dictionary_gtk_pack_start_multiple_widgets(widgets->monitors,widgets->mainMonitorConfigurationBox,0,0,0);
}
int main ( int argc , char * argv [ ] ) {
@ -233,12 +357,13 @@ int main(int argc, char *argv[]){
GError error ;
// xfconf_init (&error);
// display_channel = xfconf_channel_new ("displays");
videoconfig . applist = yon_apps_scan_and_parse_desktops ( & videoconfig . appsize ) ;
yon_setup_config ( ) ;
widgets_dict widgets ;
yon_setup_widgets ( & widgets ) ;
gtk_widget_show ( widgets . MainWindow ) ;
yon_fill_ui ( & widgets ) ;
yon_ubl_status_box_render ( widgets . mainStatusBox , widgets . mainStatusIcon , widgets . mainStatusLabel , " com.ublinux.ubl-settings-video.checked " , " Configuration has been loaded " , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
GtkCssProvider * css = gtk_css_provider_new ( ) ;
gtk_css_provider_load_from_path ( css , CssPath , NULL ) ;
gtk_style_context_add_provider_for_screen ( gdk_screen_get_default ( ) ,