Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vmj-qt
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
vmj-qt
Commits
635ead6e
Commit
635ead6e
authored
Jul 17, 2014
by
Saul Ibarra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed handling unicode in user's home directory
parent
74784843
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
18 additions
and
12 deletions
+18
-12
datatypes.py
blink/configuration/datatypes.py
+2
-1
settings.py
blink/configuration/settings.py
+2
-2
mainwindow.py
blink/mainwindow.py
+2
-1
preferences.py
blink/preferences.py
+5
-5
resources.py
blink/resources.py
+2
-1
sessions.py
blink/sessions.py
+2
-1
labels.py
blink/widgets/labels.py
+3
-1
No files found.
blink/configuration/datatypes.py
View file @
635ead6e
...
@@ -8,6 +8,7 @@ __all__ = ['ApplicationDataPath', 'DefaultPath', 'SoundFile', 'CustomSoundFile',
...
@@ -8,6 +8,7 @@ __all__ = ['ApplicationDataPath', 'DefaultPath', 'SoundFile', 'CustomSoundFile',
import
os
import
os
import
re
import
re
from
urllib
import
pathname2url
,
url2pathname
from
urllib
import
pathname2url
,
url2pathname
from
urlparse
import
urlparse
from
urlparse
import
urlparse
...
@@ -140,7 +141,7 @@ InvalidToken = AuthorizationToken() # a valid token is never empty
...
@@ -140,7 +141,7 @@ InvalidToken = AuthorizationToken() # a valid token is never empty
class
FileURL
(
unicode
):
class
FileURL
(
unicode
):
def
__new__
(
cls
,
value
):
def
__new__
(
cls
,
value
):
if
not
value
.
startswith
(
'file:'
):
if
not
value
.
startswith
(
'file:'
):
value
=
'file:'
+
pathname2url
(
os
.
path
.
abspath
(
value
))
value
=
'file:'
+
pathname2url
(
os
.
path
.
abspath
(
value
)
.
encode
(
'utf-8'
))
.
decode
(
'utf-8'
)
return
unicode
.
__new__
(
cls
,
value
)
return
unicode
.
__new__
(
cls
,
value
)
...
...
blink/configuration/settings.py
View file @
635ead6e
...
@@ -43,7 +43,7 @@ class ChatSettingsExtension(ChatSettings):
...
@@ -43,7 +43,7 @@ class ChatSettingsExtension(ChatSettings):
class
FileTransferSettingsExtension
(
FileTransferSettings
):
class
FileTransferSettingsExtension
(
FileTransferSettings
):
directory
=
Setting
(
type
=
Path
,
default
=
Path
(
os
.
path
.
expanduser
(
'~/Downloads'
)
))
directory
=
Setting
(
type
=
Path
,
default
=
Path
(
'~/Downloads'
))
class
GoogleContactsSettings
(
SettingsGroup
):
class
GoogleContactsSettings
(
SettingsGroup
):
...
@@ -115,7 +115,7 @@ class ChatWindowSettings(SettingsGroup):
...
@@ -115,7 +115,7 @@ class ChatWindowSettings(SettingsGroup):
class
BlinkScreenSharingSettings
(
SettingsGroup
):
class
BlinkScreenSharingSettings
(
SettingsGroup
):
screenshots_directory
=
Setting
(
type
=
Path
,
default
=
Path
(
os
.
path
.
expanduser
(
'~/Downloads'
)
))
screenshots_directory
=
Setting
(
type
=
Path
,
default
=
Path
(
'~/Downloads'
))
scale
=
Setting
(
type
=
bool
,
default
=
True
)
scale
=
Setting
(
type
=
bool
,
default
=
True
)
open_fullscreen
=
Setting
(
type
=
bool
,
default
=
False
)
open_fullscreen
=
Setting
(
type
=
bool
,
default
=
False
)
open_viewonly
=
Setting
(
type
=
bool
,
default
=
False
)
open_viewonly
=
Setting
(
type
=
bool
,
default
=
False
)
...
...
blink/mainwindow.py
View file @
635ead6e
...
@@ -20,6 +20,7 @@ from zope.interface import implements
...
@@ -20,6 +20,7 @@ from zope.interface import implements
from
sipsimple.account
import
Account
,
AccountManager
,
BonjourAccount
from
sipsimple.account
import
Account
,
AccountManager
,
BonjourAccount
from
sipsimple.application
import
SIPApplication
from
sipsimple.application
import
SIPApplication
from
sipsimple.configuration.datatypes
import
Path
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
blink.aboutpanel
import
AboutPanel
from
blink.aboutpanel
import
AboutPanel
...
@@ -76,7 +77,7 @@ class MainWindow(base_class, ui_class):
...
@@ -76,7 +77,7 @@ class MainWindow(base_class, ui_class):
self
.
default_icon_path
=
Resources
.
get
(
'icons/default-avatar.png'
)
self
.
default_icon_path
=
Resources
.
get
(
'icons/default-avatar.png'
)
self
.
default_icon
=
QIcon
(
self
.
default_icon_path
)
self
.
default_icon
=
QIcon
(
self
.
default_icon_path
)
self
.
last_icon_directory
=
os
.
path
.
expanduser
(
'~'
)
self
.
last_icon_directory
=
Path
(
'~'
)
.
normalized
self
.
set_user_icon
(
icon_manager
.
get
(
'avatar'
))
self
.
set_user_icon
(
icon_manager
.
get
(
'avatar'
))
self
.
active_sessions_label
.
hide
()
self
.
active_sessions_label
.
hide
()
...
...
blink/preferences.py
View file @
635ead6e
...
@@ -20,7 +20,7 @@ from zope.interface import implements
...
@@ -20,7 +20,7 @@ from zope.interface import implements
from
sipsimple.account
import
AccountManager
,
BonjourAccount
from
sipsimple.account
import
AccountManager
,
BonjourAccount
from
sipsimple.application
import
SIPApplication
from
sipsimple.application
import
SIPApplication
from
sipsimple.configuration
import
DefaultValue
from
sipsimple.configuration
import
DefaultValue
from
sipsimple.configuration.datatypes
import
MSRPRelayAddress
,
PortRange
,
SIPProxyAddress
from
sipsimple.configuration.datatypes
import
MSRPRelayAddress
,
P
ath
,
P
ortRange
,
SIPProxyAddress
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
sipsimple.threading
import
run_in_thread
from
sipsimple.threading
import
run_in_thread
...
@@ -1128,7 +1128,7 @@ class PreferencesWindow(base_class, ui_class):
...
@@ -1128,7 +1128,7 @@ class PreferencesWindow(base_class, ui_class):
def
_SH_AccountTLSCertFileBrowseButtonClicked
(
self
,
checked
):
def
_SH_AccountTLSCertFileBrowseButtonClicked
(
self
,
checked
):
# TODO: open the file selection dialog in non-modal mode (and the error messages boxes as well). -Dan
# TODO: open the file selection dialog in non-modal mode (and the error messages boxes as well). -Dan
account
=
self
.
selected_account
account
=
self
.
selected_account
directory
=
os
.
path
.
dirname
(
account
.
tls
.
certificate
.
normalized
)
if
account
.
tls
.
certificate
else
os
.
path
.
expanduser
(
'~'
)
directory
=
os
.
path
.
dirname
(
account
.
tls
.
certificate
.
normalized
)
if
account
.
tls
.
certificate
else
Path
(
'~'
)
.
normalized
cert_path
=
QFileDialog
.
getOpenFileName
(
self
,
u'Select Certificate File'
,
directory
,
u"TLS certificates (*.crt *.pem)"
)
or
None
cert_path
=
QFileDialog
.
getOpenFileName
(
self
,
u'Select Certificate File'
,
directory
,
u"TLS certificates (*.crt *.pem)"
)
or
None
if
cert_path
is
not
None
:
if
cert_path
is
not
None
:
cert_path
=
os
.
path
.
normpath
(
cert_path
)
cert_path
=
os
.
path
.
normpath
(
cert_path
)
...
@@ -1306,7 +1306,7 @@ class PreferencesWindow(base_class, ui_class):
...
@@ -1306,7 +1306,7 @@ class PreferencesWindow(base_class, ui_class):
def
_SH_ScreenshotsDirectoryBrowseButtonClicked
(
self
,
checked
):
def
_SH_ScreenshotsDirectoryBrowseButtonClicked
(
self
,
checked
):
# TODO: open the file selection dialog in non-modal mode. Same for the one for TLS CA list and the IconSelector from contacts. -Dan
# TODO: open the file selection dialog in non-modal mode. Same for the one for TLS CA list and the IconSelector from contacts. -Dan
settings
=
BlinkSettings
()
settings
=
BlinkSettings
()
directory
=
settings
.
screen_sharing
.
screenshots_directory
or
os
.
path
.
expanduser
(
'~'
)
directory
=
settings
.
screen_sharing
.
screenshots_directory
.
normalized
directory
=
QFileDialog
.
getExistingDirectory
(
self
,
u'Select Screenshots Directory'
,
directory
)
or
None
directory
=
QFileDialog
.
getExistingDirectory
(
self
,
u'Select Screenshots Directory'
,
directory
)
or
None
if
directory
is
not
None
:
if
directory
is
not
None
:
directory
=
os
.
path
.
normpath
(
directory
)
directory
=
os
.
path
.
normpath
(
directory
)
...
@@ -1334,7 +1334,7 @@ class PreferencesWindow(base_class, ui_class):
...
@@ -1334,7 +1334,7 @@ class PreferencesWindow(base_class, ui_class):
def
_SH_DownloadDirectoryBrowseButtonClicked
(
self
,
checked
):
def
_SH_DownloadDirectoryBrowseButtonClicked
(
self
,
checked
):
# TODO: open the file selection dialog in non-modal mode. Same for the one for TLS CA list and the IconSelector from contacts. -Dan
# TODO: open the file selection dialog in non-modal mode. Same for the one for TLS CA list and the IconSelector from contacts. -Dan
settings
=
SIPSimpleSettings
()
settings
=
SIPSimpleSettings
()
directory
=
settings
.
file_transfer
.
directory
or
os
.
path
.
expanduser
(
'~'
)
directory
=
settings
.
file_transfer
.
directory
.
normalized
directory
=
QFileDialog
.
getExistingDirectory
(
self
,
u'Select Download Directory'
,
directory
)
or
None
directory
=
QFileDialog
.
getExistingDirectory
(
self
,
u'Select Download Directory'
,
directory
)
or
None
if
directory
is
not
None
:
if
directory
is
not
None
:
directory
=
os
.
path
.
normpath
(
directory
)
directory
=
os
.
path
.
normpath
(
directory
)
...
@@ -1465,7 +1465,7 @@ class PreferencesWindow(base_class, ui_class):
...
@@ -1465,7 +1465,7 @@ class PreferencesWindow(base_class, ui_class):
def
_SH_TLSCAFileBrowseButtonClicked
(
self
):
def
_SH_TLSCAFileBrowseButtonClicked
(
self
):
# TODO: open the file selection dialog in non-modal mode (and the error messages boxes as well). -Dan
# TODO: open the file selection dialog in non-modal mode (and the error messages boxes as well). -Dan
settings
=
SIPSimpleSettings
()
settings
=
SIPSimpleSettings
()
directory
=
os
.
path
.
dirname
(
settings
.
tls
.
ca_list
.
normalized
)
if
settings
.
tls
.
ca_list
else
os
.
path
.
expanduser
(
'~'
)
directory
=
os
.
path
.
dirname
(
settings
.
tls
.
ca_list
.
normalized
)
if
settings
.
tls
.
ca_list
else
Path
(
'~'
)
.
normalized
ca_path
=
QFileDialog
.
getOpenFileName
(
self
,
u'Select Certificate Authority File'
,
directory
,
u"TLS certificates (*.crt *.pem)"
)
or
None
ca_path
=
QFileDialog
.
getOpenFileName
(
self
,
u'Select Certificate Authority File'
,
directory
,
u"TLS certificates (*.crt *.pem)"
)
or
None
if
ca_path
is
not
None
:
if
ca_path
is
not
None
:
ca_path
=
os
.
path
.
normpath
(
ca_path
)
ca_path
=
os
.
path
.
normpath
(
ca_path
)
...
...
blink/resources.py
View file @
635ead6e
...
@@ -18,6 +18,7 @@ from application.python.types import Singleton
...
@@ -18,6 +18,7 @@ from application.python.types import Singleton
from
application.system
import
makedirs
,
unlink
from
application.system
import
makedirs
,
unlink
from
threading
import
Event
from
threading
import
Event
from
sipsimple.configuration.datatypes
import
Path
from
blink.util
import
run_in_gui_thread
from
blink.util
import
run_in_gui_thread
...
@@ -43,7 +44,7 @@ class ApplicationData(object):
...
@@ -43,7 +44,7 @@ class ApplicationData(object):
elif
platform
.
system
()
==
'Windows'
:
elif
platform
.
system
()
==
'Windows'
:
cls
.
_cached_directory
=
os
.
path
.
join
(
os
.
environ
[
'APPDATA'
],
'Blink'
)
.
decode
(
sys
.
getfilesystemencoding
())
cls
.
_cached_directory
=
os
.
path
.
join
(
os
.
environ
[
'APPDATA'
],
'Blink'
)
.
decode
(
sys
.
getfilesystemencoding
())
else
:
else
:
cls
.
_cached_directory
=
os
.
path
.
expanduser
(
'~/.blink'
)
.
decode
(
sys
.
getfilesystemencoding
())
cls
.
_cached_directory
=
Path
(
'~/.blink'
)
.
normalized
return
DirectoryContextManager
(
cls
.
_cached_directory
)
return
DirectoryContextManager
(
cls
.
_cached_directory
)
@
classmethod
@
classmethod
...
...
blink/sessions.py
View file @
635ead6e
...
@@ -34,6 +34,7 @@ from zope.interface import implements
...
@@ -34,6 +34,7 @@ from zope.interface import implements
from
sipsimple.account
import
Account
,
AccountManager
,
BonjourAccount
from
sipsimple.account
import
Account
,
AccountManager
,
BonjourAccount
from
sipsimple.application
import
SIPApplication
from
sipsimple.application
import
SIPApplication
from
sipsimple.audio
import
AudioConference
,
WavePlayer
from
sipsimple.audio
import
AudioConference
,
WavePlayer
from
sipsimple.configuration.datatypes
import
Path
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
sipsimple.configuration.settings
import
SIPSimpleSettings
from
sipsimple.core
import
SIPCoreError
,
SIPURI
,
ToHeader
from
sipsimple.core
import
SIPCoreError
,
SIPURI
,
ToHeader
from
sipsimple.lookup
import
DNSLookup
from
sipsimple.lookup
import
DNSLookup
...
@@ -5120,7 +5121,7 @@ class SessionManager(object):
...
@@ -5120,7 +5121,7 @@ class SessionManager(object):
self
.
dialog_positions
=
range
(
1
,
100
)
self
.
dialog_positions
=
range
(
1
,
100
)
self
.
file_transfers
=
[]
self
.
file_transfers
=
[]
self
.
last_dialed_uri
=
None
self
.
last_dialed_uri
=
None
self
.
send_file_directory
=
os
.
path
.
expanduser
(
'~'
)
self
.
send_file_directory
=
Path
(
'~'
)
.
normalized
self
.
active_session
=
None
self
.
active_session
=
None
self
.
inbound_ringtone
=
Null
self
.
inbound_ringtone
=
Null
...
...
blink/widgets/labels.py
View file @
635ead6e
...
@@ -11,6 +11,8 @@ from PyQt4.QtGui import QAction, QBrush, QColor, QFileDialog, QFontMetrics, QIco
...
@@ -11,6 +11,8 @@ from PyQt4.QtGui import QAction, QBrush, QColor, QFileDialog, QFontMetrics, QIco
from
application.python.types
import
MarkerType
from
application.python.types
import
MarkerType
from
sipsimple.configuration.datatypes
import
Path
from
blink.resources
import
IconManager
from
blink.resources
import
IconManager
from
blink.widgets.color
import
ColorHelperMixin
from
blink.widgets.color
import
ColorHelperMixin
from
blink.widgets.util
import
QtDynamicProperty
,
ContextMenuActions
from
blink.widgets.util
import
QtDynamicProperty
,
ContextMenuActions
...
@@ -32,7 +34,7 @@ class IconSelector(QLabel):
...
@@ -32,7 +34,7 @@ class IconSelector(QLabel):
self
.
contact_icon
=
None
self
.
contact_icon
=
None
self
.
icon
=
None
self
.
icon
=
None
self
.
filename
=
self
.
NotSelected
self
.
filename
=
self
.
NotSelected
self
.
last_icon_directory
=
os
.
path
.
expanduser
(
'~'
)
self
.
last_icon_directory
=
Path
(
'~'
)
.
normalized
def
_get_icon
(
self
):
def
_get_icon
(
self
):
return
self
.
__dict__
[
'icon'
]
return
self
.
__dict__
[
'icon'
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment