[haiku-commits] r36208 - haiku/trunk/src/apps/screenshot

  • From: superstippi@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 13 Apr 2010 13:25:15 +0200 (CEST)

Author: stippi
Date: 2010-04-13 13:25:15 +0200 (Tue, 13 Apr 2010)
New Revision: 36208
Changeset: http://dev.haiku-os.org/changeset/36208/haiku
Ticket: http://dev.haiku-os.org/ticket/5626

Modified:
   haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp
   haiku/trunk/src/apps/screenshot/ScreenshotWindow.h
Log:
Patch by Shisui: Automatic filename basename selection and "Save" as default
button for Screenshot. Fixes #5626. Thanks a lot!


Modified: haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp
===================================================================
--- haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp        2010-04-13 
10:01:22 UTC (rev 36207)
+++ haiku/trunk/src/apps/screenshot/ScreenshotWindow.cpp        2010-04-13 
11:25:15 UTC (rev 36208)
@@ -159,6 +159,9 @@
                        BCardLayout* layout = dynamic_cast<BCardLayout*> 
(GetLayout());
                        if (layout)
                                layout->SetVisibleItem(1L);
+
+                       fSaveScreenshot->MakeDefault(true);
+
                        SetTitle(TR("Save screenshot"));
                        break;
                }
@@ -168,12 +171,14 @@
                        _TakeScreenshot();
                        _UpdatePreviewPanel();
                        Show();
+                       _UpdateFilenameSelection();
                        break;
                
                case kImageOutputFormat:
                        message->FindInt32("be:type", &fImageFileType);
                        message->FindInt32("be:translator", &fTranslator);
                        
fNameControl->SetText(_FindValidFileName(fNameControl->Text()).String());
+                       _UpdateFilenameSelection();
                        break;
                
                case kLocationChanged:
@@ -183,6 +188,7 @@
                                fLastSelectedPath = static_cast<BMenuItem*> 
(source);
 
                        
fNameControl->SetText(_FindValidFileName(fNameControl->Text()).String());
+                       _UpdateFilenameSelection();
                        break;
                }
                
@@ -235,6 +241,7 @@
                        
                        if (layout)
                                layout->SetVisibleItem(0L);
+                       SetDefaultButton(NULL);
                        
                        SetTitle(TR("Take Screenshot"));
                        fBackToSave->SetEnabled(true);
@@ -280,8 +287,11 @@
                _TakeScreenshot();
                _UpdatePreviewPanel();
                layout->SetVisibleItem(1L);
-       } else
+               fSaveScreenshot->MakeDefault(true);
+       } else {
                layout->SetVisibleItem(0L);
+               SetDefaultButton(NULL);
+       }
 }
 
 
@@ -392,6 +402,9 @@
        BBox* divider = new BBox(B_FANCY_BORDER, NULL);
        divider->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 1));
 
+       fSaveScreenshot  = new BButton("", 
+               TR("Save"), new BMessage(kFinishScreenshot));
+
        BGridLayout* gridLayout = BGridLayoutBuilder(0.0, 5.0)
                .Add(fNameControl->CreateLabelLayoutItem(), 0, 0)
                .Add(fNameControl->CreateTextViewLayoutItem(), 1, 0)
@@ -416,7 +429,7 @@
                        .Add(new BButton("", TR("Options"), new 
BMessage(kShowOptions)))
                        .AddGlue()
                        .Add(new BButton("", TR("Cancel"), new 
BMessage(B_QUIT_REQUESTED)))
-                       .Add(new BButton("", TR("Save"), new 
BMessage(kFinishScreenshot)))
+                       .Add(fSaveScreenshot)
                        .End()
                .SetInsets(10.0, 10.0, 10.0, 10.0)
        );
@@ -561,10 +574,23 @@
        if (layout)
                layout->SetVisibleItem(1L);
 
+       _UpdateFilenameSelection();
+
        SetTitle(TR("Save screenshot"));
 }
 
 
+void
+ScreenshotWindow::_UpdateFilenameSelection()
+{
+       fNameControl->MakeFocus(true);
+       fNameControl->TextView()->Select(0,
+               fNameControl->TextView()->TextLength() -
+               fExtension.Length());
+       fNameControl->TextView()->ScrollToSelection();
+}
+
+
 BString
 ScreenshotWindow::_FindValidFileName(const char* name)
 {

Modified: haiku/trunk/src/apps/screenshot/ScreenshotWindow.h
===================================================================
--- haiku/trunk/src/apps/screenshot/ScreenshotWindow.h  2010-04-13 10:01:22 UTC 
(rev 36207)
+++ haiku/trunk/src/apps/screenshot/ScreenshotWindow.h  2010-04-13 11:25:15 UTC 
(rev 36208)
@@ -56,6 +56,7 @@
                                                                BString& label, 
int32 index, bool markItem);
 
                        void                    _UpdatePreviewPanel();
+                       void                    _UpdateFilenameSelection();
                        BString                 _FindValidFileName(const char* 
name);
                        int32                   _PathIndexInMenu(const BString& 
path) const;
 
@@ -76,6 +77,7 @@
                        BCheckBox*              fShowMouse;
                        BButton*                fBackToSave;
                        BButton*                fTakeScreenshot;
+                       BButton*                fSaveScreenshot;
                        BTextControl*   fNameControl;
                        BMenu*                  fTranslatorMenu;
                        BMenu*                  fOutputPathMenu;


Other related posts:

  • » [haiku-commits] r36208 - haiku/trunk/src/apps/screenshot - superstippi