daily pastebin goal
76%
SHARE
TWEET

SaveFolders (PureBasic, Linux)

AZJIO Nov 1st, 2018 (edited) 104 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. Declare Create_ini(ini$)
  2. UsePNGImageDecoder()
  3.  
  4.  
  5. If OpenWindow(0, 100, 150, 300, 100, "SaveFolders - SysTray", #PB_Window_SystemMenu | #PB_Window_Invisible)
  6.     ;   CompilerIf #PB_Compiler_OS = #PB_OS_Linux
  7.     ; some Linux and x86 specific code.
  8.     ;   CompilerEndIf
  9.     CatchImage(0, ?folder24_png)
  10.     CatchImage(1, ?folder_png)
  11.     AddSysTrayIcon(0, WindowID(0), ImageID(0))        ; иконка в трее
  12.     SysTrayIconToolTip(0, "SaveFolders")              ; Название проги в подсказке
  13.  
  14.     ArrSize = 100
  15.     Dim ArrPath.s(ArrSize)
  16.  
  17.     Repeat
  18.         CreatePopupImageMenu(0)
  19.         ; получаем путь к ини по имени программы
  20.         ini$ = GetPathPart(ProgramFilename()) + GetFilePart(ProgramFilename(), #PB_FileSystem_NoExtension) + ".ini"
  21.         ;   Debug ini$
  22.         If FileSize(ini$) = -1 And Not Create_ini(ini$)
  23.             MessageRequester("Ошибка", "Не найден файл и не удаётся создать" + #CRLF$ + ini$)
  24.             End
  25.         EndIf
  26.         ; заполнение массива
  27.         OpenPreferences(ini$)
  28.         i=0
  29.         ExaminePreferenceGroups()
  30.         While NextPreferenceGroup()
  31.            
  32.             tmp$ = PreferenceGroupName()
  33.             OpenSubMenu(tmp$, ImageID(1))
  34.             ;       Debug tmp$
  35.            
  36.             ExaminePreferenceKeys()
  37.             While NextPreferenceKey()
  38.                 ;           Param.s = PreferenceKeyValue()
  39.                 ;           If Param<>""
  40.                 ;               Param = " - параметры: "+Param
  41.                 ;           EndIf
  42.                 tmp$ = PreferenceKeyName()
  43.                 If Not FileSize(tmp$) = -2 ; Если путь не является существующим каталогом, то игнор и следующий
  44.                     Continue
  45.                 EndIf
  46.                 i+1
  47.                 If i > ArrSize
  48.                     ArrSize + 100
  49.                     ReDim ArrPath(ArrSize)
  50.                 EndIf
  51.                 MenuItem(i, tmp$, ImageID(1))
  52.                 ArrPath(i) = tmp$
  53.                 ;           Debug tmp$
  54.             Wend
  55.             CloseSubMenu()
  56.  
  57.         Wend
  58.         ClosePreferences()
  59.  
  60.         MenuBar()
  61.         OpenSubMenu("Меню")
  62.         MenuItem(997, "Перезапуск ini")
  63.         MenuItem(998, "Открыть ini")
  64.         MenuItem(999, "Выход")
  65.         CloseSubMenu()
  66.         ;   MenuItem(998, "Инфа")
  67.         ;   Q = 0
  68.         ;   Dim ArrProg.s(3)
  69.         ;   ArrProg(1) = "geany"
  70.         Prog.s = ""
  71.         If FileSize("geany")
  72.             Prog.s = "geany"
  73.         ElseIf FileSize("xed")
  74.             Prog.s = "xed"
  75.         ElseIf FileSize("gedit")
  76.             Prog.s = "gedit"
  77.         EndIf
  78.        
  79.         tmp$ = ""
  80.  
  81.         Repeat
  82.             Event = WaitWindowEvent()
  83.             If Event = #PB_Event_SysTray
  84.                 Select EventType()
  85.                     Case #PB_EventType_LeftClick, #PB_EventType_RightClick
  86.                         DisplayPopupMenu(0, WindowID(0))          ; показ вспывающего меню
  87.                 EndSelect
  88.             EndIf
  89.             If Event = #PB_Event_Menu
  90.                 em = EventMenu()
  91.                 If em >= 1 And em <= i
  92. ;                   If FindString(ArrPath(em) , " ")
  93. ;                       tmp$ = ReplaceString(ArrPath(em) , "/" , Chr(34)+"/"+Chr(34), #PB_String_NoCase)+Chr(34)
  94. ;                       tmp$ = LTrim(tmp$, Chr(34))
  95. ; ;                         tmp$ = RTrim(tmp$, Chr(34))
  96. ;                   Else
  97. ;                       tmp$ = ArrPath(em)
  98. ;                   EndIf
  99. ;                   RunProgram("nemo", ArrPath(em), "")
  100.                     RunProgram("nemo", Chr(34)+ArrPath(em)+Chr(34), "")
  101. ;                   RunProgram("nemo", tmp$, "")
  102. ;                   Debug "nemo " + ArrPath(em)
  103. ;                   Debug tmp$
  104.                 ElseIf em = 997
  105.                     Break
  106.                 ElseIf em = 998
  107.                     If Prog.s <> ""
  108.                         RunProgram(Prog.s, ini$, "")
  109.                     EndIf
  110.                 ElseIf em = 999
  111.                     FreeMenu(0)
  112.                     FreeArray(ArrPath())
  113.                     CloseWindow(0)
  114.                     End
  115.                 EndIf
  116.             EndIf
  117.         ForEver
  118.  
  119.         FreeMenu(0)
  120.         FreeArray(ArrPath())
  121.         ArrSize = 100
  122.         Dim ArrPath(ArrSize)
  123.     ForEver
  124. EndIf
  125.  
  126.  
  127. End
  128.  
  129.  
  130. Procedure Create_ini(ini$)
  131.     Protected hfile, Text$
  132.     Text$ = "[System]" + #CRLF$ + GetHomeDirectory() + #CRLF$ + "/usr/share/backgrounds" + #CRLF$ + "/usr/share/icons" + #CRLF$ + "/usr/share/themes" + #CRLF$ + "/usr/share/applications" + #CRLF$ + #CRLF$ + "[PureBasic]" + #CRLF$ + GetCurrentDirectory() + #CRLF$ + #PB_Compiler_Home
  133.     hfile = OpenFile(#PB_Any, ini$, #PB_UTF8)
  134.     If hfile
  135.         If WriteStringFormat(hfile, #PB_UTF8)
  136.             WriteString(hfile, Text$, #PB_UTF8)
  137.             CloseFile(hfile)
  138.             ProcedureReturn 1
  139.         EndIf
  140.         CloseFile(hfile)
  141.     EndIf
  142.     ProcedureReturn 0
  143. EndProcedure
  144.  
  145.  
  146. DataSection
  147.     folder_png:
  148.     IncludeBinary "images/folder.png"
  149.     folder_pngend:
  150.     folder24_png:
  151.     IncludeBinary "images/folder24.png"
  152.     folder24_pngend:
  153. EndDataSection
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top