From 5d04943cbd4190513343beffa30e71d31801b052 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= Date: Sun, 14 May 2006 14:36:08 +0000 Subject: [PATCH] * new dialogue type to prompt the user for a string * the core is widget-free now (except for the header to keep wx compiling, hopefully) * updated the OSX-implementation to reflect the recent changes more clean up is necessary; testing and any feedback is welcomed refs #553 --- .../English.lproj/Interaction.nib/classes.nib | 6 + .../English.lproj/Interaction.nib/info.nib | 1 + .../Interaction.nib/keyedobjects.nib | Bin 8501 -> 10669 bytes include/vlc_interaction.h | 4 + modules/gui/macosx/interaction.h | 8 ++ modules/gui/macosx/interaction.m | 53 +++++---- src/interface/interaction.c | 104 +++++++++++------- 7 files changed, 114 insertions(+), 62 deletions(-) diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib index 1c88a82d03..e384c091c3 100644 --- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/classes.nib @@ -15,6 +15,12 @@ "o_auth_pw_txt" = id; "o_auth_title" = id; "o_auth_win" = id; + "o_input_cancel_btn" = id; + "o_input_description" = id; + "o_input_fld" = id; + "o_input_ok_btn" = id; + "o_input_title" = id; + "o_input_win" = id; "o_prog_bar" = id; "o_prog_cancel_btn" = id; "o_prog_description" = id; diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib index 1948872518..cd510a34d2 100644 --- a/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/Interaction.nib/info.nib @@ -8,6 +8,7 @@ 443.0 IBOpenObjects + 79 55 IBSystem Version diff --git a/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib b/extras/MacOSX/Resources/English.lproj/Interaction.nib/keyedobjects.nib index 6d5426a777288f7dceca048dfd0a04dc33883ad9..926546adf28b12c6ec3a90c5fd2f32c916d45d99 100644 GIT binary patch literal 10669 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 d@jdZ4coC3tJs4nHgP>1 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 Nl75w+)kkye{{Y_}(%b+5 diff --git a/include/vlc_interaction.h b/include/vlc_interaction.h index 25aeb6dfd4..36ec30c0ae 100644 --- a/include/vlc_interaction.h +++ b/include/vlc_interaction.h @@ -83,6 +83,7 @@ struct interaction_dialog_t #define DIALOG_GOT_ANSWER 0x10 #define DIALOG_LOGIN_PW_OK_CANCEL 0x20 #define DIALOG_USER_PROGRESS 0x40 +#define DIALOG_PSZ_INPUT_OK_CANCEL 0x80 /** * Possible return codes @@ -176,6 +177,9 @@ VLC_EXPORT( int, __intf_UserProgress,( vlc_object_t*, const char*, const char*, #define intf_UserProgressUpdate( a, b, c, d ) __intf_UserProgressUpdate( VLC_OBJECT(a),b,c, d ) VLC_EXPORT( void, __intf_UserProgressUpdate,( vlc_object_t*, int, const char*, float) ); +#define intf_UserStringInput( a, b, c, d ) __intf_UserStringInput( VLC_OBJECT(a),b,c,d ) +VLC_EXPORT( int, __intf_UserStringInput,(vlc_object_t*, const char*, const char*, char **) ); + #define intf_UserHide( a, b ) __intf_UserHide( VLC_OBJECT(a), b ) VLC_EXPORT( void, __intf_UserHide,( vlc_object_t *, int )); diff --git a/modules/gui/macosx/interaction.h b/modules/gui/macosx/interaction.h index 444b130015..12f21c616b 100644 --- a/modules/gui/macosx/interaction.h +++ b/modules/gui/macosx/interaction.h @@ -49,6 +49,14 @@ IBOutlet id o_auth_title; IBOutlet id o_auth_win; + /* string input dialogue */ + IBOutlet id o_input_cancel_btn; + IBOutlet id o_input_description; + IBOutlet id o_input_fld; + IBOutlet id o_input_ok_btn; + IBOutlet id o_input_title; + IBOutlet id o_input_win; + interaction_dialog_t * p_dialog; intf_thread_t * p_intf; BOOL nib_interact_loaded; diff --git a/modules/gui/macosx/interaction.m b/modules/gui/macosx/interaction.m index 97b90cbdfe..4a03f9cbd7 100644 --- a/modules/gui/macosx/interaction.m +++ b/modules/gui/macosx/interaction.m @@ -110,7 +110,6 @@ -(void)runDialog { - int i = 0; id o_window = NULL; if( !p_dialog ) msg_Err( p_intf, "no available interaction framework" ); @@ -124,6 +123,8 @@ [o_auth_pw_txt setStringValue: _NS("Password:")]; [o_auth_cancel_btn setTitle: _NS("Cancel")]; [o_auth_ok_btn setTitle: _NS("OK")]; + [o_input_ok_btn setTitle: _NS("OK")]; + [o_input_cancel_btn setTitle: _NS("Cancel")]; } NSString *o_title = [NSString stringWithUTF8String:p_dialog->psz_title ? p_dialog->psz_title : "title"]; @@ -153,33 +154,25 @@ msg_Dbg( p_intf, "Description: %s", [o_description UTF8String] ); if( p_dialog->i_id == DIALOG_ERRORS ) { - for( i = 0; i < p_dialog->i_widgets; i++ ) - { - msg_Err( p_intf, "Error: %s", p_dialog->pp_widgets[i]->psz_text ); - } + msg_Err( p_intf, "Error: %s", p_dialog->psz_description ); } else { - for( i = 0; i < p_dialog->i_widgets; i++ ) - { - msg_Dbg( p_intf, "widget: %s", p_dialog->pp_widgets[i]->psz_text ); - o_description = [o_description stringByAppendingString: \ - [NSString stringWithUTF8String: \ - p_dialog->pp_widgets[i]->psz_text]]; - } if( p_dialog->i_flags & DIALOG_OK_CANCEL ) { msg_Dbg( p_intf, "requested flag: DIALOG_OK_CANCEL" ); - NSBeginInformationalAlertSheet( o_title, @"OK" , @"Cancel", nil, \ - o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\ - NULL, nil, o_description ); + NSBeginInformationalAlertSheet( o_title, _NS("OK") , _NS("Cancel"), + nil, o_window, self, + @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, + o_description ); } else if( p_dialog->i_flags & DIALOG_YES_NO_CANCEL ) { msg_Dbg( p_intf, "requested flag: DIALOG_YES_NO_CANCEL" ); - NSBeginInformationalAlertSheet( o_title, @"Yes", @"No", @"Cancel", \ - o_window, self,@selector(sheetDidEnd: returnCode: contextInfo:),\ - NULL, nil, o_description ); + NSBeginInformationalAlertSheet( o_title, _NS("Yes"), _NS("No"), + _NS("Cancel"), o_window, self, + @selector(sheetDidEnd: returnCode: contextInfo:), NULL, nil, + o_description ); } else if( p_dialog->i_flags & DIALOG_LOGIN_PW_OK_CANCEL ) { @@ -188,7 +181,7 @@ [o_auth_description setStringValue: o_description]; [o_auth_login_fld setStringValue: @""]; [o_auth_pw_fld setStringValue: @""]; - [NSApp beginSheet: o_auth_win modalForWindow: o_window \ + [NSApp beginSheet: o_auth_win modalForWindow: o_window modalDelegate: self didEndSelector: nil contextInfo: nil]; [o_auth_win makeKeyWindow]; } @@ -198,12 +191,22 @@ [o_prog_title setStringValue: o_title]; [o_prog_description setStringValue: o_description]; [o_prog_bar setDoubleValue: 0]; - [NSApp beginSheet: o_prog_win modalForWindow: o_window \ + [NSApp beginSheet: o_prog_win modalForWindow: o_window modalDelegate: self didEndSelector: nil contextInfo: nil]; [o_prog_win makeKeyWindow]; } + else if( p_dialog->i_flags & DIALOG_PSZ_INPUT_OK_CANCEL ) + { + msg_Dbg( p_intf, "requested flag: DIALOG_STRING_INPUT_OK" ); + [o_input_title setStringValue: o_title]; + [o_input_description setStringValue: o_description]; + [o_input_fld setStringValue: @""]; + [NSApp beginSheet: o_input_win modalForWindow: o_window + modalDelegate: self didEndSelector: nil contextInfo: nil]; + [o_input_win makeKeyWindow]; + } else - msg_Warn( p_intf, "requested dialog type not implemented yet" ); + msg_Warn( p_intf, "requested dialog type unknown" ); } } @@ -239,7 +242,6 @@ [NSString stringWithUTF8String: p_dialog->psz_description]]; [o_prog_bar setDoubleValue: \ (double)(p_dialog->val.f_float)]; - msg_Dbg( p_intf, "new value: %f", [o_prog_bar doubleValue] ); if( [o_prog_bar doubleValue] == 100.0 ) { @@ -263,6 +265,11 @@ [NSApp endSheet: o_auth_win]; [o_auth_win close]; } + if( p_dialog->i_flags & DIALOG_PSZ_INPUT_OK_CANCEL ) + { + [NSApp endSheet: o_input_win]; + [o_input_win close]; + } } -(void)destroyDialog @@ -289,6 +296,8 @@ p_dialog->psz_returned[0] = strdup( [[o_auth_login_fld stringValue] UTF8String] ); p_dialog->psz_returned[1] = strdup( [[o_auth_pw_fld stringValue] UTF8String] ); } + else if( p_dialog->i_flags == DIALOG_PSZ_INPUT_OK_CANCEL ) + p_dialog->psz_returned[0] = strdup( [[o_input_fld stringValue] UTF8String] ); p_dialog->i_return = DIALOG_OK_YES; p_dialog->i_status = ANSWERED_DIALOG; vlc_mutex_unlock( &p_dialog->p_interaction->object_lock ); diff --git a/src/interface/interaction.c b/src/interface/interaction.c index 466cb14b7f..214ce959e4 100644 --- a/src/interface/interaction.c +++ b/src/interface/interaction.c @@ -221,12 +221,9 @@ void intf_InteractionManage( playlist_t *p_playlist ) } - #define INTERACT_INIT( new ) \ new = (interaction_dialog_t*)malloc( \ sizeof( interaction_dialog_t ) ); \ - new->i_widgets = 0; \ - new->pp_widgets = NULL; \ new->psz_title = NULL; \ new->psz_description = NULL; \ new->p_private = NULL; \ @@ -250,7 +247,6 @@ void __intf_UserFatal( vlc_object_t *p_this, { va_list args; interaction_dialog_t *p_new = NULL; - user_widget_t *p_widget = NULL; int i_id = DIALOG_ERRORS; if( i_id > 0 ) @@ -272,20 +268,10 @@ void __intf_UserFatal( vlc_object_t *p_this, p_new->i_type = INTERACT_DIALOG_ONEWAY; p_new->psz_title = strdup( psz_title ); - p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) ); - - p_widget->i_type = WIDGET_TEXT; - p_widget->val.psz_string = NULL; - va_start( args, psz_format ); - vasprintf( &p_widget->psz_text, psz_format, args ); + vasprintf( &p_new->psz_description, psz_format, args ); va_end( args ); - INSERT_ELEM ( p_new->pp_widgets, - p_new->i_widgets, - p_new->i_widgets, - p_widget ); - p_new->i_flags |= DIALOG_CLEAR_NOSHOW; intf_Interact( p_this, p_new ); @@ -303,29 +289,45 @@ int __intf_UserYesNo( vlc_object_t *p_this, { int i_ret; interaction_dialog_t *p_new = NULL; - user_widget_t *p_widget = NULL; INTERACT_INIT( p_new ); p_new->i_type = INTERACT_DIALOG_TWOWAY; p_new->psz_title = strdup( psz_title ); + p_new->psz_description = strdup( psz_description ); + p_new->i_flags = DIALOG_YES_NO_CANCEL; - /* Text */ - p_widget = (user_widget_t* )malloc( sizeof( user_widget_t ) ); - p_widget->i_type = WIDGET_TEXT; - p_widget->psz_text = strdup( psz_description ); - p_widget->val.psz_string = NULL; - INSERT_ELEM ( p_new->pp_widgets, p_new->i_widgets, - p_new->i_widgets, p_widget ); + i_ret = intf_Interact( p_this, p_new ); - p_new->i_flags = DIALOG_YES_NO_CANCEL; + return i_ret; +} + +/** Helper function to trigger a okay-cancel dialogue + * \param p_this Parent vlc_object + * \param psz_title Title for the dialog + * \param psz_description A description + * \return Clicked button code + */ +int __intf_UserOkayCancel( vlc_object_t *p_this, + const char *psz_title, + const char *psz_description ) +{ + int i_ret; + interaction_dialog_t *p_new = NULL; + + INTERACT_INIT( p_new ); + + p_new->i_type = INTERACT_DIALOG_TWOWAY; + p_new->psz_title = strdup( psz_title ); + p_new->psz_description = strdup( psz_description ); + p_new->i_flags = DIALOG_OK_CANCEL; i_ret = intf_Interact( p_this, p_new ); return i_ret; } -/** Helper function to make a progressbar box +/** Helper function to create a dialogue showing a progress-bar with some info * \param p_this Parent vlc_object * \param psz_title Title for the dialog * \param psz_status Current status @@ -354,7 +356,7 @@ int __intf_UserProgress( vlc_object_t *p_this, return p_new->i_id; } -/** Update a progress bar +/** Update a progress bar in a dialogue * \param p_this Parent vlc_object * \param i_id Identifier of the dialog * \param psz_status New status @@ -388,7 +390,7 @@ void __intf_UserProgressUpdate( vlc_object_t *p_this, int i_id, vlc_mutex_unlock( &p_interaction->object_lock) ; } -/** Helper function to make a login/password box +/** Helper function to make a login/password dialogue * \param p_this Parent vlc_object * \param psz_title Title for the dialog * \param psz_description A description @@ -424,6 +426,39 @@ int __intf_UserLoginPassword( vlc_object_t *p_this, return i_ret; } +/** Helper function to make a dialogue asking the user for !password string + * \param p_this Parent vlc_object + * \param psz_title Title for the dialog + * \param psz_description A description + * \param ppsz_usersString Returned login + * \return Clicked button code + */ +int __intf_UserStringInput( vlc_object_t *p_this, + const char *psz_title, + const char *psz_description, + char **ppsz_usersString ) +{ + + int i_ret; + interaction_dialog_t *p_new = NULL; + + INTERACT_INIT( p_new ); + + p_new->i_type = INTERACT_DIALOG_TWOWAY; + p_new->psz_title = strdup( psz_title ); + p_new->psz_description = strdup( psz_description ); + + p_new->i_flags = DIALOG_PSZ_INPUT_OK_CANCEL; + + i_ret = intf_Interact( p_this, p_new ); + + if( i_ret != DIALOG_CANCELLED ) + { + *ppsz_usersString = strdup( p_new->psz_returned[0] ); + } + return i_ret; +} + /** Hide an interaction dialog * \param p_this the parent vlc object * \param i_id the id of the item to hide @@ -629,24 +664,13 @@ static interaction_dialog_t *intf_InteractionGetById( vlc_object_t* p_this, static void intf_InteractionDialogDestroy( interaction_dialog_t *p_dialog ) { - int i; - for( i = p_dialog->i_widgets - 1 ; i >= 0 ; i-- ) - { - user_widget_t *p_widget = p_dialog->pp_widgets[i]; - FREE( p_widget->psz_text ); - if( p_widget->i_type == WIDGET_INPUT_TEXT ) - { - FREE( p_widget->val.psz_string ); - } + /* FREE( p_dialog->val.psz_string ); - REMOVE_ELEM( p_dialog->pp_widgets, p_dialog->i_widgets, i ); - free( p_widget ); - } FREE( p_dialog->psz_title ); FREE( p_dialog->psz_description ); FREE( p_dialog->psz_returned[0] ); - FREE( p_dialog->psz_returned[1] ); + FREE( p_dialog->psz_returned[1] ); */ free( p_dialog ); } -- 2.39.2