index 77a42df99c2b5482a366cf38f9a5d07a2453a63a..0f3672f25a678614eccf7ff3483dae791ad139ff 100644 (file)
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifdef WIN32
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-#ifdef WIN32
-
//General includes
#include <list>
#include <unistd.h>
const int PreviewWidening = 150;
const char PreviewWindowClassName[] = "PreviewWnd";
-const unsigned long MaxPreviewFileSize = 1344; // kB
+const unsigned long MaxPreviewFileSize = 10240; // kB
#define IDC_SHOW_PREVIEW 1000
Inkscape::Extension::DB::InputList extension_list;
Inkscape::Extension::db.get_input_list(extension_list);
- ustring all_inkscape_files_filter, all_image_files_filter;
- Filter all_files, all_inkscape_files, all_image_files;
+ ustring all_inkscape_files_filter, all_image_files_filter, all_vectors_filter, all_bitmaps_filter;
+ Filter all_files, all_inkscape_files, all_image_files, all_vectors, all_bitmaps;
- const gchar *all_files_filter_name = N_("All Files");
- const gchar *all_inkscape_files_filter_name = N_("All Inkscape Files");
- const gchar *all_image_files_filter_name = N_("All Image Files");
+ const gchar *all_files_filter_name = _("All Files");
+ const gchar *all_inkscape_files_filter_name = _("All Inkscape Files");
+ const gchar *all_image_files_filter_name = _("All Images");
+ const gchar *all_vectors_filter_name = _("All Vectors");
+ const gchar *all_bitmaps_filter_name = _("All Bitmaps");
// Calculate the amount of memory required
- int filter_count = 3; // 3 - one for All Files, All Images and All Inkscape Files
+ int filter_count = 5; // 5 - one for each filter type
int filter_length = 1;
for (Inkscape::Extension::DB::InputList::iterator current_item = extension_list.begin();
all_image_files_filter += file_extension_name;
}
+ // I don't know of any other way to define "bitmap" formats other than by listing them
+ // if you change it here, do the same change in filedialogimpl-gtkmm
+ if (
+ strncmp("image/png", imod->get_mimetype(), 9)==0 ||
+ strncmp("image/jpeg", imod->get_mimetype(), 10)==0 ||
+ strncmp("image/gif", imod->get_mimetype(), 9)==0 ||
+ strncmp("image/x-icon", imod->get_mimetype(), 12)==0 ||
+ strncmp("image/x-navi-animation", imod->get_mimetype(), 22)==0 ||
+ strncmp("image/x-cmu-raster", imod->get_mimetype(), 18)==0 ||
+ strncmp("image/x-xpixmap", imod->get_mimetype(), 15)==0 ||
+ strncmp("image/bmp", imod->get_mimetype(), 9)==0 ||
+ strncmp("image/vnd.wap.wbmp", imod->get_mimetype(), 18)==0 ||
+ strncmp("image/tiff", imod->get_mimetype(), 10)==0 ||
+ strncmp("image/x-xbitmap", imod->get_mimetype(), 15)==0 ||
+ strncmp("image/x-tga", imod->get_mimetype(), 11)==0 ||
+ strncmp("image/x-pcx", imod->get_mimetype(), 11)==0
+ ) {
+ if(all_bitmaps_filter.length() > 0)
+ all_bitmaps_filter += ";*";
+ all_bitmaps_filter += file_extension_name;
+ } else {
+ if(all_vectors_filter.length() > 0)
+ all_vectors_filter += ";*";
+ all_vectors_filter += file_extension_name;
+ }
+
filter_count++;
}
int extension_index = 0;
_extension_map = new Inkscape::Extension::Extension*[filter_count];
+ // Filter bitmap files
+ all_bitmaps.name = g_utf8_to_utf16(all_bitmaps_filter_name,
+ -1, NULL, &all_bitmaps.name_length, NULL);
+ all_bitmaps.filter = g_utf8_to_utf16(all_bitmaps_filter.data(),
+ -1, NULL, &all_bitmaps.filter_length, NULL);
+ all_bitmaps.mod = NULL;
+ filter_list.push_front(all_bitmaps);
+
+ // Filter vector files
+ all_vectors.name = g_utf8_to_utf16(all_vectors_filter_name,
+ -1, NULL, &all_vectors.name_length, NULL);
+ all_vectors.filter = g_utf8_to_utf16(all_vectors_filter.data(),
+ -1, NULL, &all_vectors.filter_length, NULL);
+ all_vectors.mod = NULL;
+ filter_list.push_front(all_vectors);
+
// Filter Image Files
all_image_files.name = g_utf8_to_utf16(all_image_files_filter_name,
-1, NULL, &all_image_files.name_length, NULL);
all_inkscape_files.filter_length +
all_inkscape_files.name_length + 3 +
all_image_files.filter_length +
- all_image_files.name_length + 3 + 1;
+ all_image_files.name_length + 3 +
+ all_vectors.filter_length +
+ all_vectors.name_length + 3 +
+ all_bitmaps.filter_length +
+ all_bitmaps.name_length + 3 +
+ 1;
// Add 3 for 2*2 \0s and a *, and 1 for a trailing \0
_filter = new wchar_t[filter_length];
pImpl = (FileOpenDialogImplWin32*)ofn->lCustData;
// Subclass the parent
- pImpl->_base_window_proc = (WNDPROC)GetWindowLongPtr(hParentWnd, GWL_WNDPROC);
- SetWindowLongPtr(hParentWnd, GWL_WNDPROC, (LONG_PTR)file_dialog_subclass_proc);
+ pImpl->_base_window_proc = (WNDPROC)GetWindowLongPtr(hParentWnd, GWLP_WNDPROC);
+ SetWindowLongPtr(hParentWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(file_dialog_subclass_proc));
// Add a button to the toolbar
pImpl->_toolbar_wnd = FindWindowEx(hParentWnd, NULL, "ToolbarWindow32", NULL);
pImpl->_show_preview_button_bitmap = LoadBitmap(
hInstance, MAKEINTRESOURCE(IDC_SHOW_PREVIEW));
- TBADDBITMAP tbAddBitmap = {NULL, (UINT)pImpl->_show_preview_button_bitmap};
+ TBADDBITMAP tbAddBitmap = {NULL, reinterpret_cast<UINT_PTR>(pImpl->_show_preview_button_bitmap)};
const int iBitmapIndex = SendMessage(pImpl->_toolbar_wnd,
TB_ADDBITMAP, 1, (LPARAM)&tbAddBitmap);
@@ -560,9 +608,12 @@ LRESULT CALLBACK FileOpenDialogImplWin32::preview_wnd_proc(HWND hwnd, UINT uMsg,
if(pImpl->_path_string[0] == 0)
{
+ WCHAR* noFileText=(WCHAR*)g_utf8_to_utf16(_("No file selected"),
+ -1, NULL, NULL, NULL);
FillRect(dc, &rcClient, (HBRUSH)(COLOR_3DFACE + 1));
- DrawText(dc, _("No file selected"), -1, &rcClient,
+ DrawTextW(dc, noFileText, -1, &rcClient,
DT_CENTER | DT_VCENTER | DT_NOPREFIX);
+ g_free(noFileText);
}
else if(pImpl->_preview_bitmap != NULL)
{
NRRectL bbox = {0, 0, scaledSvgWidth, scaledSvgHeight};
// write object bbox to area
- boost::optional<Geom::Rect> maybeArea(area);
+ Geom::OptRect maybeArea(area);
sp_document_ensure_up_to_date (svgDoc);
sp_item_invoke_bbox((SPItem *) svgDoc->root, maybeArea,
- sp_item_i2r_affine((SPItem *)(svgDoc->root)), TRUE);
+ sp_item_i2d_affine((SPItem *)(svgDoc->root)), TRUE);
NRArena *const arena = NRArena::create();
if(_preview_bitmap_image) // Is the image a pixbuf?
{
// Set the transformation
- const Matrix matrix = {
+ const Cairo::Matrix matrix(
scaleFactor, 0,
0, scaleFactor,
- svgX, svgY };
+ svgX, svgY);
context->set_matrix (matrix);
// Render the image
FileDialogType fileTypes,
const char *title,
const Glib::ustring &/*default_key*/,
- const char *docTitle) :
- FileDialogBaseWin32(parent, dir, title, fileTypes, "dialogs.save_as"),
+ const char *docTitle,
+ const Inkscape::Extension::FileSaveMethod save_method) :
+ FileDialogBaseWin32(parent, dir, title, fileTypes,
+ (save_method == Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY) ? "dialogs.save_copy" : "dialogs.save_as"),
_title_label(NULL),
_title_edit(NULL)
{
return 0;
}
-}
-}
-}
+} } } // namespace Dialog, UI, Inkscape
-#endif
+#endif // ifdef WIN32
/*
Local Variables: