Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kocik <kocikdav@gmail.com>2019-11-27 15:30:45 +0300
committerDavid Kocik <kocikdav@gmail.com>2019-12-13 17:07:35 +0300
commit1ec7fc23e24b7d981b513d52a039201f2cac506f (patch)
treede768c451576c4d5cf611221cc209c52796f39fa /src/slic3r/GUI/RemovableDriveManager.cpp
parent72f1adbb443a37cd2ffc9f005e63549f032085c0 (diff)
check if last path is on rem drive
Diffstat (limited to 'src/slic3r/GUI/RemovableDriveManager.cpp')
-rw-r--r--src/slic3r/GUI/RemovableDriveManager.cpp230
1 files changed, 0 insertions, 230 deletions
diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp
index 30f6c9b29..02681b7da 100644
--- a/src/slic3r/GUI/RemovableDriveManager.cpp
+++ b/src/slic3r/GUI/RemovableDriveManager.cpp
@@ -1,6 +1,4 @@
#include "RemovableDriveManager.hpp"
-<<<<<<< HEAD
-<<<<<<< HEAD
#include <iostream>
#include "boost/nowide/convert.hpp"
@@ -68,84 +66,10 @@ void RemovableDriveManager::search_for_drives()
{
path += "\\";
m_current_drives.push_back(DriveData(boost::nowide::narrow(volume_name), path));
-=======
-
-
-
-=======
->>>>>>> refactoring
-#include <iostream>
-#include <stdio.h>
-#include "boost/nowide/convert.hpp"
-
-#if _WIN32
-#include <windows.h>
-#include <tchar.h>
-#include <winioctl.h>
-DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,
- 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
-#else
-//linux includes
-#include <errno.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <glob.h>
-#include <libgen.h>
-#endif
-
-namespace Slic3r {
-namespace GUI {
-
-std::vector<DriveData> RemovableDriveManager::m_current_drives;
-
-#if _WIN32
-void RemovableDriveManager::search_for_drives()
-{
- m_current_drives.clear();
- m_current_drives.reserve(26);
- DWORD drivesMask = GetLogicalDrives();
- for (size_t i = 0; i < 26; i++)
- {
- if(drivesMask & (1 << i))
- {
- std::string path (1,(char)('A' + i));
- path+=":";
- UINT driveType = GetDriveTypeA(path.c_str());
- //std::cout << "found drive" << (char)('A' + i) << ": type:" <<driveType << "\n";
- if (driveType == DRIVE_REMOVABLE)
- {
- // get name of drive
- std::wstring wpath = std::wstring(path.begin(), path.end());
- std::wstring volumeName;
- volumeName.resize(1024);
- std::wstring fileSystemName;
- fileSystemName.resize(1024);
- LPWSTR lpVolumeNameBuffer = new wchar_t;
- BOOL error = GetVolumeInformationW(wpath.c_str(), &volumeName[0], sizeof(volumeName), NULL, NULL, NULL, &fileSystemName[0], sizeof(fileSystemName));
- if(error != 0)
- {
- if (volumeName == L"")
- {
- volumeName = L"REMOVABLE DRIVE";
- }
- if (fileSystemName != L"")
- {
- ULARGE_INTEGER freeSpace;
- GetDiskFreeSpaceExA(path.c_str(), &freeSpace, NULL, NULL);
- //std::cout << std::string(volumeName.begin(), volumeName.end()) << " " << std::string(fileSystemName.begin(), fileSystemName.end()) << " " << freeSpace.QuadPart << "\n";
- if (freeSpace.QuadPart > 0)
- {
-<<<<<<< HEAD
- newDrives.push_back(DriveData(volumeName, path));
->>>>>>> removable drive manager - Windows part
-=======
- m_current_drives.push_back(DriveData(boost::nowide::narrow(volumeName), path));
->>>>>>> refactoring
}
}
}
}
-<<<<<<< HEAD
}
}
}
@@ -594,157 +518,3 @@ void RemovableDriveManager::reset_last_save_path()
m_last_save_path = "";
}
}}//namespace Slicer::Gui
-=======
- else if(driveType == 3)//disks and usb drives
- {
- }
- }
- }
-
-}
-void RemovableDriveManager::eject_drive(const std::string &path)
-{
-
- //if (!update() || !is_drive_mounted(path))
- if(m_current_drives.empty())
- return;
- for (auto it = m_current_drives.begin(); it != m_current_drives.end(); ++it)
- {
- if ((*it).path == path)
- {
- std::string mpath = "\\\\.\\" + path;
- HANDLE handle = CreateFileA(mpath.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
- if (handle == INVALID_HANDLE_VALUE)
- {
- std::cerr << "Ejecting " << mpath << " failed " << GetLastError() << " \n";
- return;
- }
- DWORD deviceControlRetVal(0);
- BOOL error = DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, nullptr, 0, nullptr, 0, &deviceControlRetVal, nullptr);
- CloseHandle(handle);
- if (error != 0)
- std::cout << "Ejected " << mpath << "\n";
- else
- std::cerr << "Ejecting " << mpath << " failed " << deviceControlRetVal << " " << GetLastError() << " \n";
-
-
- m_current_drives.erase(it);
- break;
- }
- }
-}
-#else
-void RemovableDriveManager::search_for_drives()
-{
- struct stat buf;
- std::string path(std::getenv("USER"));
- std::string pp(path);
-
- m_current_drives.clear();
- m_current_Drives.reserve(26);
-
- //search /media/* folder
- stat("/media/",&buf);
- std::cout << "/media ID: " <<buf.st_dev << "\n";
- search_path("/media/*", buf.st_dev);
-
- //search /media/USERNAME/* folder
- pp = "/media/"+pp;
- path = "/media/" + path + "/*";
-
- stat(pp.c_str() ,&buf);
- std::cout << pp <<" ID: " <<buf.st_dev << "\n";
- searchPath(path, buf.st_dev);
-
- //search /run/media/USERNAME/* folder
- path = "/run" + path;
- pp = "/run"+pp;
- stat(pp.c_str() ,&buf);
- std::cout << pp <<" ID: " <<buf.st_dev << "\n";
- searchPath(path, buf.st_dev);
-
- std::cout << "found drives:" <<newDrives.size() << "\n";
-}
-void RemovableDriveManager::search_path(const std::string &path,const dev_t &parentDevID)
-{
- glob_t globbuf;
- globbuf.gl_offs = 2;
- std::cout<<"searching "<<path<<"\n";
- int error = glob(path.c_str(), GLOB_TILDE, NULL, &globbuf);
- if(error)
- {
- std::cerr<<"glob error "<< error<< "\n";
- }
- for(size_t i = 0; i < globbuf.gl_pathc; i++)
- {
- std::cout<<globbuf.gl_pathv[i]<<"\n";
- //TODO check if mounted
- std::string name = basename(globbuf.gl_pathv[i]);
- std::cout<<name<<"\n";
- struct stat buf;
- stat(globbuf.gl_pathv[i],&buf);
- std::cout << buf.st_dev << "\n";
- if(buf.st_dev != parentDevID)// not same file system
- {
- m_current_drives.push_back(DriveData(name,globbuf.gl_pathv[i]));
- }
- }
- globfree(&globbuf);
-}
-void RemovableDriveManager::eject_drive(const std::string &path)
-{
- if (m_current_drives.empty())
- return;
-
- for (auto it = m_current_drives.begin(); it != m_current_drives.end(); ++it)
- {
- if((*it).path == path)
- {
- std::cout<<"Ejecting "<<(*it).name<<" from "<< (*it).path<<"\n";
- int error = umount2(path.c_str(),MNT_DETACH);
- if(error)
- {
- int errsv = errno;
- std::cerr<<"Ejecting failed Error "<< errsv<<"\n";
- }
- m_current_drives.erase(it);
- break;
- }
-
- }
-
-}
-#endif
-bool RemovableDriveManager::update()
-{
- search_for_drives();
- return !m_current_drives.empty();
-}
-
-
-bool RemovableDriveManager::is_drive_mounted(const std::string &path)
-{
- for (auto it = m_current_drives.begin(); it != m_current_drives.end(); ++it)
- {
- if ((*it).path == path)
- {
- return true;
- }
- }
- return false;
-}
-
-std::string RemovableDriveManager::get_last_drive_path()
-{
- if (!m_current_drives.empty())
- {
- return m_current_drives.back().path;
- }
- return "";
-}
-std::vector<DriveData> RemovableDriveManager::get_all_drives()
-{
- return m_current_drives;
-}
-}}
->>>>>>> removable drive manager - Windows part